java 的String类的测试

13 篇文章 0 订阅
3 篇文章 0 订阅

前言:string是java基础,复习巩固,测试如下:

1.String的equals()和"=="测试

    public static void main(String[] args) {
        //指向相同的引用
        String a = "abc";
        String d = "abc";
        String f = new String("abc");
        String g = new String(d);
        String b = a;
        String i = new String(b);
        String c = a;
        String e = d;
        String h = f;
//        System.out.println(b == c); // true;引用也相同
//        System.out.println(b.equals(c)); // true;值相同
//        System.out.println(c==e); // true;"abc"在堆中是同一个对象,引用相同
//        System.out.println(h == f); // 同一个引用
//        System.out.println(h.equals(f)); // 值相同
//        System.out.println(h == g); // false // 引用不同
//        System.out.println(h.equals(g)); //true; 值相同
//        System.out.println(f==g); // false // 引用不同
//        System.out.println(f.equals(g));// true;值相同
//        System.out.println(i==f); // false // 引用不同
//        System.out.println(i==g); // false // 引用不同
//        System.out.println(i==d); // false // 引用不同
//        System.out.println(i==a); // false // 引用不同
        System.out.println(i.equals(f)); //true; 值相同
        System.out.println(i.equals(g)); //true; 值相同
        System.out.println(i.equals(d)); //true; 值相同
        System.out.println(i.equals(a)); //true; 值相同

    }

2.组合String

    public static void main(String[] args) {

        String s = new String("yveshe");//在堆中创建一个对象s,s查看常量池中是否存在"yveshe",如果有则拷贝一份放到堆中,然后返回堆中的地址;如果池中没有则在堆中创建一份,然后返回堆中的地址;然后内存中还会创建一个对象,总共三个;
        String s1 = "yveshe";//这行代码被执行的时候,JAVA虚拟机首先在字符串池中查找是否已经存在了值为"yveshe"的这么一个对象,它的判断依据是String类equals(Object obj)方法的返回值。如果有,则不再创建新的对象,直接返回已存在对象的引用;如果没有,则先创建这个对象,该放在了字符串池中,再将它的引用返回。
        String s2="yve";
        String s3="she";
        String s4=s2+s3;// s4为s2+s3的引用组合 ,s4不会在创建临时string了;
        String s5 = "yve"+"she";
        System.out.println(s1==s4.intern()); // true
        System.out.println(s1==s4); // false
        System.out.println(s1.equals(s4)); // true 值相同
        System.out.println(s1==s5); // true, s5会在常量池中创建临时String,结果指向同一个string;
        System.out.println(s == s5); // false

    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值