当前位置: 技术问答>java相关
两个JAVA的基本概念问题,谢谢!
来源: 互联网 发布时间:2015-09-19
本文导语: 1、书上说 String test = "this is a string"; 的test是一个对象, 我不明白,test 难道不是一个字符串变量吗? 创建对象不是要这样吗: String test = new String(); 谢谢! 2、JDK装好后,那些类包到底放在哪里?是在 dt...
1、书上说 String test = "this is a string"; 的test是一个对象,
我不明白,test 难道不是一个字符串变量吗? 创建对象不是要这样吗:
String test = new String(); 谢谢!
2、JDK装好后,那些类包到底放在哪里?是在 dt.jar和tools.jar里面吗,
我把dt.jar和tools.jar解开后,好像没有找到书上说的那些类包。
|
String test = "this is a string"和 String test = new String("this is a string");效果上一样,但本质是有区别的,前一个创建时首先回到内存池中寻找是否存在该字符串,如果存在直接拿来,如果不存在则新创建一个,而后者无论如何都新创建一个字符串对象。所以这就是很多书上说的推荐用前者而不用后者。
jdk的类包在jdkjrelibrt.jar里面
jdk的类包在jdkjrelibrt.jar里面
|
1、String是java中一个特殊的对象,他不属于基本数据类型,但又可以象基本数据类型一样当左值使用。
其实String test1 = "this is a string",它是把test指向一个字符串池(不从新分配内存)。
而String test2 = new String("this is a string");是开辟一块新的内存区域。
所以:
String test1 = "this is a string";
String test2 = new String("this is a string");
test1 = test2 ? yes, no
肯定返回no,因为他们指向的地址不一样。
其实String test1 = "this is a string",它是把test指向一个字符串池(不从新分配内存)。
而String test2 = new String("this is a string");是开辟一块新的内存区域。
所以:
String test1 = "this is a string";
String test2 = new String("this is a string");
test1 = test2 ? yes, no
肯定返回no,因为他们指向的地址不一样。
|
String test = "this is a string";
實際上等同與;
String test=new String("this is a string");
在jdklib*.jar中
實際上等同與;
String test=new String("this is a string");
在jdklib*.jar中
|
String是类,创建的test对象具有一些方法的
test.~~~~
test.~~~~
|
直接付值是一种初始化方法,java 的一些"基本类型"可以这样操作
|
對啊,如果是先new,這時String s2="this",看到對象池里應該有"this"了吧,如果有就不創建,那s2和s1就是相同的對象了(內存地址相同)?
可是if(s1==s2)還是false啊
可是if(s1==s2)還是false啊
|
1.书上说的没错,java文档里有的。
String test = "this is a string";
和
String test = new String();
完全一样,对string.
2.在jdklib*.jar中
String test = "this is a string";
和
String test = new String();
完全一样,对string.
2.在jdklib*.jar中
|
用new 创建的对象是存在于堆中的,而用一般方法建立的是存在于堆栈中的。
而且最好把变量看成一个某个对象类型的句柄,这样比较好理解的。
而且最好把变量看成一个某个对象类型的句柄,这样比较好理解的。