| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package course.api.string;
- /**
- * @author WanJl
- * @version 1.0
- * @title StringTest
- * @description java API-String 字符串
- * @create 2026/7/27
- */
- public class StringTest {
- public static void main(String[] args) {
- //定义字符串变量
- String s1="Hello";
- String s2="Hello";
- System.out.println(s1==s2); //?
- //我们说过。String类型并不属于基本数据类型
- //而是Java类 引用数据类型
- //还说过 引用数据类型要像使用,需要创建对象
- // 类型 对象名 = new 类型();
- // 但是字符串String为什么不需要?
- // 这个就是因为Java为字符串做的特殊的定义,字符串的变量存储的地方有两个:
- // |- 和其他的引用数据类型一样,通过构造方法创建对象,引用变量存在栈中,对象空间存在堆中。虽然内容相同,但地址值不同
- // |- 是直接把字符串变量存在常量池中。只要字符序列相同(顺序和大小写)那么无论程序代码中出现几次,JVM(Java虚拟机)都只建立一个String对象,并在字符串常量池中进行维护。
- //String s1="Hello"; 就是把字符串的值存在了常量池
- String s4=new String("Hello");
- String s5=new String("Hello");
- System.out.println(s1==s4);
- System.out.println(s4==s5);
- /*
- String 常见的构造方法:
- public String(); 创建一个空白字符串对象,不含有任何内容
- public String(char[] chs); 根据字符数组的内容,创建一个字符串对象
- public String(String original); 根据传入的字符串内容,创建一个字符串对象
- String s="abc"; 直接以赋值的方式创建字符串对象,值就是abc
- 注意:
- String这个类比较特殊,打印它的对象名的时候,不会出现内存地址,
- 而是该对象所记录的字符串内容
- 后面会说怎么实现的...Object
- == 比较的是什么?
- 基本数据类型 使用 == 比较的时候具体的值
- 引用数据类型 使用 == 比较的是对象的内存地址
- String类型也是比较地址,只不过,使用直接赋值的方式的字符串对象,只要字符序列(顺序和大小写)相同,就都是同一个对象。
- 为了能够直接比较字符串的内容,String提供了一个方法equals()方法
- 比较两个字符串的内容是否相同,区分大小写
- String s4=new String("Hello");
- String s5=new String("Hello");
- boolean b=s4.equals(s5); //返回一个boolean值
- */
- System.out.println(s4.equals(s5));
- }
- }
|