×
新网 > 建站推广 > 正文

Java常用类String类的详细介绍

  • 作者:zccc
  • 来源:网络
  • 2020-07-14 18:04:54

常用类 String(推荐教程:java入门教程)String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。字符串是常量,它们的值在创建之后不能更改。字符

常用类 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

  • 相关专题

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣

Loading