创建字符串的方式

  • String str1="hello world";
  • String str2=new String("hello world");
  • char[] c={'a','b','c'};  String str3=new String(c);

Java中的String类型是不可改变字符串,所谓的不可改变就是,一旦你对它赋值以后,它的值就不会再发生变化。

 例:
   String a= "abc";//a = "abc"
   a = a+"def";//a = "abcdef"
   你以为a的值已经发生了改变,但其实不是这样的,实际上Java虚拟机是重新开辟了一个内存,用来存储字符串"abcdef",这时候a指向了新生成的字符串,而"abc"在内存中还是存在的,这就是不可改变的含义,这个字符串一旦生成,它的值就不会发生变化。

字符串连接

连接字符串

1         String str1=new String("hello");
2         String str2=new String("world");
3         String s=str1+str2;
4         System.out.println(s);   //helloworld

 

字符串连接其他数据类型

这种情况会将其他数据类型自动转换为String类型。

 

获取字符串相关信息

获取字符串长度

1         String str1=new String("hello world");
2         System.out.println(str1.length());        //11

 

字符串查找

  • indexOf函数返回参数字符串首次出现的索引位置,如果没找到就返回-1;
  • lastindexOf函数返回参数字符串最后一次出现的索引位置,如果没找到就返回-1;
1         String str1=new String("hello worldorld");
2         System.out.println(str1.indexOf("orl"));       //7
3         System.out.println(str1.lastIndexOf("orl"));    //11

 

获取指定索引位置的字符

1 String str1=new String("hello worldorld");
2         for(int i=0;i<str1.length();i++) {
3             System.out.println(str1.charAt(i));
4         }                                                //遍历输出字符串的一种方式

 

字符串操作

获取子字符串

1         String str1=new String("hello worldorld");
2         System.out.println(str1.substring(2));           // llo worldorld
3         System.out.println(str1.substring(2,4));         //ll                        从2开始,不包括4

 

去掉前面和后面的空格

1         String str1=new String("  hello worldorld ");
2         System.out.println(str1.length());                    //18
3         System.out.println(str1.trim().length());             //15

 

字符串替换

replace还有替他用法,注意,这儿是替换所有l字符

1         String str1=new String("hello worldorld ");
2         System.out.println(str1.replace('l', 'p'));   //heppo worpdorpd                                                

 

判断字符串的开始与结尾

1         String str1=new String("hello worldorld");
2         System.out.println(str1.startsWith("he"));          //true,判断字符串是否以he开头
3         System.out.println(str1.startsWith("llo",2));       //true,这儿的2表示以索引2开始,判断是否以llo开头
4         System.out.println(str1.endsWith("d"));             //true,判断是否以d结尾

 

大小写转换:touppercase,tolowercase;

字符串分割

注意,切分规则也可以用正则表达式

1         String str1=new String("hel,loworl,dor,ld");
2         String[] array=str1.split(",");
3         System.out.println(Arrays.toString(array));    //[hel, loworl, dor, ld],返回的是一个数组

 

按字典顺序比较两个字符串

compareto函数按字典顺序比较两个字符串,每一位依次比较,如果按字典顺序str1位于str2前面,比较结果返回一个负整数;如果按字典顺序str1位于str2后面,比较结果返回一个正整数;

如果两个字符串完全相同则返回0

1         String str1=new String("heclo");
2         String str2=new String("healo");
3         String str3=new String("heflo");
4         System.out.println(str1.compareTo(str2));     //2
5         System.out.println(str1.compareTo(str3));     //-3

 

判断字符串是否相等

equals的用法:  注意,想忽略大小可用equalsIgnoreCase

1         String str1=new String("hello");
2         String str2=new String("hello");
3         String str3=new String("heclo");
4         System.out.println(str1.equals(str2));    //true
5         System.out.println(str1.equals(str3));    //false

 

==的用法:比较的是两个字符串的地址

1         String str1=new String("hello");
2         String str2=new String("hello");
3         System.out.println(str1==str2);    //false

 

格式化字符串

举个例子如下:

1         Date date=new Date();
2         String s=String.format("%te", date);
3         System.out.println(s);

 

正则表达式

使用正则表达式来判断某个字符串是否合法:str1.matches(regex);

重要的问题

如果是一个字符数组,直接输出是可以的

1         char[] array= {'c','d'};
2         System.out.println(array);    //cd
System.out.println(Arrays.toString(c)); //[c,d]

            int[] array= {1,1};
            System.out.println(array);    //[I@7852e922

将字符串转变为字符数组:

String s="andlqddqd";
System.out.println(Arrays.toString(s.toCharArray()));    //[a, n, d, l, q, d, d, q, d]

 

可变字符串StringBuilder的用法

他比string快,string每次拼接时都会构建一个新的String对象,而stringbuilder不会

1         StringBuilder sb=new StringBuilder();
2         sb.append("123");                           //append向sb里添加内容,内容的数据类型是什么都可以
3         sb.append("456");
4         sb.append(false);
5         sb.insert(1, "ppp");                       //往sb里插入内容,1表示开始位置
6         System.out.println(sb.toString());               //1ppp23456false
7         sb.delete(3, 6);                            //删除内容
8         System.out.println(sb.toString());               //1pp456false

 

posted on 2019-01-20 17:43  羊刀塔姆  阅读(85)  评论(0)    收藏  举报