关于new 对象 一点疑惑
String name = new String();
//这段语句可以理解成创建了String类类型变量name ,然后new出String类的对象?
//还有这句
StringTokenizer one,two;
//创建了StringTokenizer类类型变量 one和 two?
...
one = new StringTokenizer(abc);
two = new StringTokenizer(def);
//创建了两个对象?
没理解好 希望 前辈帮助答疑解惑 谢谢了
------解决方案--------------------类 变量 -》这样只是一个申明,申明某个变量可以引用某个类及其子类的对象。
这里,变量只是一个引用,并不是实际存在的类。
这个变量如果是个成员变量,那么会被自动赋予null值,即空,没有对象。
这个变量如果是个局部变量,那会在没有赋值之前是会被编译器报错的。
String name = new String();
这句话你的理解错了,应该是String name申明了一个引用,变量名为name
new String()产生了一个对象,
= 将新产生的对象引用赋予变量name
StringTokenizer one,two;
这句只是申明了两个引用而已。
one = new StringTokenizer(abc);
two = new StringTokenizer(def);
这里才是创建两个对象赋予两个引用变量。
你的理解误区极有可能是来自C/C++。如果是这样,你大可认为String s之类的申明只是申明了一个指针(当然这个指针不能进行指针运算)。这样你就好理解了。如果你没学过C/C++,那就忽略这句话,免得把你搞得更糊涂。
------解决方案--------------------不知道你的问题是什么,没解译清楚
------解决方案--------------------第一个应该是new一个对象吧,name是一个指向堆内存的引用,第二句只是引用,没有指向堆内存。
------解决方案--------------------String name = new String();
首先定义了一个name变量,然后执行new之后产生了一个地址和一个字符串,地址存在name里