主要内容
1、如何创建String对象
2、String对象的常用方法
3、字符串和byte数组
4、==和equals方法的区别
5、String的不可变性
6、StringBuilder
1、如何创建String对象-->三种创建方法
/**
* 三种创建方式
* 堆 用来存放new创建一个对象实例
* ,内存会在栈中声明一个str1变量,同时在变量池创建 imooc,如果变量已经存在这个字符串变量,则不创建,只把变量指向这个字符串变量。
* 第三种方法,内存会在栈中声明一个str3变量,同时在堆中新建一个字符串变量对象实例
*/
String str1 = "imooc";//创建一个字符串对象imooc,名为str1
String str2 = new String();//创建一个空字符串对象imooc,名为str2
String str3 = new String("imooc");//创建一个字符串对象imooc,名为str3
2、String对象的常用方法
常用方法练习如下:
public static void main(String[] args) {
/**
* length charAt substring
*/
// 字符串“JAVA 编程 基础”
String str1 = "JAVA 编程 基础";
// 打印自字符串长度
System.out.println("字符串长度:"+str1.length());
// 取出字符串 程 打印
System.out.println(str1.charAt(6));
// 取出字符串 编程 基础 打印
System.out.println(str1.substring(5));
// 取出字符串 编程 打印
System.out.println(str1.substring(5, 7));
String str2 = null;
System.out.println(str2);
}
public static void main(String[] args) {
/**
* indexOf lastIndexOf
*/
// 定义一个字符串“JAVA编程基础,我喜欢java编程”
String str = new String("JAVA编程基础,我喜欢java编程");
// 查找字符串'A'在字符串中第一次出现的位置
System.out.println("符串'A'在字符串中第一次出现的位置"+str.indexOf('A'));
// 查找字符串“编程”在字符串中第一次出现的位置
System.out.println("符串\"编程\"在字符串中第一次出现的位置"+str.indexOf("编程"));
// 查找字符串'A'在字符串中最后一次出现的位置
System.out.println("符串'A'在字符串中第一次出现的位置"+str.lastIndexOf('A'));
// 查找字符串“编程”在字符串中最后一次出现的位置
System.out.println("符串\"编程\"在字符串中第一次出现的位置"+str.lastIndexOf("编程"));
// 在字符串index值为8的位置开始,查找字符串“编程”在字符串中第一次出现的位置
System.out.println("在字符串index值为8的位置开始,符串\"编程\"在字符串中第一次出现的位置"+str.indexOf("编程",8));
}
3、字符串和byte数组
public static void main(String[] args) throws IOException {
/**
* 字符串 和 byte数组
*/
// 字符串和byte数组之间的相互转换
// 定义一个字符串
String str = new String("JAVA 编程 基础");
// 将字符串转换为byte数组,并打印输出
// byte[] arrs = str.getBytes("GBK");
byte[] arrs = str.getBytes();//"UTF-8"
for(int i=0;i<arrs.length;i++) {
System.out.print(arrs[i]+" ");
}
System.out.println();
// 将byte数组转换为字符串
// String str1 = new String(arrs,"GBK");
String str1 = new String(arrs);//"UTF-8"
System.out.println(str1);
}
4、equals和 == 方法的区别
字符串中,equals方法用于比较字符串的值是否相同,==用于比较字符串的地址是否相同。
public static void main(String[] args) {
// ==和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)));//equals方法比较内容 true
System.out.println("str1和str3的内容相同?"+(str1.equals(str3)));//true
System.out.println("str1和str3的内容相同?"+(str3.equals(str4)));//true
System.out.println("str1和str2的地址相同?"+(str1==str2));//==比较地址 true
System.out.println("str1和str3的地址相同?"+(str1==str3));//false
System.out.println("str3和str4的地址相同?"+(str3==str4));//false
}
5、String的不可变性
String的不可变性,String对象一旦被创建,则不能修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不变。
public static void main(String[] args) {
// String的不可变性,String对象一旦被创建,则不能修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不变
String str1 = "imooc";
String str2 = "hello,"+str1;
// str1不再指向imooc所在的内存空间,而是指向了"hello,imooc"
System.out.println("str1="+str1);
System.out.println("str2="+str2);
String str3 = "hello,imooc";
System.out.println("子串:"+str3.substring(0,5));
System.out.println("str3="+str3);
}
6、StringBuilder
String和StringBuilder的区别:String具有不可变性,而StringBuilder不具备。当频繁操作字符串时,使用StringBuilder。
StringBuilder和StringBuffer:两者基本相似,StringBuffer是线程安全的,而StringBuilder则没有,所以性能略高。在执行速度方面StringBuilder大于StringBuffer。
public static void main(String[] args) {
StringBuilder str = new StringBuilder("您好");
// 在 您好 后面添加内容,将字符串变成 您好,imooc!
// str.append(",");
// str.append("imooc!");
// System.out.println("str="+str);
System.out.println("str="+str.append(',')+str.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));
}
标签:String,str1,System,学习,println,字符串,out
From: https://www.cnblogs.com/LittleKevin/p/16876278.html