创建String对象的方法
String s1="ican"; //创建-个字符串对象ican ,名为s1
String s2=new String(); //创建-个空字符串对象,名为s2
String s3=new String("ican"); //创建一个字符串对象ican,名为s3
String的常用方法
字符串与byte数组间的相互转换
//字符串和byte数组之间的相互转换
//定义一个字符串
String str= new String("JAVA 编程 基础");
//将字符串转换为byte数组,并打印输出
byte[] arrs= str.getBytes();
for(int i=0;i<arrs.length;i++){
System.out.print(arrs[i]+" ");
}
//将byte数组转换为字符串
String str1 = new String(arrs);
System.out.println(str1);
等于运算符与equals方法的区别
//==和equals方法的区别
//定义三个字符串,内容都是ican
String str1 = "ican";
String str2= "ican";
String str3=new String("ican");
System.outprintln("str1和str2的内容相同?"+(strl.equals(str2))); //true
System.outprintIn("str1和str3的内容相同?"+(tr1.equals(t3))); //true
System.outprintIn("str1和str2的地址相同? "+(str1==str2))); //true
System.outprintln("str1和Istr3的地址相同?"+(str1 equals(str3))); //false
在内存空间里面,有一个栈是用来存放类的引用的,常量池里边可以存放字符串常量,还有一个地方是堆,堆里面是用来存放用new创建的这个字符串对象的。
当我们有一条语句String str1 = "imooc"
就会在栈当中生成一个str1的引用,同时在常量池当中生成一个”imooc”,并且str1这个引用去指向常量池当中的”imooc”,那么当我们有另外一条语句String str2 = "imooc"
同样也是在栈里生成一个str2,然后在常量池当中已经有一个”imooc”存在,那这时候当我们发现常量池当中已经有一个”imooc”这样的一个字符串的时候,第二条语句就不会在常量池当中再生成一个字符串,而是直接把str2的引用指向了已经存在的这个”imooc”,这也就是为什么str1和str2的地址是相同的,因为它们指向的其实都是常量池当中的同一个位置。
这时如果有第三条语句String str3=new String("imooc");
这时候会在栈当中生成一个str3的引用,然后在堆当中创建一个对象,并且把str3指向所创建的这个对象,如果这时候再有第四条语句String str4=new String("imooc");
,那这时候会在堆当中创建一个新的对象,然后把str4的引用指向这个对象,str3和str4创建的语句看样子是一样的,其实在内存当中是两个完全不同的内存空间。
字符串的不可变性
//String的不可变性
//String对象一旦被创建 ,则不能修改,是不可变的
//所谓的修改其实是创建了新的对象,所指向的内存空间不变
String s1= "imooc";
s1= "hello,"+sl;
//s1不再指向imeoc所在的内存空间,而是指向了"hello imooc"
System.out.println("s1="+s1);
String s1= "imooc";
String s2= "hello,"+sI;
//s1不再指向imooc所在的内存空间,而是指向了"hello,imoos"
System.outprintln("s1="+s1);
System.outprintln("s2="+s2);
String s3=new String("hello,imooc!");
System.out.println(子串:" + s3.substring(0,5));
System.out.println("s3="+s3);
StringBuilder
String和StringBuilder的区别 :String具有不可变性,而StringBuilder不具备。当频繁操作字符串时,建议使用StringBuilder。
常用方法:
//定义一个字符串你好
StringBuilder str = new StringBuilder("你好");
//在"你好"后面添加内容,将字符串变成“你好, imooc!"
str.append(",");
strappend("imooc!");
System.outprintln("str="+str);
原来在内存当中是没有生成新的对象的,也没有新的字符串常量,而是在原来的这个对象上进行的更改。
//将字符串变成”你好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));
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99485.html