1.不能通过访问权限、返回类型、抛出的异常进行重载. (不能定义方法名和参数表相同但权限和返回值类型不同的函数)。如果参数类型不同是可以的。个人理解方法重载只能是对参数列表做手脚,个数、顺序、类型不同.
2.方法覆盖有很多条件,总的讲有两点一定要注意:
(1)子类的方法的返回类型,参数,方法名称,要和父类方法的返回类型,参数,方法名称完全一样,否则编译出错。静态只能重写静态,非静态只能重写非静态。
(2)子类方法不能缩小父类方法的访问权限(反过来是可以的)。
(3)父类静态代码块>子类静态代码块>父类构造代码块>父类构造方法>子类构造代码块>子类构造方法,创建子类对象是,父类所有的初始化动作都应该已经完成。
(4)b静态代码块随着类的加载而加载,虽然没有创建类的对象,如果直接用类名调用类的静态方法,静态代码块会被执行。
3.static关键字:a.用来修饰成员变量和成员方法,也可以形成静态static代码块,b.只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。c.优先于对象存在。d.不能有this和super关键字。e.静态方法只能重写静态方法。F.静态方法可以被重写。
4.继承:
1)在新建一个基类的时候,不论递归调用几次自身的构造函数,最终你都会去调用父类的构造函数,(不是显式调用的话,系统会调用默认无参数的父类构造函数);
2)Java中规定使用 this 和 super 时必须放在构造函数第一行。
3)创建子类对象是,父类的静态代码块和构造代码块都会运行。
5.a.byte short char 不互相转换,变量在运算时会自动类型转换 常量不会自动b.System.out.println("hello"+'a'+1),System.out.println('a'+1+"hello"),c.取模的符号只取决于被除数,short 和byte运算会自动提升为int而不是short。
6.synchronized 个人感觉释放锁的时间就是当代码块中的同步代码没有被执行时就被释放了。
7.符号位为1的二进制数 都会默认为是补码,输出时都会经过按位取反再加1,按位取反时符号位不变。
8.说明
(1):“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。
(2):在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义字符串方式:String str = “Java私塾”;
上面是看了一个帖子说的,自己的理解是都是按值传递,类类型是传递的地址值,特殊的地方是String类。 |
|