`
yansaibo
  • 浏览: 63322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java string == equals

阅读更多

Java中的String str="abc"; String str=new String("abc");和String str = new String();的区别以及==与equals()的不同。
       
 Java运行环境有一个字符串池,由String类维护。执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。执行语句String str=new String("abc")时,不管字符串池中是否存在字符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。String str = new String()创建了一个空字符串,与String str=new String("")相同。下面举个例子说明:
public class CompareString {
 public static void main(String[] args) {
  String a = new String();
  String aa = "";
  String aaa = new String("");
  String b = new String("asdf");
  String c = new String("asdf");
  String d = "asdf";
  
  System.out.println(a == aa);
  System.out.println(a == aaa);
  System.out.println(a.intern() == aa.intern());
  System.out.println(a.intern() == aaa.intern());
  System.out.println(d == "asdf");
  System.out.println(b == c);
  System.out.println(b == d);
  System.out.println(b.equals(c));
  System.out.println(b.equals(d));
  
  b = b.intern();
  System.out.println(b == c);
  System.out.println(b == d);
  c = c.intern();
  System.out.println(b == c);
 }
}
以上程序的运行结果为:
false
false
true
true
true
false
false
true
true
false
true
true
从运行结果可以验证前面所述的内容。如果不懂String 类的intern()方法的用法可以参考jdk自带的文档.
从CompareString类中我们也可以看出==与equals()的不同之处:即==比较的是两个对象的引用(即内存地址)是否相等,而equals()比较的是两个对象的值(即内存地址里存放的值)是否相等。当然equals()在个别类中被重写了那就例外了。

instance of是判断一个object是不是属于某个类的 

 

如题所问,下面是一个例子,请问为什么要把这个类实例化?有什么好处?
 //实例化
 public static DBConnect instance;
 public static DBConnect getInstance(){
  if(instance == null){
   instance = new DBconnect();
  }
  return instance; 
 } 

这是单例模式,一般用于比较大,复杂的对象,只初始化一次,应该还有一个private的构造函数,使得不能用new来实例化对象,只能调用getInstance方法来得到对象,而getInstance保证了每次调用都返回相同的对象 

分享到:
评论

相关推荐

    Java基础复习(内附String中equals与==区别的分析)

    NULL 博文链接:https://771816006-qq-com.iteye.com/blog/1394972

    String a="hello" String b="hello" a==b 返回true的问题分析

    //在java中有一个常量池,当创建String 类型的引用变量给它赋值时,java会到它的常量池中找"hello world"是不是在常量池中已存在。如果已经存在则返回这个常量池中的"hello world"的地址(在java中叫引用)给变量a 。...

    java中==和equals的区别

    前言 对于开发的程序员小伙伴,大家肯定对于==和equals不陌生,而且会经常用到他...String对象重写了 equals,比较的是变量值 从上面我们笼统的来说明了一下两者的不同,那么接下来我们看看具体的区分 对象类型的比较

    Java中==与equals的区别小结

    主要介绍了Java中==与equals的区别小结,本文总结结论:== 与 equals()比较的内容是不同的,equals()方式是String类中的方法,它用于比较两个对象引用所指的内容是否相等,而 == 比较的是两个对象引用的地址是否相等,...

    java 中String.equals和==的比较

    主要介绍了java 中String.equals和==的比较的相关资料,需要的朋友可以参考下

    ==和equals方法究竟有什么区别

    ==和equals方法究竟有什么区别?  == 操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。  ...

    java初学者必读

    public static String UnicodeToChinese(String s){ try{ if(s==null||s.equals("")) return ""; String newstring=null; newstring=new String(s.getBytes("ISO8859_1"),"gb2312"); return newstring; } ...

    微信公众平台JAVA版【绝对可用】

    微信公众平台JAVA版 【绝对可用】 部分代码: String signature=request.getParameter("signature"); String timestamp=request.getParameter("timestamp"); String nonce=request.getParameter("nonce...

    StringAPI.java

    Java String 类型 API 测试代码 1.String和char[]之间的转换 toCharArray(); 2.String和byte[]之间的转换 getBytes() Arrays工具类 : Arrays.toString(names) String类 String replace(char oldChar, ...

    面试必问Java面试题,对标初级Java

    1.Java泛型(约束类型) 2.Java中函数式编程-Stream流-Lambda表达式 3.JVM虚拟机 4.Springcloud里面的组件 ...18.java中==equals有哪些区别 19.ArrayList和LinkedList有什么区别 20.Java面向对象有哪些特征

    Java中Object.equals和String.equals的区别详解

    主要给大家介绍了Java中Object.equals和String.equals的区别,文中通过一个小示例让大家轻松的明白这两者的区别,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

    最全java面试题及答案

    2. == 和 equals 的区别是什么? 「== 解读」 对于基本类型和引用类型 == 的作用效果是不同的,如下所示: 基本类型:比较的是值是否相同; 引用类型:比较的是引用是否相同; 代码示例: String x = "string"; ...

    java String 类的一些理解 关于==、equals、null

    在对字符串的相等判断,==判断的是地址是否相同,equal()判断的是字符值是否相同。大多数时候==跟equal()的结果都是相同的。

    跟我学Java-day13-String和StringBuilder.pdf

    public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写 public class StringDemo02 { public static void main(String[] args) { //构造方法的方式得到对象 char[] chs = {'a', 'b', 'c'}; ...

    java String类常量池分析及"equals"和"==”区别详细介绍

    主要介绍了java String类常量池分析及"equals"和"==”区别详细介绍的相关资料,需要的朋友可以参考下

    java--scjp考题复习

    equals() B. toLowerCase() C. toUpperCase() D. equalsIgnoreCase() E. none of the above 正确答案: D 931. At the end of these two lines of code: String s="hypertext"; String t=s.substring(2,5); What ...

    Java问题宝典2012版

    11、"=="和equals方法究竟有什么区别? 12 12、静态变量和实例变量的区别? 13 13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math....

    浅谈java字符串比较到底应该用==还是equals

    主要介绍了浅谈java字符串比较到底应该用==还是equals,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java时间格式大全(算法源码)

    public static String dateToStrLong(java.util.Date dateDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(dateDate); return date...

Global site tag (gtag.js) - Google Analytics