PTA上的两个小测试,虽然题都是自己做的,但是对于结果并不算满意,简单做一下错题汇总。
错题的验证代码都写到一个程序里,如下:
class People {
String name;
public People() {
System.out.print(1);
}
public People(String name) {
System.out.print(2);
this.name = name;
}
}
class Child extends People {
People father;
public Child(String name) {
System.out.print(3);
this.name = name;
father = new People(name + ":F");
}
public Child(){
System.out.print(4);
}
}
class Person{}
class Teacher extends Person{}
class Student extends Person{}
public class Demo {
static int[] a = new int[10];
public static void main(String[] args) {
int[] b = new int[10];
String c[] = {"qwer", "asdf", "zxcv"};
System.out.println("a[5]="+a[5]+" b[5]="+b[5]
+" c[1]="+c[1]);
//-----------------------
int[] a={10,3,1,3,53,23,232,90,21,33};
for(int q:a){
System.out.print(q+" ");
}
System.out.println();
//----------------------
int f[]=new int[20];
f[0]=1;
f[1]=1;
for(int i=2;i<20;i++){
f[i] = f[i-2]+f[i-1];
}
for(int i = 0;i<20;i++){
System.out.printf("%12d",f[i]);
if((i+1)%4==0)
System.out.println();
}
//------------------------
/*int 22 = 1;
System.out.println(22);*///即22不能作为Java的语言标识符
//--------------------
String str="ABCDE";
String sub = str.substring(3);
System.out.println("sub="+sub+" str="+str);
String cat = str.concat("XYZ");
System.out.println("cat="+cat+" str="+str);
//---------------------
System.out.println(Math.ceil(-4.4));
//--------------------------------------
new Child("mike");
//-----------------------------
Person p;
Teacher t;
Student s;
//p,t and s are all non-null.
if(t instanceof Person) {s=(Student)t;}
}
}
错题的文件总结发在资源里面。
在此对其中重点简要总结如下:
-
Java提供默认的空构造函数,故构造函数可略。构造函数必须重名、可以重载。
-
abstract不能修饰字段。既然是抽象方法,当然是没有实现的方法,根本就没有body部分。
-
字符串的substring()方法和concat()方法各返回一个字符串,但并不改变调用这两个方法的字符串的内容。
“错而能改,善莫大焉。”不要沉溺于自己已经学会的或者熟练掌握的东西,而是要重点解决自己不熟练的地方,这样才能真正地积累重要的知识。