2 hu4303105 hu4303105 于 2017.08.28 23:39 提问

java基础问题,求大神详解!

我知道String s=new String("123"),可能创建了两个对象,也可能是一个。当常量池中已经存在了“123”这个字符串,那么它只创建一个对象,否则创建两个。那么,最关键的问题来了!!!String s1 = new String("12")+"3",它创建了几个对象????

5个回答

Small_Mouse0
Small_Mouse0   Rxr 2017.08.29 09:54

【String s1 = new String("12")+"3"】,,可以拆分为两句

        String s3 = new String("12");
        String s4 = s3+"3";

会牵扯三个对象,,
"12",这个会产生一个对象,只不过这个对象没显示的表现出来。
new String("12"),这个也会产生一个对象,传入的"12"是个对象
s3+"3",,还会产生一个对象。

图片说明

上图仅供参考,,如有问题还可追问,,(个人见解,如有错误,可以讨论)

q975583865
q975583865 666
11 个月之前 回复
foxyao_it
foxyao_it   2017.08.29 09:04

String s=new String("123");
String s1 = new String("12")+"3";
System.out.println(s==s1);
System.out.println(s=="123");
结果:
false
false

是2个对象

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2017.08.29 09:01

Java字符串是存储在 常量池还是在堆中,这个问题都被问烂了,但是如果想要真正理解,还是需要看JVM底层的知识的。
我以前弄懂过,又忘了。我印象中是创建了两个对象引用,一个指向s1,一个是无名对象new String("12")

huang931027
huang931027   Rxr 2017.08.29 09:32

你这样想,new一个新对象他就有了一个自己的物理地址。这个问题确实都被问烂了,百度出来都一大片,何必在这里问

weixin_37408595
weixin_37408595   2017.08.29 10:50

答案应该是两个,s,s1,s2只是引用,不是对象!对象就是“3”和“12”,字符串自己本身才是String对象。
String s = new String("3");
这样只是声明了一个指向String对象“3”的一个引用s(同时也创建了对象“3”)。

weixin_37408595
weixin_37408595 忘了还有一个对象“123”,是“3”+“12”出来的。
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
JAVA大神班第一期2016年
JAVA培训视频教程,课程内容涉及JAVA各个领域,老师授课富有激情又通俗易懂,知识点分析深入,举例贴近生活不乏幽默生动,注重引导学生思维。 讲课风格:课堂幽默生动,思维行云流水,授课水到渠成。另赠:实战Java高并发程序设计 下载地址:http://feixueteam.net/thread-1084-1-1.html
java从菜鸟到大神的成神之路学习路线_me
JAVA从菜鸟到大神的学习路线
2016年小马哥大神班JavaEE第一期
小码哥培训一期全套教程视频,包含了javase、java基础增强、mysql、jdbc、Javaweb、框架等,内容十分丰富
JAVA基础重点难点笔记
1 JAVA中为什么没有多继承机制?是因为菱形继承的问题。 解释: 两个父类继承自同一个基类,两个父类里有一个相同的方法,那么作为子类应该怎么继承这个方法?父类1的还是父类2的?但是实现多个接口则没问题,因为不管哪个接口,调用的都是同一个实现。2 面向对象设计原则• 单一职责原则 – 一个类,最好只做一件事。 • 开放封闭原则 – 软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,
小码哥大神班一期全套视频2015年5月至10月
http://www.coderbar.cn/?fromuid=79 课程目录: 日期 星期 分类 课程(空内容代表放假) 授课老师 备注 难度 2015/05/25 星期一 开班典礼 注意:课表每个月都会变化一次,在每个月的月底会决定
小码哥java大神班
小码哥java大神班5期视频,有p2p项目,基础加强等等》
spring3.2入门到大神(备java基础、jsp、servlet,javaee精髓)
框架介绍,IoC思想、DI依赖注入、Bean的实例方式、Bean种类、Bean作用域范围、Bean生命周期管理、依赖注入、注解装配Bean、整合Junit测试、WEB开发集成spring、AOP思想、AOP原理解剖、spring 传统aop开发、JdbcTemplate模板使用、C3P0数据源配置、声明式事务管理、注解事务管理。SSH xml整合、SSH注解整合。
java大神潜在的十个特征
java以其简单,稳健,高效的特性对于编程来说是个不错的选择,那么我们该如何学习掌握这门语言呢?下面列举了一些关于学习java的一些心得,希望对大家有所帮助 1.订阅最新资讯 学习新技术首先要做的是订阅相关的技术社区论坛。我们并非是独行者。很多人都和我们一样在研究着相同的技术。只对某个框架概念做验证是不难,但是当你将这些概念应用到实际的项目中时,那么各种各样的问题,各种在搜索不到解决方
MySQL---数据库从入门走向大神系列(一)-基础入门
从最开始的创建数据库,创建表,创建列开始写起,再到常用的EXISTS函数,SELECT 复杂查询,模糊查询LIKE,创建视图 等深入学习。 为了对单词加深印象,全部在DOS下演示! 创建数据库、表 create database hncu character set utf8; 创建名为hncu编码为utf-8的数据库。 use hncu;  打开hncu这个数据库。(必须
最新大神班小码哥视频
下载地址:http://www.feixueteam.net/thread-694-1-1.html