string和new string()的区别,以及equals与==的去别

import java.util.Scanner;
public class TestScanner
{
    public static void main(String[] args)
    {   //Java会确保一个字符串常量只有一个拷贝
        String str1="hello";
        String str2="hello";
        //输出true
        System.out.println(" "+(str1==str2));
        //输出true
        System.out.println(" "+str1.equals(str2));

        //S1和S2指向不同的对象  new String() 创建的字符串不是常量,不能在编译期就确定,
        //所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。

        String S1=new String("hello");
        String S2=new String("hello");
        //输出false
        System.out.println(" "+(S1==S2));
        //输出true
        System.out.println(" "+S1.equals(S2));

       //str3和str4指向同一个对象
        String str3="hello";
        String str4=str3;
        //输出true
        System.out.println(" "+(str3==str4));
        //输出true
        System.out.println(" "+str3.equals(str4));

    }
}

总结:在比较字符串是否相同的时候尽量使用equals。

时间: 2024-10-21 08:20:59

string和new string()的区别,以及equals与==的去别的相关文章

Java中String直接复制和new String创建对象的区别以及equals和==的区别和效率对比

编程语言中的问题很多时候我们看似懂,实际不懂,因为很多时候看不到更多的情况,从而缺少对这些看不到的情况的认知和解释. 今天mark一下String和new String()的区别.其实很简单. String s1 = new String("string") // 这是一个对象,对象存放在堆里面 String s2 = "string" //这是一个字符串常量,存放在常量池中,也就是方法区里面 String s3 = "string" // ..

String 和 new String 的区别

String 是常量,一旦创建,值就不能改变 翻开源码你可以看到 它由 final修饰 那么String  和 new String("xx");有什么区别? 下面先看下代码 public class Str { public static void main(String[] args) { String st1 = "abc"; String st2 = new String("abc"); String  st3 = "abc&q

string、stringbuffer与stringbulder区别

  1.  字符串是一个特殊的对象,它一旦被初始化,就不可以被改变,不能有子类,所以String中的方法都不能被复写: 2.  字符串有两种赋值方式 1)  String s1 = "abc";  --在内存中只有一个对对象. 2)  String s2 = new String("abc"):--在内存中有两个对象,"abc"是一个对象,new又创建了一个对象. 3.  equals方法 Object中的equals方法是用于比较两个对象的地址

【转载】String.Empty、string=”” 和null的区别

String.Empty是string类的一个静态常量: String.Empty和string=””区别不大,因为String.Empty的内部实现是: ? 1 2 3 4 5 6 7 8 9 10 11 12 public static readonly string Empty; //这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值是什么呢? //String的构造函数 static String(){     Empty = "";

String.Empty、string=”” 和null的区别

String.Empty是string类的一个静态常量: String.Empty和string=””区别不大,因为String.Empty的内部实现是: 1 2 3 4 5 6 7 8 9 10 11 12 public static readonly string Empty; //这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值是什么呢? //String的构造函数 static String(){     Empty = "";//

转:String.Empty、string=”” 和null的区别

原文地址:http://www.cnblogs.com/fanyong/archive/2012/11/01/2750163.html String.Empty是string类的一个静态常量: String.Empty和string=””区别不大,因为String.Empty的内部实现是: public static readonly string Empty; //这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值是什么呢? //String的构造函

Java中String直接赋字符串和new String的区别 如String str=new String("a")和String str = "a"有什么区别?

百度的面试官问 String A="ABC"; String B=new String("ABC"); 这两个值,A,B 是否相等,如果都往HashSet里面放,能放下吗? 答:A==B 不等,但是A.equals(B)相等:因为相等,所以都往HashSet里面放不下,只能放一个 这个问题涉及到常量池的概念, 问:String str=new String("a")和String str = "a"有什么区别? 答: ==与e

String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简 要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了

【Java】String,StringBuffer与StringBuilder的区别??

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以