在Java中,String
是一个引用类型,它本身也是一个class
。但是,Java编译器对String
有特殊处理,即可以直接用"..."
来表示一个字符串,实际上字符串在String
内部是通过一个char[]
数组表示的。
String s1 = "Hello!"; String s2 = new String(new char[] {‘H‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘!‘});
Java字符串的一个重要特点就是字符串不可变。这种不可变性是通过内部的private final char[]
字段,以及没有任何修改char[]
的方法实现的。
关于字符串的操作有很多方法,但所有关于字符串的修改都不会改变原字符串,而是返回新的字符串,原有的字符串不会发生改变。
public static void main(String[] args) { String s = "aA"; String s2 = s.toLowerCase(); System.out.println(s); //aA System.out.println(s2); //aa }
当我们想要比较两个字符串是否相同时,要特别注意,我们实际上是想比较字符串的内容是否相同。必须使用equals()
方法而不能用==
。
public static void main(String[] args) { String s1 = "hello"; String s2 = "hello"; System.out.println(s1 == s2); //true 这里为true实际上只是因为Java编译器在编译期,会自动把所有相同的字符串当作一个对象放入常量池,所以s1和s2的引用是相同的。 System.out.println(s1.equals(s2)); //true 字符串的内容比较一定要使用equals方法 String s3 = "HELLO".toLowerCase(); System.out.println(s1 == s3); //false 使用 == 进行比较会得到错误的结果 System.out.println(s1.equals(s3)); //true }
原文:https://www.cnblogs.com/wenxuehai/p/12172323.html