Java暑期学习第十四天日报
一、今天学习了的内容:
今天学习5.3和5.4的内容
二、遇到的问题:
对于静态代码块与静态方法的区别不了解,随后在网上进行查找资料了解到:一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的。静态方法在类加载的时候,就已经加载, 可以用类名直接调用,比如main方法就必须是静态的 这是程序入口。两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的.
三、明日计划:
计划明天学习5.5和综合实例的内容。
今天学习内容的具体实现:
1.static关键字
(1)静态变量
关于静态变量,只需在变量前用static关键字修饰,且静态变量不需要用对象来访问,只需要使用 ”类名.变量“直接访问,且静态变量不属于具体哪一对象。
但关于静态变量的变化,类名和对象名都可以对它进行访问,都可以对它产生作用,因为静态变量是属于整个类的,不是属于某个对象的。
(2)静态方法
关于静态方法,则是在方法名前加上static 关键字修饰,可以使用类名.方法()的形式调用,不需要通过对象名来调用。
(3)静态代码块
static代码块即静态代码块,它可放于随便位置,也可由多个,它不再任何方法内,他的形式主要是 static {} ,JVM加载类时会执行这些静态代码块,静态代码块会优先于构造器执行(即先执行静态代码块,再执行构造器),并且多个静态代码块的按放置顺序执行,且只执行一次。
实例:
public class student2 { static { System.out.println("静态代码块1"); } public student2() { System.out.println("构造方法"); } static { System.out.println("静态代码块2"); } public static void main(String[] args) { student2 s1=new student2(); student2 s2=new student2(); } }
测试截图:
2.final关键字
(1)final属性
final修饰类内的属性,表示该属性是常量,且不可修改。通常使用final的属性都是已经确定的值,如PI=3.14159
(2)final方法
当使用final修饰了方法后,该方法不能被重写,但如果该方法是私有类型的,则该类的子类可以写与之同名的方法。
public class student2 { public final void test() { System.out.println("父类test方法!"); }
public static void main(String[]args) {
student3 s=new student3();
s.test();
}
} class student3 extends student2{
//编译错误,父类方法为final类型,不能重写 public void test() { System.out.println("子类test方法!"); } }
当
public class student2 { private final void test() { System.out.println("父类test方法!"); } public static void main(String[]args) { student2 s=new student2(); s.test(); } } class student3 extends student2{ public void test() { System.out.println("子类test方法!"); } }
测试截图:
(3)final类
被final修饰的类不能被继承。