以下两种方法之间有什么区别?
条件1:
String abs ="newpage";
classA oa=new classA(abs);
条件2:
String abs ="newpage";
classA oa=new classA();
oa.setMystats(abs);
答案 0 :(得分:3)
不同之处在于,在一种情况下,您将参数传递给构造函数,而在另一个类中,您调用的是无参数构造函数,然后将参数传递给方法。
所以,第一种情况会像classA
这样:
class classA {
String value;
classA(String value) {
this.value = value;
}
}
......第二个是这样的:
class classA {
String value;
void getMystats(String value) {
this.value = value;
}
}
哪个更合适取决于您要为该参数赋予的含义。简而言之,如果您的类的实例在没有该值的情况下不能存在,则应该在构造函数中设置它。如果在创建对象后可以自由更改该值,则需要一种方法来设置它。
答案 1 :(得分:0)
classA oa=new classA(abs);
调用classA的构造函数,该构造函数接受String参数。
oa.getMystats(abs);
调用带有String参数的classA的getMystats方法。
详细了解如何将参数传递给构造函数和方法:http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html
答案 2 :(得分:0)
在条件1中 您只是将参数传递给构造函数。 因此,您可能会将此值保存在内部变量中。 例如:
String myString;
classA(String x){
myString=x;
}
在条件2中: 您正在将参数传递给类中的Method,您可能需要对参数执行某些操作。否则你不会通过它。
String myString;
classA(String x){
myString=x;
}
/**
Returns the number of time that x is myStirng.
*/
int getMystats(Stirng x){
return myString.split(x).length();
}