Java 知识点 期末复习(记录一些常考知识点)
- 数组问题
public class Array {
public static void main(String[] args){
int a[] = new int[5]; //数组默认初始化全是零
System.out.println(a[0]);
char b[] = {'a', 'b', 'c'};
System.out.println(b); //字符数组直接打印数组名即可将所有字符输出 因为println()函数对char[]类型进行重载,所以可以直接
System.out.print("H"+"a");
System.out.println('H'+'a'); //只有‘+’运算符连接的操作数至少有一个是String类型时,才会执行字符串连接操作。因此这里执行的是加法:72+97=169
String letters = "ABC";
char[] numbers = {'1', '2', '3'};
System.out.println(letters + " easy as " + String.valueOf(numbers)); //ABC easy as 123
System.out.println(letters + " easy as " + numbers); //ABC easy as [C@44e81672 原因:字符串拼接操作没有对char[]数组单独处理,所以这里numbers就是数组char[]的地址
}
}
运行结果:
0
abc
Ha169
ABC easy as 123
ABC easy as [C@277c0f21
- 多态中的隐藏
class SuperClass{
int data;
SuperClass(){
aMethod(1); //这里父类的aMethod被隐藏了,父类构造函数调用的实际还是子类aMethod。所以本程序中所有的aMethod都是调用的子类的方法
}
public void aMethod(int i){
data += i;
}
public void bMethod(){
System.out.println("Super:" + data);
}
}
class SubClass extends SuperClass{
SubClass(){
aMethod(2);
}
public void aMethod(int i){
data += i * 2;
}
public void bMethod(){
System.out.println("Sub:" + data);
}
}
public class Polymorphism {
public static void init(SuperClass a){
a.aMethod(10);
a.bMethod();
}
public static void main(String[] args){
init(new SubClass());
}
}
运行结果:
Sub:26
- 函数形参传递
public class Reference {
String s = "good";
char a[] = {'a', 'b', 'c'};
public void exchange(char a[],String s){
this.a[0] = 'g';//第一个参数是引用传递所以可以直接用a[0]='g',也可以用this.a[0]
s = "Best";//这里不是引用传递,所以若不用this.s那么就是改变的是局部变量s
}
public static void main(String[] args){
Reference ex = new Reference();
System.out.println(ex.a);
ex.exchange(ex.a,ex.s);
System.out.println(ex.a);
System.out.println(ex.s);
}
}
运行结果:
abc
gbc
good