韩顺平java视频教程 易忽略知识点总结
1.
在java中char 是两个字节,可以存放一个字。。。
char a = '赵';
采用unicode编码。。。
在java中对char进行运算时,直接当做ascii码对应的整数对待。。。
2.
java中精度很蛋疼
精度由高到低依次为
byte < short <int < long < float < double
只能有低精度向高精度转
而且在java中一个小数比如1.1,它会默认为double
例如:
int a = 1.2; //是错误的,double不能转化为int 因为double的精度比int高
double a = 1; //正确
float a = 1.2; //错误。。。
float a = 1.2f; //用f表示是一个float类型
再比如:
int a =1;
int b = a + 2.3; //错误啊啊啊啊,因为a+2.3结果为double,double不能转为int
3.Java中的静态块
class Parent {static String name = "hello";{System.out.println("parent block");}static {System.out.println("parent static block");}public Parent() {System.out.println("parent constructor");}}class Child extends Parent {static String childName = "hello";{System.out.println("child block");}static {System.out.println("child static block");}public Child() {System.out.println("child constructor");}}public class Monster {static {System.out.println("aaaaaaaaaaaaaaaaaaa");}public static void main(String[] args) {new Child();}}
aaaaaaaaaaaaaaaaaaa
parent static block
child static block
parent block
parent constructor
child block
child constructor
最最最最最最最最最最最最最最最最最最最最最最最最好奇的是。。。。
如果注视掉//new Child();
那么将只输出:
aaaaaaaaaaaaaaaaaaa
对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着去执行子类的静态的内容,当子类的静态内容执行完毕之后,再去看父类有没有非静态代码块,如果有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着去看子类有没有非静态代码块,如果有就执行子类的非静态代码块。子类的非静态代码块执行完毕再去执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。
强烈参考:http://www.cnblogs.com/panjun-Donet/archive/2010/08/10/1796209.html
4.
包的作用
1.区分相同名字的类
2.当类很多时,方便管理
3.控制访问范围