String类型

  • String数据类型属于引用数据类型,而前面讲的整型、浮点型、字符型、布尔型属于基本数据类型

  • String 类型通过双引号声明””“

  • Stirng 字符串通过 + 号拼接

  • 如果int,double和String进行加操作,那么int和double会转为String,进行拼接操作

    1. String a = "abc";
    2. int b =100;
    3. double c = 23.0;
    4. a = a + b+c;
    5. //a= "abc10023"
  • “\n”表示换行, “\t”表示制表符, “”

String 对象

  • String常量为匿名对象,但是他无需由用户创建,是由系统自动创建的
  • String 类型比较通过equals(),
  • ==和equals的区别,==是数值比较,在String类型中为比较对象的内存地址数值,equals是String类提供的字符串内容比较的方法。
  • 直接赋值形式创建字符串对象

    1. String stra = "hello";
    2. String strb = "hello";
    3. String strc = "hello";
    4. System.out.println(stra == strb);//结果true
    5. System.out.println(stra == strc);//结果true
    6. System.out.println(strb == strc);//结果true

    共享设计模式,在JVM的底层,存在要给对象池(不一定之保存String对象),当通过直接赋值的形式创建一个String对象时,会将此字符串对象的匿名对象存入对象池,当下次再次通过直接赋值的形式创建字符串对象,同时字符串的内容和对象池中存入的匿名对象的内容一致时,那么将不会重新开辟堆内存空间,而是继续使用对象池中的对象

  • 通过new关键字创建字符串对象

    通过new关键字创建的方式,会在堆内存中开辟两块内存空间,其中一块内存空间没有使用,成为垃圾,同时也无法出入对象池,但是可以通过,intern()方法手工入池。

    1. String stra = new String("hello");
    2. String strb = "hello";
    3. System.out.println(stra == strb);//结果false
总结
  • 直接赋值方式,只用于一块堆内存空间,且会保存到对象池,当下次再次创建相同内容的对象时,不会开辟新的堆内存空间。

  • new方式赋值,会开辟两块堆内存空间,且其中一块时垃圾,同时它不会自动保存到内存池。但是可以通过intern()方法手工入池。

字符串的一些函数

方法 类型 作用
String(char[] value) String构造 将char数组转化为字符串
String(char[] value, int offset, int count) String构造 将char数组安装开始位置和取得长度转化为字符串
charAt(int index) String方法 返回对应位置的字符,其中字符串index从0开始
toCharArray() String方法 字符串转化为char数组
getBytes() String方法 将字符串转化为byte数组
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException String方法 将字符串转化为byte数组,同时进行编码转换
String(byte[] bytes, int offset, int length) String构造 将byte数组对应的取值范围转化为字符串
public boolean contains(CharSequence s) String方法 判断是否包含指定字符,JDK1.5以后的方法
public int indexOf(String str) String方法 返回字符串首先出现的位置,找不到返回-1
public int indexOf(String str, int fromIndex) String方法 返回从指定位置开始查找到字符串首先出现的位置,找不到返回-1
public int lastIndexOf(String str) String方法 返回字符串最后出现的位置,找不到返回-1
public int lastIndexOf(String str, int fromIndex) String方法 返回从指定位置开始查找到字符串最后出现的位置,找不到返回-1
public boolean startsWith(String prefix) String方法 判断字符串是不是以给定的字符串开始,返回true表示是,false表示不是
public boolean endsWith(String suffix) String方法 判断字符串是不是以给定的字符串结尾,返回true表示是,false表示不是
public String replaceAll(String regex, String replacement) String方法 用新的字符串,替换所有老的字符串
public String replaceFirst(String regex, String replacement) String方法 用新的字符串,替换第一个出现的老的字符串
public String substring(int beginIndex) String方法 截取字符串从给的的索引开始
public String substring(int beginIndex, int endIndex) String方法 截取字符串从给的的索引开始,到给的索引结束
public String[] split(String regex) String 方法 将字符串,通过给定的字符拆分成字符串数组
public String[] split(String regex, int limit) String 方法 将字符串,通过给定的字符拆分成字符串数组,同时 limit可以限制拆分个数,比如设置为2,那么如果可拆分的次数大于2,则只拆分2次,如果小于2,则直接为原来的次数
方法 类型 作用
public boolean isEmpty() String 方法 当字符串长度为0时返回true,其它返回false
public int length() String 方法 返回字符串长度
public String trim() String 方法 去掉字符串两边的空格,中间的不动
public String toLowerCase() String 方法 将字符串转为小写,只对字母,其他字符不转
public String toUpperCase() String 方法 将字符串转为大写,只对字母,其他字符不转

对象比较

  • 对象比较方法一般是一个对象的方法

  • 要注意对null对象的判断

  • 要注意对同意给对象的相等判断