String
String 概述:String类在java.lang包下,所以使用的时候不需要导包
String类代表字符串,Java 程序中的所有字符串文字()都被实现为此类的实例也就是说,java程序中所有的双引号字符串,都是String类的对象。
字符串的特点:
字符串不可变,他们的值在创建后不能被更改
虽然String的值是不可变的,但是它们可以被共享
字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])
String构造方法:
1.public String():创建一个空白字符串对象,不含有任何内容
2.public String(char[] chs):根据字符数组的内容,来创建字符串对象
3.public String (byte[] bys):根据字节数组的内容,来创建字符串对象
例如: byte[] bys = {97,98,99};
String s = new String(bys);
sout(s); //屏幕输出为:abc。所以输出为对应字符
4.String s = “abc”;直接赋值的方法创建字符串对象,内容就是abc
String对象的特点:
1.通过new 创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同
2.以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,jvm都只会建立一个String对象,并在字符串池中维护。
string 以两种方式得到对象的特点。
字符串的比较:
1.使用==做比较
基本数据类型:比较的是数据值是否相同
引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同,是用一个方法来实现的,这方法叫:equals()
public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串
l例如:
char [] ch = {‘a’, ‘b’, ‘c’};
String s1 = new String(ch);
String s2 = new String(ch);
String s3 = “abc”;
String s4 = “abc”;
sout(s1 == s2); // false。== 用来比较地址值
sout(s1 == s3); // false
sout(s3 == s4); // true
sout(s1.equals(s2));
sout(s1.equals(s3)); // equals方法比较内容都为true
如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,即耗时,又浪费空间,而这种操作还不可避免。那么有没有一种比较好的方式可以解决这个问题呢?我们可以通过java提供的StringBuilder类就来解决这个问题。
StringBuilder概述:
stringBuilder是一个可变的字符串类,我们可以把它看成是一个容器这里的可变指的是StringBuilder对象中的内容是可变的。
String和StringBuilder的区别:
String:内容是不可变的。
Stringbuilder:内容是可变的。
StringBuilder的构造方法:
public StringBuilder()常见一个空白的可变字符串对象,不含有任何内容。 public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象。
StringBuilder的添加和反转方法
public StringBuilder append(任意类型)。添加数据,并返回对象本身。
返回的是自己本身,则可以链式编程:
String Builder sb = new StringBuilder();
sb.append(“hello”).append(“world”).append(100);
sout(“sb:” + sb);
屏幕输出为: helloworld100
public StringBuilder reverse() 返回相反的字符序列。
001dlrowolleh
StringBuilder和String相互转换
1.从Stringbuilder 转换为String
public String toString() : 通过toString()就可以实现吧StringBuilder转换为String
2.String 转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转换为Stringbuiler
|
|