博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于java new 创建对象的问题
阅读量:5845 次
发布时间:2019-06-18

本文共 826 字,大约阅读时间需要 2 分钟。

  hot3.png

JAVA里面 String a = "aaa"; 和 String a = new String("aaa");有什么区别?

String a = "aaa";用这种方式的时候java首先在内存中寻找"aaa"字符串,如果有,就把aaa的地址给它如果没有则创建String a = new String("aaa");是不管内存中有没有"aaa"都开辟一块新内存保存它可以用以下方法验证下String a = "aaa";String b = "aaa";String c = new String("aaa");System.out.println(a==b);System.out.println(a==c);结果应该是:truefalse此题作为java程序员笔试题几率比较高。

--

--

--

用构造器创建的对象,是不会被放入常理池中的,也很明显这完全是两个对象,只是内容相同罢了,结果当然为false了。用equals()或者System.out.print(a.intern()==b.intern());就返回true了。

-- ()

Java中内存分为几块

-- 

详解 JAVA 创建对象 NEW

-- 

测试代码:

public class NewClass {

    public static void main(String[] args) {
        String a = "aaa";
        String b = "aaa";
        String c = new String("aaa");
        String d = new String("aaa");
        System.out.println(a==b); //true
        System.out.println(b==c); //false
        System.out.println(c==d); //false
    }
}
 

转载于:https://my.oschina.net/klog/blog/794909

你可能感兴趣的文章
2016/01
查看>>
从魔兽世界到激战2看MMO网游角色成长
查看>>
转两好文防丢:Debian 版本升级/降级 & Linux 应用程序失去输入焦点问题的解决...
查看>>
linux学习入门之Linux系统目录结构
查看>>
码农们:完美主义也是一种错
查看>>
switch与ifelse的效率问题
查看>>
HDU - Pseudoforest
查看>>
Nexus杂
查看>>
Android --- GreenDao的实现(ORM框架)
查看>>
用Java发起HTTP请求与获取状态码(含状态码列表)
查看>>
微信内下载APK 微信浏览器apk下载的解决方案
查看>>
js_coding
查看>>
Linux平台Java调用so库-JNI使用例子
查看>>
PCM数据格式,多少字节算一帧
查看>>
python获取当前路径的方法
查看>>
Spring Data JPA
查看>>
Selenium中的xpath定位
查看>>
KACK的处理方法
查看>>
POJ3438 ZOJ2886 UVALive3822 Look and Say【数列】
查看>>
IE6的height小BUG
查看>>