java 初级对象问题
来源:互联网 发布:网络p2p的四条红线 编辑:程序博客网 时间:2024/06/05 08:12
这是在论坛里看到的问题,这里将自己的理解贴出;
http://bbs.csdn.net/topics/390761915?page=1#post-397364421
问题:
String s =””,String s1= “abc”,String str =null,String tp = s;
创建了几个对象?
A.2
B.3
C.1
我的理解:
String s1 = "abc";// 能编译成功,也能执行,既然s1能有toString属性,那么s1肯定是Object;System.out.println(s1.toString());String s2 = "";// 能编译成功,也能执行,只是输出的也是"",既然s2能有toString属性,那么s2肯定是Object;System.out.println(s2.toString());// String s3 =// null;//可以通过编译,但是运行的时候会抛出NullPointerException,因此次处没有创建新的对象;// System.out.println(s3.toString());String tp = s2;// 此处是s2的地址传给tp,是址传递,所以也没有创建新对象;System.out.println(tp == s2);// 输出trueSystem.out.println(tp.equals(s2));// 输出trueString tp1 = "";/* * String类型的数据是放在内存的data segment里面的,而8中基本数据类型是存放在栈中的常量池; * 执行此句的时候,虚拟机会首先在内存的data segment搜索是否已经存在空字符串"",如果没有, * 则创建.如果已经有了,则直接将tp1指向这个地址,因此也没有创建新的对象,这种机制类似常量池; * 这种数据的共享是由编译器完成的,tp1的修改并不会影响到s2; */System.out.println(tp1 == s2);// 输出trueSystem.out.println(tp1.equals(s2));// 输出true}
0 0
- java 初级对象问题
- JAVA初级:面向对象
- java表达式问题 初级问题
- java 初级类型转换问题
- 第一阶段:Java初级 ------- 面向对象基础
- Java初级笔记_面向对象1
- Java初级笔记_面向对象2
- Java初级笔记_面向对象3
- Java解惑1-4初级问题
- java解惑--谜题4:初级问题
- 关于一些 java初级的问题
- 初级问题
- 初级问题
- 初级问题
- Java初级--抽象类,接口及对象的类型转换
- 初级程序员升入Java面向对象思想的感悟
- java初级之24对象的创建和使用
- java初级之25对象类型的参数传递
- HashMap之equals与hashCode小陷阱
- 深入Java单例模式
- 关于商享网
- 内核怎样管理你的内存
- 再谈HashMap-由一个实际问题引发的对HashMap设计吐嘈
- java 初级对象问题
- 11.1
- zTree实现地市县三级级联Action类
- javascript深入理解js闭包
- HashMap源码分析
- UML 使用
- 串(C++实现)
- UML-活动图(Activity Diagram)
- Java性能优化学习之 巧用线程池ThreadPool