zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    python函数内容
    python读写csv文件
    python正则表达式
    python使用MYSQL数据库
    python简单面试题
    python执行cmd命令
    python详解json模块
    我的自动化测试之路
    测试开发这一年
    招聘测试人员,我在面试什么?
  • 原文地址:https://www.cnblogs.com/lzk-seven/p/13624311.html
Copyright © 2011-2022 走看看