一、String类的基本用法
1.1. String的注意事项
注意:1. String表示字符串类型,属于 引用数据类型
,不属于基本数据类型。
2. 在java中随便使用 双引号括起来
的都是String对象。
例如:“abc”,“def”,“hello world!”,这是3个String对象
1.2 String类的不变性
1.字符串是常量,在创建之后不能更改
其实就是说一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。
2.源码分析,String类底层采用的是字符数组:
private final char value[]
private 修饰说明value只能在String类内部使用,而且又没有提供get方法,所以外部无法获取value数组,就无法改变数组中元素的值。
final修饰说明value是常量,一旦创建,就不能被改变,value一旦被初始化成某个数组,将永远指向这个数组,不可能再指向其它的数组了。
1.3 String类特点:
1. 一切都是对象,字符串事物 "" 也是对象。
2.类是描述事物,String类,描述字符串对象的类。
3.所有的 "" 都是String类的对象。
4.字符串是一个常量,一旦创建,不能改变。
例题:
public class StringDemo {
public static void main(String[] args) {
//引用变量str执行内存变化
//定义好的字符串对象,不变
String str = "abc";
System.out.println(str);
str = "edf";
System.out.println(str);
}
}
1.4 String类创建方式和比较
创建对象的数量比较
String s3 = “abc”;
在内存中只有一个对象。这个对象在字符串常量池中
String s4 = new String(“abc”);
在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象,在字符串常量池中
例题:
public class StringDemo2 {
public static void main(String[] args) {
//字符串定义方式2个, 直接= 使用String类的构造方法
String str1 = new String("abc");
String str2 = "abc";
System.out.println(str1);
System.out.println(str2);
System.out.println(str1==str2);//引用数据类型,比较对象的地址 false
System.out.println(str1.equals(str2));//true
}
}
1.5 String类构造方法(常见构造方法)
public String():-------空构造
public String(byte[] bytes):-------把字节数组转成字符串
public String(byte[] bytes,int index,int length):-------把字节数组的一部分转成字符串
public String(String original):-------把字符串常量值转成字符串
例题:
class StringTest{
public static void main(String[] args) {
//最常用的方式
String s1 = "我爱你中国";
System.out.println(s1);//我爱你中国
String s2 = new String("我爱你中国");
System.out.println(s2);//我爱你中国
char[] c = {'我' , '爱', '你', '中', '国'};
String s3 = new String(c);
System.out.println(s3);//我爱你中国
String s4 = new String(c, 2, 3);
System.out.println(s4);//你中国
byte[] b = {65, 66 ,67, 68};
String s5 = new String(b);
Syste