前言
面向非小白,略过基础的面向对象、变量类型、循环结构等。
除非抠一抠细节…
不排除(基本排除)补充
注:学习使用java版本为1.8,其他版本特性不会记录
基础
没办法我也不知道自己会忘掉啥,先放在这
浮点数
浮点数 float 与 double 除了占用内存大小和精度不同,在赋值时float是需要在后面加f的,否则会被转换为double
数字易读性
在长串数字中,是可以加 _ 提高易读性
只要是正常的位置一般不会有问题
eg:
123_456_789 = 123456789
123_45.678f = 12345.678f
0x7_7 = 0x77
位运算
与:& 或:| 异或:^ 取反:~
异或实现数字交换(避免a+b溢出):
a = a ^ b;
b = a ^ b;
a = a ^ b;
左移:<< 右移:>> 无符号右移:>>>
注:有符号右移补位与符号位相同,即 -3 >> = -2
枚举
等我会用了(用到了)再回来补充
继承
两个类,Father和Son
public class Father {
protected String name;
public Father(String name){
this.name = name;
}
/*public Father(){
this("father");
}*/
public void getName(){
System.out.println("i'm " + name);
}
}
public class Son extends Father {
public Son(String name) {
//对于构造方法,会显示或隐式的调用父类的构造方法
//无参构造方法会隐式调用,有参构造方法则需要显示调用super()
//无法通过this.name = name; 进行构造
super(name);
}
public void testName(){
System.out.println(this.name);
}
}
注:若在父类构造方法中调用被子类覆盖的方法时,会选择使用子类的方法,可能出现错误。
在父子类之间,可以通过声明父类的方式生成子类对象,反之报错
Father father1 = new Father("father1"); //可
Son son1 = new Son("son1"); //可
Father son2 = new Son("son2"); //可
Son father2 = new Father("father2"); //报错
在声明父类后,是无法使用子类的方法的
father1.getName(); //可
son1.getName(); //可
son1.testName(); //可
son2.getName(); //可
son2.testName(); //报错
未完待续