java日记一

setAccessible(true),取消java语言的访问检查。反射时关闭安全检查,避免安全检查耗时。
通过反射可以实现私有构造函数对象的实例化。只需设置setAccessible(true),constructor.newInstance();不能使用Class直接创建实例,没有setAccessible方法,会抛出异常。
 
只拥有私有构造函数的类不能继承。
构造函数第一行一定会调用supper()或者this(),只能放在第一行,且必须调用,不写会自动调用父类的无参构造函数,如果父类没有无参构造函数,也不手动调用,无法通过编译,会报红,必须手动调用父类的有参构造函数。
protected可以在本包和子类中访问,缺省只能在本包中访问,子类中无法继承缺省类型方法,即继承后无该方法。
 
instanceof
二目运算, 对象 instanceof 类型
对象不能为八种基本类型,float,double,int,long,boolean,char,byte,short,会报编译错误,Integer,Double等类型可以正常使用。
对象为null,返回false。
对象是本身或者子类或者实现了该接口,返回true。
父类对象 instanceof 子类,返回false。
如果对象类型确定时候,cast转换类型失败会报编译错误,例如 Person p1 =  new  Person(); System.out.println(p1  instanceof  String);编译报错。
如果(String)p1编译错误,那么p1 instanceof String也会报编译错误。
接口,Person p1 =  new  Person(); System.out.println(p1  instanceof  List);打印false,因为list是接口,检查时候会遍历对象实现的接口数组。
除了Double,String等等类型外,其它引用类型用instanceof直接判断是否实现了某个接口,都不会报编译错误,运行时也不会发生异常。但Double和string等类型,直接使用instanceof编译错误,需转换成object类型后才能使用instanceof。即转换为不确定类型。
父类转子类,子类 = (子类)父类对象,编译通过,但运行时会抛出ClassCastException异常。因为子类中有父类没有的方法。子类可以转父类,转换后变成父类对象,无法调用子类方法。转换成父类对象后再次转为子对象,不会报编译错误(父类转子类不会报编译错误),运行时可以正常使用,不会抛出ClassCastException异常,子类方法也可正常使用。子类对象可以直接赋值给父类类型,例如B是A的子类,A a = new B();父类转子类需要显示转换。
子类和父类中可以同时定义public static final a = 1,不会引起冲突。
 
class Base{
    public Base(){
        test();         
    }
    public void test(){
        System.out.println("父类中的test方法");   
    }}class Sub extends Base{
    private String name;
    public void test(){     
        System.out.println("Sub name length:"+name.length());   
    }           
    public static void main(String[]args){
        //会引起空指针异常,首先会执行父类的无参构造方法,并调用test()方法,由于实际对象为Sub,则根据多态会调用子类重写的test方法,又因为子类name变量还没有被初始化,从而引起空指针异常.
        Sub sub = new Sub(); //Exception in thread "main" java.lang.NullPointerException
    }}
 
 
double dd = .3;//表示0.3
float ff = 4.f;//表示4.0 java中可以简写。
int i = 1_00_123;//表示100123,jdk1.7语法。
 
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值