Code Bye

问几个有关创建对象的问题

1.
在第一个例子当中name是对象也是实例变量?而“Hal Jordan”是对象或实例变量的值?不是对象不能赋值而对象的属性才能赋值的吗?
2.
“圆括号中可包含的参数个数和类型由类本身决定”
假如本人创建了一个对象,那本人怎么才能知道对象能接受多少个参数和什么类型?
3.
package TokenTester;
import java.util.StringTokenizer;
public class TokenTester {
	public static void main(String[] arguments){
		StringTokenizer st1,st2;

		String quote1="GOOG 604.43 -0.42";
		st1=new StringTokenizer(quote1);
		System.out.println("Token 1:"+st1.nextToken);
		System.out.println("Token 2:"+st1.nextToken);
		System.out.println("Token 3:"+st1.nextToken);

		String quote2="RHT@60.39@0.78";
		st2=new StringTokenizer(quote2,"@");
		System.out.println("Token 1:"+st2.nextToken);
		System.out.println("Token 2:"+st2.nextToken);
		System.out.println("Token 3:"+st2.nextToken);
	}
}

系统提示说“无法解析nextToken,或它不是字段”,这是怎么回事?
4.
在ABC efg=new ABC();这条语句中,“调用给定类定义的一个特殊方法”就是指new ABC()这部分?假如是,那就是说new调用了ABC中定义的一个特殊方法?
5.
“创建该对象所需的其它对象”指的是什么对象?例如,在ABC efg=new ABC();这条语句中,创建了什么对象?

解决方案

15

1.
name就是一个对象的索引,或叫句柄。之所以说它也是对象,是原因是,在java的世界里,“万物皆对象”,不必太纠结。
“Hal Jordan”是一个字符串常量,new String(“Hal Jordan”),这个是构造方法,是初始化一个对象的。初始化之后,这个对象不能再修改了,即使你使用 name = new String(“bbb”),这也只是将name这个句柄指向的方向,调整到一个新的对象。
2.
构造方法,看源码啊!没源码看API帮助文档。
3.
看下 JDK API 帮助文档中,StringTokenizer的说明吧。本人就不照搬了。
4.
ABC这个类中,会有一个构造方法ABC(),当ABC没有定义构造方法是,这是默认有的一个构造方法。
5.
例如你的ABC里有个DEF属性,然后你定义的ABC方法如下:
class ABC{
private DEF mem = null;
public ABC(){
mem = new DEF();// 这样,你就在ABC的构造方法里,创建了该对象所需的其它对象
}
}

15

本人感觉你看的教程有问题,顺序不合理。你本人尝试写个类就明白了
例如下面这个,你可以看到,调用带参数的构造方法,其实是先生成一个实例,然后给属性赋值。
public class Cat {
private String name;
public Cat() {
}
public Cat(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
}
对于这个类来说
Cat c = new Cat(“Tom”);
相当于
Cat c = new Cat();
c.setName(“Tom”);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问几个有关创建对象的问题