1

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));

image

原因:

  1. 每一个String对象的内存存储其实都是在堆内存中。
  2. "=="是进行数值比较的,因为str1和str2的在堆内存的地址不一样所以:str1和str2不相等–>false

image

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)));

image

原因:因为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);

image

原因:实际上就是把一个在堆内存中开辟好的空间使用权给str1,并且如果一个字符串已经被一个名称所引用,则以后再有相同的名称的字符串声明时,就不会重新开辟新地址了
image

2.通过new的方式实例化

String str1 = new String("zjd");

image

4.一旦被初始化,字符串内容便不可以被改变
String str1 = "zjd";
str1 =str1+"zka";
System.out.println(str1);

结果:zjdzka

image

二.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

悠悠我心
7 声望1 粉丝