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);
  • 相关阅读:
    webservice调用三种方式
    webservice访问权限控制利用TOMCAT用户
    ubuntu添加ppa源
    win7与ubuntu共享文件夹
    Cinema 4D* 中令人惊叹的体积效果
    线程并行化的概念及其用法
    什么是代码现代化?
    英特尔® 软件开发人员十大故事 | 五月
    英特尔® 实感™ 前置摄像头 SR300 和 F200 的比较
    面向英特尔® x86 平台的 Unity* 优化指南: 第 1 部分
  • 原文地址:https://www.cnblogs.com/lzk-seven/p/13624311.html
Copyright © 2011-2022 走看看