黑马程序员技术交流社区

标题: 【Java基础交流】之【一张贴搞定String!!】 [打印本页]

作者: 传奇查    时间: 2015-11-18 18:20
标题: 【Java基础交流】之【一张贴搞定String!!】
感觉对你有用就给个鼓励吧~~
String类特点:
  1. package cn.fu._01string;
  2. /**
  3. * String StringBuffer StringBuilder
  4. * String类的特点:
  5. * 字符串对象一旦被初始化就不会改变.
  6. */

  7. public class StringDemo1 {
  8.         public static void main(String[] args) {
  9.                 String s = "abc";
  10.                 String s1 = "abc";
  11.                 String s2 = "abc";
  12.                 String s3 = new String("abc");
  13.                 s = "nba";
  14.                 System.out.println("s =  "+s);
  15.                 //"abc"字符串对象并没有改变,只是引用变量s指向了新创建的字符串对象"nba".
  16.                 System.out.println(s1==s2);
  17.                 //字符串创建的时候,有一个字符串常量池,s1创建后,"abc"放入其中
  18.                 //s2创建时,只是把s1的"abc"引用赋给了s2,故s1==s2.
  19.                 System.out.println(s1==s3);
  20.                 //s1是一个对象,s2是一个对象,不是同一个对象地址不同,所以false;
  21.                 System.out.println(s1.equals(s3));
  22.                 //String类复写了Object中的equals方法,建立了Sring类最积极的判断字符串对象是否相同的依据,
  23.                 //只比较字符串内容,不比较地址.

  24.         }
  25. }
复制代码
运行结果:
s =  nba
true
false
true


String类的构造函数:
  1. package cn.fu._01string;
  2. /**
  3. * String类的构造函数
  4. * 构造函数:String(bytes[] bytes)
  5. * 构造函数:String(char[] value)
  6. * 构造函数:String(char[] value,int offset,int count)
  7. */

  8. public class StringDemo2 {

  9.         public static void main(String[] args) {
  10.                 StringDemo2();
  11.         }
  12.         public static void StringDemo2(){
  13.                 String s = new String();//等效于String s = "";不等效于String s = null;
  14.                 byte[] arr = {65,66,67,68};
  15.                 String s1 = new String(arr);
  16.                 System.out.println("s1 = " + s1);//s1 = ABCD
  17.                 char[] ch = {'w','a','p','q','x'};
  18.                 String s2 = new String(ch);
  19.                 String s3 = new String(ch,1,3);
  20.                 System.out.println("s2 = "+s2);//s2 = wapqx
  21.                 System.out.println("s3 = "+s3);//s3 = apq
  22.         }
  23. }
复制代码
运行结果:
s1 = ABCD
s2 = wapqx
s3 = apq

String类的常用方法:
  1. package cn.fu._01string;
  2. /*
  3. *String类部分方法
  4. *1.获取
  5. *获取字符串中字符的长度(个数)
  6. *int length();
  7. *
  8. *根据位置获取字符
  9. *char charAt(int index);
  10. *
  11. *根据字符获取字符串中的位置
  12. *int indexOf(int ch);
  13. *
  14. *从指定位置开始查找ch第一出现的位置
  15. *int indexOf(int ch,int formIndex);
  16. *int indexOf(String str);
  17. *int indexof(String str,int formIndex);
  18. *
  19. *根据字符串获取在字符串中倒数第一次出现的位置
  20. *int lastIndexOf(int ch);
  21. *int lastIndexOf(int ch,int fromIndex);
  22. *int lastIndexOf(String str);
  23. *int lastIndexOf(String str,int forIndex)
  24. *
  25. *获取字符串中的一部分字符串,也叫字串
  26. *String substring(int beginIndex);
  27. *String substring(int beginIndex,int endIndex);
  28. */
  29. public class StringDemo3 {
  30.         public static void main(String[] args) {
  31.                 method();
  32.         }
  33.         public static void method(){
  34.                 String s = new String("alskjdlajsdlfjsdgj");
  35.                                                         // 012345678901234567
  36.                 System.out.println(s.length());//18
  37.                 char c = s.charAt(2);
  38.                 System.out.println(c);//s
  39.                 System.out.println(s.indexOf('k'));//3
  40.                 System.out.println(s.indexOf('j',5));//8
  41.                 System.out.println(s.indexOf("js"));//8
  42.                 System.out.println(s.indexOf("js",9));//13
  43.                 System.out.println(s.lastIndexOf('s'));//14
  44.                 System.out.println(s.lastIndexOf("dl"));//10
  45.                 System.out.println(s.lastIndexOf("dl", 9));//5
  46.                 String sub1 = s.substring(5);
  47.                 String sub2 = s.substring(1,3);
  48.                 System.out.println(sub1);//dlajsdlfjsdgj
  49.                 System.out.println(sub2);//ls
  50.                 //(1,3)包头不包尾
  51.                 //如果查找不到,返回-1
  52.         }
  53. }
复制代码
运行结果:
18
s
3
8
8
13
14
10
5
dlajsdlfjsdgj
ls

String类的转换:
  1. package cn.fu._01string;
  2. /**
  3. * 2.转换
  4. * 将字符串变成字符数组(字符串切割)
  5. * String[] Split(String regex);涉及正则表达式.
  6. *
  7. * 将字符串变成字符数组
  8. * char[] toCharArray();
  9. *
  10. * 将字符串变成字节数组
  11. * byte[] getBytes();
  12. *
  13. * 将字符串字母转变成大小写
  14. * String toUpperCase();大写
  15. * String toLowerCase();小写
  16. *
  17. * 将字符串中的内容进行替换
  18. * String replace(char oldCh,char newCh);
  19. * String replace(String s1,String s2);
  20. *
  21. * 去除字符串两端的空格
  22. * String trim();
  23. *
  24. * 将字符串经行连接
  25. * String concat(String str);
  26. *
  27. * 其他类型数据转换成字符串
  28. */

  29. public class StringDemo4 {

  30.         public static void main(String[] args) {
  31.                 method();
  32.         }
  33.         public static void method(){
  34.                 String s = "张三,李四,王五";
  35.                 String[] arr = s.split(",");
  36.                 for (int i = 0; i < arr.length; i++) {
  37.                         System.out.println(arr[i]);
  38.                 }
  39.                 System.out.println("----------------------------");
  40.                 String s1 = "张三.李四.王五";
  41.                 String[] arr1 = s1.split("\\.");
  42.                 //P.S. 点在正则表达式中是特殊符号,需要转义
  43.                 for (int j = 0; j < arr1.length; j++) {
  44.                         System.out.println(arr1[j]);
  45.                 }
  46.                 System.out.println("----------------------------");
  47.                 String s2 = "abcABC123";
  48.                 char[] arr2 = s2.toCharArray();
  49.                 for (int i = 0; i < arr2.length; i++) {
  50.                         System.out.println(arr2[i]);
  51.                 }
  52.                 System.out.println("----------------------------");
  53.                 byte[] arr3 = s2.getBytes();
  54.                 for (int i = 0; i < arr3.length; i++) {
  55.                         System.out.println(arr3[i]);
  56.                 }
  57.                 System.out.println("----------------------------");
  58.                 String s4 = s2.toUpperCase();//转大写
  59.                 String s5 = s2.toLowerCase();//转小写
  60.                 System.out.println(s4);
  61.                 System.out.println(s5);
  62.                 System.out.println("----------------------------");
  63.                 String s6 = "abcABCabcABC";
  64.                 String s7 = s6.replace('a', 'd');//所有的'a'都会被替换
  65.                 String s8 = s6.replace("abc", "def");
  66.                 String s9 = s6.replace('2', '3');
  67.                 System.out.println(s7);
  68.                 System.out.println(s8);
  69.                 System.out.println(s9);//找不到要替换的字符串,返回原字符串
  70.                 System.out.println(s9==s6);//找不到时,s9引用指向s6
  71.                 System.out.println("----------------------------");
  72.                 String s10 = "   lkjsladkjla  sdasd   ";
  73.                 System.out.println(s10.trim());
  74.                 System.out.println("----------------------------");
  75.                 System.out.println(s6.concat("game"));//连接
  76.                 //P.S. concat()效果与"+"连接符一致
  77.                 System.out.println("----------------------------");
  78.                 System.out.println(String.valueOf(5)+1);//将基本数据类型转换为String
  79.                 System.out.println(""+4+1);
  80.                
  81.         }
  82. }
复制代码
输出结果:
张三
李四
王五
----------------------------
张三
李四
王五
----------------------------
a
b
c
A
B
C
1
2
3
----------------------------
97
98
99
65
66
67
49
50
51
----------------------------
ABCABC123
abcabc123
----------------------------
dbcABCdbcABC
defABCdefABC
abcABCabcABC
true
----------------------------
lkjsladkjla  sdasd
----------------------------
abcABCabcABCgame
----------------------------
51
41



String类的判断方法:
  1. package cn.fu._01string;
  2. /**
  3. * 3.判断
  4. * 判断两个字符串内容是否相同
  5. * boolean equals(Object obj);
  6. * boolean equalsIgnoreCase(String str);忽略大小写比较字符串内容.
  7. *
  8. * 判断字符串中是否保存指定字符串
  9. * booleac contains(String str);
  10. *
  11. * 判断字符串是否以指定字符串开头,是否以指定字符串结尾
  12. * boolean startWith(String str);
  13. * boolean endsWith(String str);
  14. *
  15. * 4.比较
  16. * Int compareTo(String str);
  17. * 如果参数字符串等于此字符,则返回0;
  18. * 如果此字符串按照字典顺序小鱼字符串参数,则返回一个小于0的值;
  19. * 如果此字符串按照字典顺序大于字符串参数,则返回一个大于0的值;
  20. *
  21. * 5.返回字符串对象的规范化表达形式
  22. * String intern();
  23. * 当调用intern方法时,如果池已经包含一个等于此String对象的字符串(用
  24. * equals(Object obj)方法确定),则返回池中的字符串,否则,将此Stirng对象
  25. * 添加到池中,并返回此String对象的引用.
  26. */

  27. public class StringDemo5 {

  28.         public static void main(String[] args) {
  29.                 method();
  30.         }
  31.         public static void method(){
  32.                 String s = "abc";
  33.                 System.out.println(s.equals("abc"));//true
  34.                 System.out.println(s.equalsIgnoreCase("ABC"));//true
  35.                 System.out.println(s.contains("ab"));//true
  36.                 String s1 = "独孤九剑.剑谱";
  37.                 System.out.println(s1.startsWith("独孤"));//true
  38.                 System.out.println(s1.endsWith(".剑谱"));//true
  39.                 System.out.println("----------------------------");
  40.                 String s3 = "abc";
  41.                 String s4 = "aqz";
  42.                 System.out.println(s3.compareTo(s4));
  43.                 //P.S."abc"和"aqz"两个字符串比较,'a'和'a'相等,'b'-'q'=-15,
  44.                 //'c'和'z'就没有比较的必要,直接返回-15,即s3-s4从左到右一个一个对比.       
  45.                 System.out.println("----------------------------");
  46.                 String s5 = new String("123");
  47.                 String s6 = s5.intern();
  48.                 System.out.println(s6);
  49.         }
  50. }
复制代码
输出结果:
true
true
true
true
true
----------------------------
-15
----------------------------
123




感觉对你有用就给个鼓励吧~~

作者: michael_wlq    时间: 2015-11-18 21:32
这个不错啊
作者: 小鹿    时间: 2015-11-19 08:58
还是不错的 !  加油啊!
作者: 切比雪夫    时间: 2015-11-19 21:40
支持一下!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2