• Sting-- "equals" and "=="


    (1)“==” 用于比较基本数据类型时比较的是值,用于比较引用类型时比较的是引用指向的地址。
    (2)Object 中的equals() 与 “==” 的作用相同,但String类重写了equals()方法,比较的是对象中的内容。

    String创建的两种方式

    String s1="aaa",在常量池获取对象,如果存在则直接引用

    String s2=new String("aaa"); 一共会创建两个字符串对象一个在堆中,一个在常量池中(前提是常量池中还没有 "aaa" 对象)

    1 String s1="aaa";
    2 String s2=new String("aaa");
    3 System.out.println(s1==s2); #flase
    4 System.out.println(s1.equals(s2));  #true

         String类型的常量池比较特殊。它的主要使用方法有两种:

    (1)直接使用双引号声明出来的String对象会直接存储在常量池中。
    (2)如果不是用双引号声明的String对象,可以使用 String 提供的 intern 方法。 String.intern() 是一个 Native 方法,它的作用是: 如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用; 如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用

            String s1 = new String("AAA"); #堆
            String s2 = s1.intern();          #常量池
            String s3 = "AAA";                 #常量池
            System.out.println(s2);//AAA   
            System.out.println(s1 == s2);//false,因为一个是堆内存中的String对象一个是常量池中的String对象,
            System.out.println(s2 == s3);//true, s1,s2指向常量池中的”AAA“

    字符串拼接:

            String s1="a";
            String s2="b";
            String c=s1+s2;
            String d="a"+"b";
            String f="ab";
            System.out.println(c==d);
            System.out.println(d==f);
  • 相关阅读:
    mysql索引
    mysql中的事务
    mysql的各种join连接
    java集合-LinkedList源码分析
    java集合(二)-ArrayList源码分析
    java集合(一)-集合概述
    java并发(五)-重排序、 happens-before
    vue引入百度地图 --BMap is not defined ,eslint BMap报错
    红星美凯龙前端面试内容总结
    vue父子组件钩子函数的执行顺序
  • 原文地址:https://www.cnblogs.com/lzk-seven/p/13624311.html
Copyright © 2020-2023  润新知