1.static的使用:
- 在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static代码块:static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
2. abstract的理解
abstract(抽象)可以修饰类、方法
如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。 abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。 abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。 final和abstract永远不会同时出现。
当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。
3.Overload 和 Override
重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。
-
方法重载规则
被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);
被重载的方法可以改变返回类型;
被重载的方法可以改变访问修饰符;
被重载的方法可以声明新的或更广的检查异常;
方法能够在同一个类中或者在一个子类中被重载。
无法以返回值类型作为重载函数的区分标准。 -
方法的重写规则
参数列表必须完全与被重写方法的相同;
返回类型必须完全与被重写方法的返回类型相同;
访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
父类的成员方法只能被它的子类重写。
声明为final的方法不能被重写。
声明为static的方法不能被重写,但是能够被再次声明。
子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。
重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
构造方法不能被重写。
如果不能继承一个方法,则不能重写这个方法。
4.访问控制符 public、protected、�default、private区别
5.基本数据类型
注:ASCII码中,一个汉字占两个字节,一个英文字母占一个字节。
6.java中abstract,interface,final,static的总结
抽象类:abstract:
只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类;
抽象类中可以有具体的实现方法;
抽象类中可以没有抽象方法;
抽象类中的抽象方法必须被它的子类实现,如果子类没有实现,则该子类继续为抽象类
抽象类不能被实例化,但可以由抽象父类指向的子类实例来调用抽象父类中的具体实现方法;通常作为一种默认行为;
要使用抽象类中的方法,必须有一个子类继承于这个抽象类,并实现抽象类中的抽象方法,通过子类的实例去调用;接口:interface:
接口中可以有成员变量,且接口中的成员变量必须定义初始化;
接口中的成员方法只能是方法原型,不能有方法主体;
接口的成员变量和成员方法只能public(或缺省不写),效果一样,都是public
实现接口的类必须全部实现接口中的方法(父类的实现也算,一般有通过基类实现接口中个异性不大的方法来做为适配器的做法)
接口的多重继承:extends关键字:final
可用于修饰:成员变量,非抽象类(不能与abstract同时出现),非抽象的成员方法,以及方法参数
final方法:不能被子类的方法重写,但可以被继承;
final类:表示该类不能被继承,没有子类;final类中的方法也无法被继承.
final变量:表示常量,只能赋值一次,赋值后不能被修改.final变量必须定义初始化;
final不能用于修饰构造方法;
final参数:只能使用该参数,不能修改该参数的值;关键字:static:
可以修饰成员变量和成员方法,但不能修饰类以及构造方法;
被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享
static变量和static方法一般是通过类名直接访问,但也可以通过类的实例来访问(不推荐这种访问方式)
static变量和static方法同样适应java访问修饰符.用public修饰的static变量和static方法,在任何地方都可以通过类名直接来访问,但用private修饰的static变量和static方法,只能在声明的本类方法及静态块中访问,但不能用this访问,因为this属于非静态变量.static和final同时使用:
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。
- int 和 integer 的区别:
int是基本的数据类型;
Integer是int的封装类;
int和Integer都可以表示某一个数值;
int和Integer不能够互用,因为他们两种不同的数据类型;