JAVA学习笔记-String类

Java字符串就是Unicode字符序列,例如字符串"Java"就是4个Unicode字符J,a,v,a组成的。

Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例。

String str = new String("abcd");

String str2 = new String("abcd");

System.out.println(str.charAt(2));//charAt的含义是字符串中第2位的字符,所以输出结果为c;

System.out.println(str2.equals(str));//equals的含义为比较2个字符串是否相等,在源码里面,如果2个String变量指向的是同一个对象,那么直接返回ture;

System.out.println(str2==str);//结果为false,他们的内容虽然一样,但是都是new出来的一个实例,两者的地址不一致。

String str3 = "def";

String str4 = "def";

System.out.println(str3.equals(str4));//结果为ture,因为两者内容一致。但是在jdk源码中,检查机制是和上面的有些许区别的。具体可见jdk的equals源码。

System.out.println(str3==str4);//结果为ture,因为两者都指向了代码区的 "def",共用一个常量池"def",所以两者的地址是一致的。

System.out.println(str3.indexOf('e'));  //找出'e'的索引位置,结果为1(因第一位'd'为0);如果不在有效范围内,结果会为-1;

String s = str3.substring(0);//从第0位开始截取到最后的字符串,返回一个新的字符串。

System.out.println(s);

String str5 = str3.replace('e','*');//替换字符串中的所有'e'字符为'*';

String str6 = "abcde,rrtt,cccee";

String[] strArray = str6.split(",");  //split切割字符串,返回的是一个String数组。

  for(int i=0;i<strArray.length;i++){   //这里的strArray.length的值为3,因为","把str6切成了3份

    System.out.println(strArray[i]);   //循环遍历strArray数组里面的字符串

  }

String str7 = "  aa  bb  ";

String str77 = str7.trim();//trim()为除去首尾空格并返回一个新的字符串;

System.out.ptintln(str77.length()); //长度为6

System.out.println("Abc".equalsIgnoreCase("abc"));//忽略大小写,比较2个字符串是否相等,显然结果为ture;

System.out.println("Abcbd".indexOf('b'));//从左向右的顺序开始检查字符'b',如果有则显示索引位置为1;

System.out.println("Abcbd".laseIndexOf('b'));//从右向左的顺序开始检查字符'b',如果有则显示索引位置为3;

System.out.println("Abcbd".startsWith("Ab"));//检查是不是以"Ab"开头。可见结果为真

System.out.println("Abcbd".endsWith("bd"));//检查是不是以"bd"结尾。可见结果为真

System.out.println("Abcbd".toLowerCase());//全部转换为小写字母;

System.out.println("Abcbd".toUpperCase());//全部转换为大写字母;

 

String gh = "a";   //截止到这句话,创建了一个"a",如果为String gh = new String("a"); 会被创建2个值:value:xxx 和 "a";

for(int i=0;i<10;i++){

  gh += i;

}

System.out.ptintln(gh);   //这里因String中的value值一旦被创建不可变,在这里遍历之后,会被创建11个对象。造成了内存的浪费,如果这里遍历n次(n的数目足够多),可想而知结果。

解决方法,可以参照StringBuilder和StringBuffer来解决。

posted @ 2016-11-11 14:16  iamAnonymous  阅读(942)  评论(0编辑  收藏  举报