zsc562743237的专栏

Java语言中有八种基本数据类型:字节(byte)、字符(char)、短整型(short)、整型(int)、长整型(long)、浮点型(float)、双精度浮点型(double)和布尔型(boolean)。每种基本数据类型都有对应的封装类型,但是在编程中使用的最多的并不是这八种基本数据类型或其封装类型,而是字符串类型(String)。

String 类代表字符串。Java 程序中的所有字符串字面值(如"abc" )都作为此类的实例实现。String类的声明如下:

public final class String implements java.io.Serializable, Comparable<String>, CharSequence

可见String类实现了Serializable接口,所以它是可以被序列化到硬盘中,并实现了Comparable,所以String类有默认的排序规则的。

/** The value is used for character storage. */ private final char value[]; //由此可见String类其实是以char数组的形式存储的

/** The offset is the first index of the storage that is used. */ private final int offset; //开始位置

/** The count is the number of characters in the String. */ private final int count; //字条数目,即字符串的长度

/** Cache the hash code for the string */ private int hash; // Default to 0 //缓存的hash值

获取String类的长度

、 public int length() {

return count; //String的成员属性count即为字符串的长度,所以直接返回即可。

}

==比较的是两个对象在内存中的地址值是否相等,而例子中是new了两个对象,所以第一个打印的是false,Java中所有的类都继承自Object类,Object类的equals方法比较的也是两个对象的地址值是否相等,但String类重写了equals方法,它比较的是两个字符串的内容是否相等,所以第二个打印的是true。

public boolean equals(Object anObject) {if (this == anObject) { return true;}if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) {char v1[] = value;char v2[] = anotherString.value;int i = offset;int j = anotherString.offset;while (n– != 0) { if (v1[i++] != v2[j++])return false;}return true; }}return false; }

就先写到这,,以后在补充吧。 刚刚开始写博客,写的很不到位,欢迎大家来吐槽,未完待续。。。。。。。



不要害怕错过什么,因为在路上你就已经收获了自由自在的好心情。

zsc562743237的专栏

相关文章:

你感兴趣的文章:

标签云: