是否可以通过使用this();
获得此代码的2输出?我对this();
不太熟悉,因此请提供解释可以帮助我理解这个概念。我要查找的输出是222 Morty和222 Morty 25,或者是否有可能获得111 Rick和222 Morty25。
class Student5 {
int id;
String name;
int age;
public Student5(int i,String n) {
id = i;
name = n;
}
public Student5(int i,String n,int a) {
this(i, n);
id = i;
name = n;
age=a;
}
void display() {
System.out.println(id+" "+name+" "+age);
}
public static void main(String args[]) {
// Student5 s1 = new Student5(111,"Rick");
Student5 s2 = new Student5(222,"Morty",25);
// s1.display();
s2.display();
}
}
答案 0 :(得分:0)
start + 30 == current_time
答案 1 :(得分:0)
您可以按照
<p:remoteCommand name="selectImage" actionListener="#{controller.selectImage}"/>
答案 2 :(得分:0)
关键字 THIS 是Java中的一个引用变量,它引用当前对象。
让我们从示例中了解此关键字:
'__EVENTTARGET'
第二,显示方法将显示分配给该对象的值。如果您只想显式打印ID和名称,则可以创建一个新的显示方法。
(^\d{10}$)|(^\d{2}\-\d{8}$)|(^\d{3}\-\d{7}$)|(^\d{4}\-\d{6}$)
但是,在您的情况下,由于没有针对Rick记录的年龄数据,因此唯一的显示也将起作用。
class Example {
int a,b;
Example(int a, int b) {
//During execution, the compiler is confused. Whether "a" and "b" on the left side
//of the assigned operator is the instance variable or the local variable.
// a=a;
// b=b;
// To overcome this confusion we use THIS keyword to differentiate between
// instiante variable and parameter varaible.
this.a = a;
this.b = b;
}
}
运行:
111 Rick
222莫蒂25
答案 3 :(得分:0)
这是指当前对象。
当您将对象创建为new Student5(222,"Morty",25);
时,它将调用具有参数(int, String, int)
的Student5类构造函数
即new Student5(int,String,int);
您的情况是
public Student5(int i,String n,int a){
this(i, n);
id = i;
name = n;
age=a;
}
现在您可以使用i,n,a初始化变量。 当然您已经做到了,但是您在以下步骤中两次分配了值
this(i, n);
id = i;
name = n;
age=a;
现在将其更改为
public Student5(int i,String n,int a){
this(i, n);
age=a;
}
在这里this(i,n)检查带有Student5(int,String)类型的客户。 因此,转到下面的代码并进行初始化,如果您错过了构造函数,则会产生编译错误。
public Student5(int i,String n){
id = i;
name = n;
}
display()打印输出取决于您调用该方法的对象。
Student5 s1 = new Student5(111,"Rick");
s1.display()
打印111里克。 因为您要在s1上调用显示,所以它不知道s2对象数据
Student5 s2 = new Student5(222,"Morty",25);
s2.display()
打印222 Morty 25
因为您正在s2上调用显示,所以它不知道s1对象数据
回答您的问题“是否有可能获得111 Rick和222 Morty 25。”
是的,因为两个对象都可用,所以可以在main方法中进行操作。 在两个对象上调用显示方法。
答案 4 :(得分:0)
简短的答案是 否 。
在创建2个Student
对象时,如下所示:
Student5 s1 = new Student5(111,"Rick");
Student5 s2 = new Student5(222,"Morty",25);
它们没有任何链接。
因此,不可能像这样从s2 Student
的{{1}}打印s1 display()
的输出。
链接可以通过在您的Student
上添加 buddy 引用来实现。
Student5
这将打印
222莫蒂25
111瑞克&222莫蒂25
222 Morty 25&111 Rick
class Student5 {
int id;
String name;
int age;
Student5 buddy;
public Student5(int i,String n) {
id = i;
name = n;
}
public Student5(int i,String n,int a) {
this(i, n);
age = a;
}
public void setBuddy(Student5 b) {
this.buddy = b;
b.buddy = this;
}
private String getInfo() {
StringBuffer buff = new StringBuffer();
buff.append(id+" "+name);
if (age > 0)
buff.append(" "+age );
return buff.toString();
}
public void display() {
if (buddy != null)
System.out.println(this.getInfo() +" & "+ buddy.getInfo());
else
System.out.println(this.getInfo());
}
public static void main(String args[]) {
Student5 s1 = new Student5(111,"Rick");
Student5 s2 = new Student5(222,"Morty",25);
s2.display();
s1.setBuddy(s2);
s1.display();
s2.display();
}
}
困惑:
this
是Java对象中对当前对象的Java引用,例如this
this.name
是对当前Object的无参数构造函数的引用。通过构造函数重载(具有不同类型/参数数量的构造函数)
和构造函数链接(从另一个重载的构造函数调用一个构造函数)
您可以避免重复代码。
同时使用this()
和this
的夸大示例:
this()
如果您调用public Student5() {
this.age = 0;
}
public Student5(int i) {
this();
this.id = i;
}
public Student5(int i, String n) {
this(i);
this.name = n;
}
public Student5(int i, String n, int a) {
this(i, n);
this.age = a;
}
,则执行链如下:
学生5(222,“ Morty”,25)
调用构造函数-> Student5(222,“ Morty”)
调用构造函数-> Student5(222)
调用构造函数-> Student5(),将年龄设置为0
返回到设置id的Student5(222)
返回到设置名称的Student5(222,“ Morty”)
返回设置年龄的Student5(222,“ Morty”,25)