0
点赞
收藏
分享

微信扫一扫

java-String类笔记(2)

package String;

/**
* @author jee
* @version 1.0
*/
// String创建对象的两种方式
// 1.String s1 = "xxxx";
// 2.String s2 = new String("xxxxx");
//
public class String02 {
public static void main(String[] args) {
// 方式1
// 先从常量池中查看是否有acsds的数据空间,如果有直接指向
// 如果没有直接创建,然后再指向,s1最终指向的是常量池的地址空间
String s1 = "acsds";
// 方式2
// 现在堆中创建空间,里面维护了value属性,指向常量池的sada空间
// 如果常量池中有,直接通过value指向,如果没有,重新创建。最终指向
// 堆中的空间地址
String s2 = new String("sada");

// 例子1
String s3 = new String("abc");
String s4 = new String("abc");
System.out.println(s3==s4);//false

// 例子2
String s5 = "aaa";
String s6 = "aaa";
System.out.println(s5==s6);//true

// 例子3
String s7 = "mmm";
String s8 = new String("mmm");
System.out.println(s7.equals(s8));//true
System.out.println(s7==s8);//false
System.out.println(s7==s8.intern());//true
System.out.println(s8==s8.intern());//false
// intern方法,当调用intern方法时,如果常量池中已有包含一个等于此String对象字符串
// 则返回池中的字符串,否则,将此String对象添加到池中。

// 例子4
Person p1 = new Person();
p1.name = "xiaomi";
Person p2 = new Person();
p2.name ="xiaomi";
System.out.println(p1.name.equals(p2.name));//true
System.out.println(p1.name== p2.name);//true
System.out.println(p1.name =="xiaomi");//true

}
}
class Person{
String name;
}
举报

相关推荐

0 条评论