String和StringBuffer
String和Stringbuffer类
1.String的声明
string s1="abc";
string s2 = new String("abc");
2.String内容的比较
在String中,比较两个字符串是否相同,不能使用==,应使用equals()方法。
1.“==”方法:比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同
String str1 = "zjd";//直接赋值
String str2 = new String ("zjd");//通过new赋值
String str3 = str2;
System.out.println("str1 == str2-->"+(str1 == str2));
System.out.println("str1 == str3-->"+(str1 == str3));
System.out.println("str2 == str3-->"+(str2 == str3));
原因:
- 每一个String对象的内存存储其实都是在堆内存中。
- "=="是进行数值比较的,因为str1和str2的在堆内存的地址不一样所以:str1和str2不相等–>false
2.“equals()"方法:比较的是两个对象的内容是否相等
String str1 = "zjd";//直接赋值
String str2 = new String ("zjd");//通过new赋值
String str3 = str2;
System.out.println("str1 equals str2-->"+(str1.equals(str2)));
System.out.println("str1 equals str3-->"+(str1.equals(str3)));
System.out.println("str2 equals str3-->"+(str2.equals(str3)));
原因:因为equals()方法的作用是将内容进行比较,所以此处返回的结果都为true。
3.两种实例化对象的区别
一个字符串就是一个String 类中的匿名对象,匿名对象就是已经开辟了堆内存空间可以直接使用的对象。
1.直接赋值
String str1 = "zjd";//直接赋值
String str2 = "zjd";
String str3 = "zjd";
System.out.println("str1 == str2-->"+(str1 == str2));
System.out.println("str1 == str3-->"+(str1 == str3));
System.out.println("str2 == str3-->"+(str2 == str3);
原因:实际上就是把一个在堆内存中开辟好的空间使用权给str1,并且如果一个字符串已经被一个名称所引用,则以后再有相同的名称的字符串声明时,就不会重新开辟新地址了
2.通过new的方式实例化
String str1 = new String("zjd");
4.一旦被初始化,字符串内容便不可以被改变
String str1 = "zjd";
str1 =str1+"zka";
System.out.println(str1);
结果:zjdzka
二.Stringbuffer
1.特点
1.长度可以变化
2.通过tostring()方法变为string
2.声明以及CURD
1.声明
StringBuffer s = new StringBuffer();
StringBuffer s = new StringBuffer(“abc”);
String s1 = sb1.toString();
2.Create
StringBuffer sb = new StringBuffer(“abc”);
sb.append(true);
结果:abctrue
3.Update
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false);
结果:TestfalseString
StringBuffer sb = new StringBuffer("helloworldjava");
sb.replace(5, 10, "节日快乐");
结果:hello节日快乐java
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
结果:aDc
4.Delete
StringBuffer sb = new StringBuffer(“Test”);
sb. deleteCharAt(1);
结果:Tst
StringBuffer sb = new StringBuffer(“TestString”);
sb. delete (1,4);
结果:TString
5.反转
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
结果:”cba”。
6.获取(capacity=length+16)
StringBuffer sb = new StringBuffer("Hello");
System.out.println("length = "+sb.length);
System.out.println("capacity = "+sb.capacity);
结果:5 21
StringBuffer sb = new StringBuffer("Java is a programming language : ");
sb.charAt(2)
结果:v
StringBuffer sb = new StringBuffer("Hello");
System.out.println(sb.indexOf(2));
System.out.println();
StringBuffer sb = new StringBuffer("sdbajd");
String s = sb.substring(5);
System.out.println("s:"+s);
String ss = sb.substring(3,4);
String ss = sb.substring(3,5);
System.out.println("ss:"+ss);
结果:d a aj
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。