String a = "abc";
进行此操作时,是用String类里面的哪个构造器。下面是java api String类的一个构造器
public String(String original) {
int size = original.count; //这里original.count值是从哪里来的 是不是在传参的时候调用了一些初始化
char[] originalValue = original.value;
char[] v;
if (originalValue.length > size) { v = new char[size];
System.arraycopy(originalValue, original.offset, v, 0, size);
} else {
v = originalValue;
}
this.offset = 0;
this.count = size;
this.value = v;
}
进行此操作时,是用String类里面的哪个构造器。下面是java api String类的一个构造器
public String(String original) {
int size = original.count; //这里original.count值是从哪里来的 是不是在传参的时候调用了一些初始化
char[] originalValue = original.value;
char[] v;
if (originalValue.length > size) { v = new char[size];
System.arraycopy(originalValue, original.offset, v, 0, size);
} else {
v = originalValue;
}
this.offset = 0;
this.count = size;
this.value = v;
}
解决方案 »
- applet中加入按钮则无法响应键盘?why?
- 再问个小白问题..谁能给我解释下堆内存和盏内存..最好可以浅显点的解释.
- JCreator中的问题?
- 关于JButton和JTextPane的问题
- 如何配置tomcat使得输入的url如果无扩展名,则默认为.jsp,如http://localhost/aa等价于http://localhost/aa.jsp
- 请问怎样把JAVA APPLET 装载到HTML中啊!
- 我在散点分
- JCreator 与Wireless 如何配置。在线等待中!
- JAVA的类库好烦呀!
- 如何制作鼠标停留在超链接时,出现子菜单(希望各位大哥大姐赐教源代码,谢谢!)
- JAVA上传文件跟下载文件
- 几个面试的问题
String a = "abc";
没有使用构造器,先在栈上查看是否有abc这个字面常量,没有则在栈上创建一个这样的字面常量,然后把a这个引用指向到这个常量上.整个过程并没有在堆上创建对象,所以根本没用构造器.
public String() {
this.offset = 0;
this.count = 0;
this.value = new char[0];
}
String类里面的几个常量在编译期确定,他们的值是编译器来做的?此时构造器还没调用吧。比如说String a = "abc";
然后调用String.count就能得到字符个数,
String a = "abc",在堆中也创建了对象吧。
String a = new String("abc");创建了两个对象,如果没有在堆中创建,那为何有2个对象呢?
楼上的String a = new String("abc");
“abc”应该是在字符串池中创建了对象
又在堆中创建了对象
String是在程序编译的时候就看是否有String然后在字符串池中创建相应的对象的
* Initializes a newly created <code>String</code> object so that it
* represents an empty character sequence. Note that use of this
* constructor is unnecessary since Strings are immutable.
*/
原码里面说的
参数是String original,original.count当然是参数String的信息了。
你这个例子中不会调用这个构造方法。
String a = "abc";创建对象时,是不是调用了某个构造器了,所以在调用public String(String original)参数String就有了count属性了?