创建字符串的方式
- 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

浙公网安备 33010602011771号