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);
  • 相关阅读:
    IOS开发-CALayer和UIView详细汇总
    IOS开发-第三方SDWebImage下载网络图片的使用
    解决TalbleView头部或底部子控件不显示问题
    node.js http.get 和http.post 数据
    Node.js Express 获取request原始数据
    个人开发者做一款Android App需要知道的事情
    个人开发者的酸甜苦辣
    码农的福利来了, 编程在线Androd 客户端上线了
    console使用技巧
    AngularJS 常用语法
  • 原文地址:https://www.cnblogs.com/lzk-seven/p/13624311.html
Copyright © 2011-2022 走看看