最近因为项目的原因,比较心烦意燥,索性把 Java 从头开始理一遍,期间发现很多新的东西,受益匪浅,自己修行还差得远。
----写在前面的跟题记差不多的东西
1.多态
多态分为两种,即:
1.编译时多态,从JVM的角度来讲,静态分派;即重载
2.运行时多态,从JVM的角度来讲,动态分派;即重写
重载:相同方法名,不同参数。在代码中,同一个类名下,可以编写多个同名,入参不同(这点是必须项),返回值可以不同的方法
在调用时,根据入参调用不同的方法。
重写:一般是伴随着继承,由子类继承父类,并重新定义父类中的方法。
注意两点:我们有一个父类Father,有一个子类Children
1.向上转型是自动的;Father f = new Children()
2.向下转型需要强转;Children c = (Children)new Father()
2.final关键字
一般面试都很容易问到,很好答,但是想得高分也很考验基础,我查看了很多资料,学习并记录如下。
1 .被final修饰的类不可以被继承
2. 被final修饰的方法不可以被重写
3. 被final修饰的变量不可以被改变
这里特别注意下第三点,被final修饰的变量不可变,指的是变量的引用不可变,即指向变量的地址不可变,而
变量的内容是可以改变的。
3.static关键字
1. static静态变量 2. static静态方法 3. static静态代码块 4. static静态内部类 5. import static
① 。根据JVM的类加载机制,静态资源是在类初始化时加载,并且只加载一次,类初始化优先于类的new,可以看出静态变量是在类new之前就已经
加载的,静态资源的加载顺序优先于非静态资源,所以我们可以很容易知道,静态资源不可以引用非静态资源,静态资源可以引用静态资源,非
静态资源可以引用静态资源。
②。由①可知,静态代码块也是在类初始化时就已经加载了的,也只加载一次。注意几点:
1. 多个静态资源的加载顺序是严格按照静态资源的定义顺序来加载的。(语句在源文件中的出现顺序);
2 .静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问;
3. 静态代码块是严格按照父类静态代码块->子类静态代码块的顺序加载的,且只加载一次;
③关于import static
贴两段代码 :
import static java.lang.Math.*;
public class A{
public static void main(String[] args){
System.out.println(sin(2.2));
}
}
引入Math包下的所有静态资源,用到其中某个方法时,可直接写方法名使用,例如sin;
import static java.lang.Math.sin;
public class A{
public static void main(String[] args){
System.out.println(sin(2.2));
}
}
引入Math包下的某个具体静态资源,可直接写方法名使用,例如sin;
以上所得均来自博客 www.cnblogs.com/xrq730/