Java基础(十六)String类

Java基础(十六)String类

下面两句是等效的。 

Java基础(十六)String类

注意:字符串 是一个对象,所有双引号内的都是一个对象。而且字符串一旦初始化成功了就不能再变,它是一个常量。

下图中“abc”对象内容并没变而是s1指向变了。内存中的abc是不会变的 

Java基础(十六)String类

下面讨论:

Java基础(十六)String类

前一个是false可以理解,因为这是两个对象。但后面正常object原码中equals比较的是两个地址值,而这里竟然是true???

Java基础(十六)String类

这是因为,String 类复写了Object类中的equals方法。该方法用于判断两字符串是否相同。

s1和s2有什么区别?
s1在内存中有一个对象,s2在内存中有两个对象。

 

【字符串中常用方法】

【==】

Java基础(十六)String类

第二个true的原因是:字符串是一个常量,既然已经有了,就不会再开空间从常量池中再造一个一样的出来,直接引用就好。

注意区别:字符串有长度,但它是个Int类型的方法,数组的长度是属性。

Java基础(十六)String类

Java基础(十六)String类 Java基础(十六)String类

2.判断

 

boolean startWith()Java基础(十六)String类

boolean endWith()Java基础(十六)String类

boolean isEmpty()Java基础(十六)String类

boolean contains() Java基础(十六)String类

Java基础(十六)String类

Java基础(十六)String类

Java基础(十六)String类

Java基础(十六)String类

Java基础(十六)String类 Java基础(十六)String类

Java基础(十六)String类

compareTo方法:

Java基础(十六)String类

160-163没看,是字符串的一些练习。 

相关文章: