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修饰的类不能被继承。

原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/13341653.html