常用类 String
(推荐教程:java入门教程)
String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。
字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
String源码
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { }
String的成员变量
//String的属性值 private final char value[]; //数组被使用的开始位置 private final int offset; //String中元素的个数 private final int count; //String类型的hash值 private int hash; // Default to 0 private static final long serialVersionUID = -6849794470754667710L; private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[0];
从源码看出String底层使用一个字符数组来维护的。
成员变量可以知道String类的值是final类型的,不能被改变的,所以只要一个值改变就会生成一个新的String类型对象,存储String数据也不一定从数组的第0个元素开始的,而是从offset所指的元素开始。
(视频教程推荐:java视频教程)
创建字符串对象的方式
String s1 = "hello" ; String s2 = "world" ; String s3 = "hello" ; System. out. println(s1 == s3) ; //true
S1和S3的“hello”和s2的"world"存在的是方法区的常量池。
如图:
所以s1==s3
s1 = new String ("hel1o") ; s2 = new String ("hel1o") ; System.out.println(s1 == s2) ; //false System.out.println (s1.equals (s2) ) ; // true
s1和s2是通过new得到两个String对象,存在堆中,地址是不一样的。s1和s2是两个引用,所以比较的是地址,s1 != s2。
String的equals是重写了Object的equals,不是和Object一样比较地址,而是比较值,所以s1.equals (s2) 是true。
3.char c[]= { 's', 'u' , 'n',',', 'j', 'a', 'v' ,'a'} ; String s4 = new String(c) ; String s5 = new String(c,4,4) ; System.out.println(s4) ; //sun java System.out.println(s5) ; //java
以上是Java常用类String类的详细介绍的详细内容。更多信息请关注PHP中文网其他相关文章!