Java基础Day-Thirteen
Java字符串
String类
创建String对象的方法
-
方法一:创建一个字符串对象imooc,名为s1
String s1="imooc";
-
方法二:创建一个空字符串对象,名为s2
String s2=new String();
-
方法三:创建一个字符串对象imooc,名为s3
String s3=new String("imooc");
String的常用方法
方法 | 说明 |
---|---|
int length() | 返回当前字符串的长度 |
int indexOf(int ch) | 查找ch字符在该字符串中第一次出现的位置 |
int indexOf(String str) | 查找str子字符串在该字符串中第一次出现的位置 |
int lastIndexOf(int ch) | 查找ch字符在该字符串中最后一次出现的位置 |
int lastIndexOf(String str) | 查找str子字符串在该字符串中最后一次出现的位置 |
String substring(int beginIndex) | 获取从beginIndex位置开始到结束的子字符串 |
String substring(int beginIndex,int endIndex) | 获取从beginIndex位置开始到endIndex位置的子字符串 |
String trim() | 返回去除了前后空格的字符串 |
boolean equals(Object obj) | 将该字符串与指定对象比较,返回true或false |
String toLowerCase() | 将字符串转换为小写 |
String toUpperCase() | 将字符串转换为大写 |
char charAt(int index) | 获取字符串中指定位置的字符 |
String[] split(String regex,int limit) | 将字符串分割为子字符串,返回字符串数组 |
byte[] getBytes | 将该字符串转换为byte数组 |
//定义一个字符串 String str="Java 编程 基础"; String str2=new String("JAVA编程基础,我喜欢java编程"); //打印输出字符串的长度 System.out.println("字符串的长度是:"+str.length()); //取出字符‘程’并输出,chatAt(int index),index从0开始 System.out.println(str.charAt(6)); //取出子串“编程 基础”并输出 System.out.println(str.substring(5)); //取出子串“编程”并输出 System.out.println(str.substring(5,7)); //查找字符‘A’在字符串中第一次出现的位置 System.out.println("字符‘A’在字符串中第一次出现的位置:"+str2.indexOf('A')); //查找子串‘编程’在字符串中第一次出现的位置 System.out.println("子串‘编程’在字符串中第一次出现的位置:"+str2.indexOf("编程")); //查找字符‘A’在字符串中最后一次出现的位置 System.out.println("字符‘A’在字符串中第一次出现的位置:"+str2.lastIndexOf('A')); //查找子串‘编程’在字符串中最后一次出现的位置 System.out.println("子串‘编程’在字符串中第一次出现的位置:"+str2.lastIndexOf("编程")); }
-
字符串与byte数组间的相互转换
public static void main(String[] args) throws UnsupportedEncodingException { //字符串和byte数组之间的相互转换 //定义一个字符串 String str=new String("JAVA 编程 基础"); //将字符串转换为byte数组,并打印输出 byte[] arrs=str.getBytes("GBK"); for(int i=0;i<arrs.length;i++) { System.out.print(arrs[i]+" "); } System.out.println(); //将byte数组转换为字符串 String str1=new String(arrs,"GBK"); System.out.print(str1); }
-
等于运算符与equals方法的区别
//==和equals方法的区别 //定义三个字符串,内容都是imooc String str1="imooc"; String str2="imooc"; String str3=new String("imooc"); String str4=new String("imooc"); System.out.println("str1和str2的内容相同吗?"+(str1.equals(str2)));//true System.out.println("str1和str3的内容相同吗?"+(str1.equals(str3)));//true System.out.println("str1和str2的地址相同吗?"+(str1==str2));//true System.out.println("str1和str2的地址相同吗?"+(str1==str3));//false
-
str1和str2指向常量池中的同一个位置
-
str3和str4在内存中是两个不同的存储空间
-
-
字符串的不可变性
// String的不可变性 //String对象一旦被创建,则不能修改,是不可变的 //所谓的修改其实是创建了新的对象,所指的内存空间不变 String s1="imooc"; s1="hello,"+s1; //s1不再指向imooc所在的内存空间,而是指向了”hello,imooc“ System.out.println("s1="+s1); String s2=new String("hello,imooc!"); System.out.println("子串:"+s2.substring(0, 5)); System.out.println("s2="+s2);
StringBuilder类
-
String和StringBuilder的区别:
String具有不可变性,而StringBuilder不具备
-
建议:当频繁操作字符串时,使用StringBuilder
-
StringBuilder和StringBuffer
-
二者基本相似
-
StringBuffer是线程安全的,StringBuilder则没有,所以性能略高
-
//定义一个字符串”你好“ StringBuilder str=new StringBuilder("你好"); //在str后面添加内容,将字符串变成”你好,imooc“ // str.append(","); // str.append("imooc!"); // System.out.println("str="+str); System.out.println("str="+str.append(',').append("imooc!")); //将字符串变成”你好,iMOOC!“ //两种方式 //1、使用delete方法删除mooc,然后插入MOOC System.out.println("替换后:"+str.delete(4, 8).insert(4, "MOOC")); //2、使用replace方法直接替换 System.out.println("替换后:"+str.replace(4, 8, "MOOC")); //在字符串”你好,iMOOC“中取出“你好”并输出 System.out.println(str.substring(0,2));