我一直在研究通过“this”关键字从构造函数中调用构造函数。
我在private static void insertTable() throws FileNotFoundException, IOException {
HWPFDocument doc = new HWPFDocument(new FileInputStream("/home/ikadmin/Downloads/in.doc"));
int rows = 3, columns = 3;
Range range = doc.getRange();
Table table = range.insertTableBefore((short) columns, rows);
for (int rowIdx = 0; rowIdx < table.numRows(); rowIdx++) {
TableRow row = table.getRow(rowIdx);
for (int colIdx = 0; colIdx < row.numCells(); colIdx++) {
TableCell cell = row.getCell(colIdx);
Paragraph par = cell.getParagraph(0);
par.insertBefore("" + (rowIdx * row.numCells() + colIdx));
}
}
String newFilePath = "/home/ikadmin/Downloads/out.doc";
OutputStream out = new FileOutputStream(newFilePath);
doc.write(out);
out.flush();
out.close();
}
一书"Thinking in Java, 4th edition"
中找到了以下代码段。
Bruce Eckel
}
我正在尝试理解上面代码的流程,所以我要写下我对它的理解 - 随意纠正它:
通过构造函数Flower()创建一个Flower类型的新对象。对该对象的引用是x。
从Flower()构造函数中调用Flower(int petalCount,String s)构造函数。传入47和hi作为参数。
调用Flower(int petalCount)构造函数,传入47的petalCount。
将petalCount局部变量分配给petalCount实例变量。打印出来。
跳回到Flower(int petalCount,String s)构造函数。将s局部变量设置为s实例字段。打印出来。
跳回到Flower()构造函数并继续执行下一个println语句。
使用第x.printPetalCount()行继续在main()中执行。
完成执行。
此外,我对从构造函数调用构造函数的应用程序感兴趣。可能只是一个构造函数的相同结果(将petalCount和s实例字段设置为对应的值):
public class Flower {
int petalCount = 0;
String s = "Initial value";
Flower(int petalCount) {
this.petalCount = petalCount;
System.out.println("Constructor with int arg only; petalCount = " + petalCount);
}
Flower(String s) {
System.out.println("Constructor with String arg only; s = " + s);
this.s = s;
}
Flower(int petalCount, String s) {
this(petalCount); //calls for Flower(int petalCount) constructor
this.s = s;
System.out.println("Int and String args")
}
Flower() {
this(47, "hi"); //calls for Flower(int petalCount, String s) constructor
System.out.println("Default constructor");
}
public void printPetalCount() {
System.out.println("petalCount = " + petalCount + ", s = " + s);
}
public static void main(String[] args) {
Flower x = new Flower();
x.printPetalCount();
}
答案 0 :(得分:1)
public class Student
{
private int age;
public Student() {
this(21);//this calling to below constructor
}
public Student(int age) {
this.age = age;
}
}