final,static静态和非静态,初始化和代码块的区别父类和子类中都有static变量时的初始化顺序重写equals() instanceof强制转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了final,static静态和非静态,初始化和代码块的区别父类和子类中都有static变量时的初始化顺序重写equals() instanceof强制转换相关的知识,希望对你有一定的参考价值。
final:类不能被继承,方法不能被重写,属性值不能被修改(常量);
可以调用;
static静态常量-----
不需要创建对象,可以直接调用类里面的属性,方法;
示例如下:
加了static说明它是属于整个类的,每个对象值都一样,如下图所示:size是静态的,所以当在下面t1对象中改变size的值时,整个类中的size值都变了;然后作为普通属性的length,当在t1对象中改变其值,并不会改变原始值;
静态方法不能调用非静态的方法和非静态的属性,也不能打印非静态的方法和非静态的属性;可以在静态方法中new一个对象,通过对象来调用非静态的方法和属性;
非静态的可以调用静态的属性和方法;
很少用static来修饰类,因为需要一个外部类来调用静态内部类;
代码块-------
只要在main中创建对象,代码块就会被执行
父类和子类中都有static变量,初始化顺序--------
父类--静态变量/父类--静态初始化块(代码块)
子类--静态变量/子类--静态初始化块(代码块)
子类main方法
父类--变量/父类--初始化块
父类--构造器(构造方法)
子类--变量/子类--初始化块
子类--构造器(构造方法)
总结:静态优先!父类优先!然后初始化块优先级大于构造方法,变量和初始化块同级,但是执行顺序从上往下,所以一般先定义变量
初始化和代码块的区别------
static比非静态优先级高,放下面,上面也可以用;然而非静态的就不可以!
顺序----
Object------中的equals()方法,是用来判断一个字符串是否相等,若有多个字符串,比如说两个对象是否相等,可以通过重写equals()来实现
instanceof:判断类型
if(obj instanceof news){
if(id==(((news)obj).getid()){//强制转换
}
}
以上是关于final,static静态和非静态,初始化和代码块的区别父类和子类中都有static变量时的初始化顺序重写equals() instanceof强制转换的主要内容,如果未能解决你的问题,请参考以下文章