一、字符串概念
- 字符串的内容不可变。(*****)
- 字符串共享使用。
- 字符串相当于时char[]字符数组,底层原理是byte[]。
二、创建方式
三种构造方法
- public String();
- public String(char[] array);
- public String(byte[] array);
//1.赋值为字符串
String st1 = new String("abc");
System.out.println(st1);
//2.字符数组
char[] ch = {'a','b','c'};
String st2 = new String(ch);
System.out.println(st2);
//3.字节数组
byte[] bytes = {97,98,99};
String st3 = new String(bytes);
System.out.println(st3);
验证结果可行。
- 直接创建 String st = “abc”;
那么直接创建与构造方法创建有什么区别呢?
三、什么是常量池?
解释:程序当中直接写上的双引号字符串,就在字符串常量池中。
首先我们要知道这样两个概念。
- 在基本数据类型中,==表示比较的是数值是否相等。
- 在引用数据类型中,==比较的是两个对象的地址值。
String st1 = "abc";
String st2 = "abc";
String st3 = new String("abc");
System.out.println(st1 == st2); //true
System.out.println(st1 == st3); //false
当直接给字符串赋值时存在常量池中,如果常量池中有这个String对象,则该引用会直接指向该对象,不会再去创建。这也时st1与st2地址值相同的原因。