StringTest.java 2.8 KB

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