final关键字,static关键字

Final

final的意思为最终,不可变。final是个修饰符,它可以用来修饰类,类的成员,以及局部变量。不能修饰构造方法。

注意

  被final修饰的类不能被继承但可以继承别的类

class Yy {}
final class Fu extends Yy{} //可以继承Yy类
class Zi extends Fu{} //不能继承Fu类

final修饰成员方法:
    1.该方法可以被子类继承,但是不能被重写
    2.从父类那里继承来的方法重写后可以加final关键字

class Fu {
    // final修饰的方法,不可以被覆盖,但可以继承使用
    public final void method1(){}
    public void method2(){}
}
class Zi extends Fu {
    //重写method2方法
    public final void method2(){}
}

final修饰变量(基本类型还是引用数据类型)
    一次赋值,终身不变

final int i = 20;
i = 30; //赋值报错,final修饰的变量只能赋值一次

final修饰成员变量,
    1.成员变量的初始值不能为系统的默认值(需要手动赋初始值)
    2.可以通过构造方法赋值
    3.一次赋1值,终身不变

class Demo {
    //直接赋值
    final int m = 100;

    //final修饰的成员变量,需要在创建对象前赋值,否则报错。
    final int n;
    public Demo(){
        //可以在创建对象时所调用的构造方法中,为变量n赋值
        n = 2016;
    }
}

static关键字

static它是静态修饰符,一般用来修饰类中的成员。

  被static修饰的成员变量属于类,不属于这个类的某个对象。(也就是说,多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中的static成员变量值跟着改变,即多个对象共享同一个static成员变量)

例子:

package com.oricle.School;

public class Student {
    private String  name;
    private int  age;
    private static String  school ="清华大学";
    public Student(String  name,int  age){

        this.age=age;
        this.name=name;

    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }

    public String toString() {
        return "Student [name=" + name + ", age=" + age + ", school=" + school + "]";
    }

}

测试类:

package com.oricle.School;

public class Test {

    public static void main(String[] args) {
        Student s1=new Student("熊大",15);
        Student s2=new Student("熊1",14);
        Student s3=new Student("熊2",13);
        Student s4=new Student("熊3",12);
        s1.setSchool("北京大学");
        System.out.println(s1.toString());
        System.out.println(s2.toString());
        System.out.println(s3.toString());
        System.out.println(s4.toString());

    }

}

结果演示:

注意:
  静态成员只能访问静态成员

class Demo {
    //成员变量
    public int num = 100;
    //静态成员变量
    public static int count = 200;
    //静态方法
    public static void method(){
        //System.out.println(num); 静态方法中,只能访问静态成员变量或静态成员方法
        System.out.println(count);
    }
}

  静态内容存于静态区,优先被扫描,优先于对象存在,不能使用this/super,扫描完静态区,随后再main方法进栈,其中 main方法为静态方法仅仅为程序执行入口,它不属于任何一个对象,可以定义在任意类中。

class Demo {
    //成员变量
    public int num = 100;
    //静态方法
    public static void method(){
        //this.num; 不能使用this/super。
        System.out.println(this.num);
    }
}

定义静态常量

开发中,我们想在类中定义一个静态常量,通常使用public static final修饰的变量来完成定义。此时变量名用全部大写,多个单词使用下划线连接。

定义格式:

public static final 数据类型 变量名 = 值;

例如:

class School {
    public static final String SCHOOL_NAME = "北京大学";
    public static void method(){
        System.out.println("一个静态方法");
    }
}

当我们想使用类的静态成员时,不需要创建对象,直接使用类名来访问即可。

System.out.println(Company.SCHOOL_NAME);
Company.method(); // 调用一个静态方法

注意:

接口中的每个成员变量都默认使用public static final修饰。

所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问。

interface Inter {
    public static final int COUNT = 100;
}

访问接口中的静态变量

Inter.COUNT//类名.静态变量

原文地址:https://www.cnblogs.com/lzw123-/p/9379248.html

时间: 2024-11-03 10:46:56

final关键字,static关键字的相关文章

Java中final和static关键字总结

1.final: final关键字可用于类.方法.变量前. final修饰的类不可被继承,例如java.lang.Math就是一个 final类,不可被继承. final修饰变量,在显示初始化后不可改变变量值,用于常量定义.如果final变量是引用变量,则不可以改变它的引用对象,但可以改变对象的数据(属性). final修饰的方法不可被重写. 错误案例) package com.sp; public final class Fish {        final String name = "鱼

第九天(上) final和static关键字

继承的出现提高了代码的复用性,方便开发,是多态的前提,但随之而来的也有问题,有些累在描述后不想被继承,或者里面的方法功能时固定的,不想让子类重写,可子类继承之后又可以重写该怎么办呢 这个时候就需要一个关键字final  意为 最终的 不可变的 Final是一个比较强的修饰符,可以用来修饰类,类的成员,以及方法 Final修饰类 在类的前面加上final Final类不可以被继承,但可以继承其他类,是个太监.其成员方法也默认为final的,但成员变量是可以改变的 在使用final修饰类的时候,要注

this,final super,static关键字

this关键字 this调用构造方法: 在之前学习方法之间调用时,可以通过方法名进行调用.可是针对构造方法,无法通过构造方法名来相互调用. 构造方法之间的调用,可以通过this关键字来完成. |------构造方法调用格式: this(参数列表); |------构造方法的调用: package com.oracle.demo01; public class student { private String name; private int age; public student(){ //t

Java final、static 关键字

问:谈谈 Java 中 final.finally.finalize 的区别?   答:这道题其实没有任何意义,无非就是考察开发者有没有区分这几个关键字的含义,仅仅关联是因为长得像而已. final 是一个修饰符,如果一个类被声明为 final 则其不能再派生出新的子类,所以一个类不能既被声明为 abstract 又被声明为 final 的:将变量或方法声明为 final 可以保证它们在使用中不被改变(对于对象变量来说其引用不可变,即不能再指向其他的对象,但是对象的值可变),被声明为 final

final与static关键字的区别?(skycto JEEditor)

都可以修饰类.方法.成员变量. static可以修饰类的代码块,final不可以.static不可以修饰方法内的局部变量,final可以. static修饰表示静态或全局,被修饰的属性和方法属于类,可以用类名.静态属性 / 方法名 访问static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块,只会被执行一次static修饰的属性,也就是类变量,是在类加载时被创建并进行初始化,只会被创建一次static修饰的变量可以重新赋值static方法中不能用this和su

Java基础之final、static关键字

一.前言 关于这两个关键字,应该是在开发工作中比较常见的,使用频率上来说也比较高.接口中.常量.静态方法等等.但是,使用频繁却不代表一定是能够清晰明白的了解,能说出个子丑演卯来.下面,对这两个关键字的常见用法做点总结记录,方便之后的回顾以及突击知识点. 二.关键字 final final,一如字面意思 “最终的”,大体在 Java 中表示 “不可变的”.可用来修饰类.方法.方法参数以及变量. 1.修饰类 final 在修饰类的时候,代表的是此类不能被继承.也就是说如果一个类确定不会被继承使用,则

final、static关键字

Final 定义  在实际开发中,有些方法不能直接覆盖掉,不想让子类重写父类的方法,那么就引出final关键字(可以修饰类,变量,成员方法). 基本用法 final可以修饰类,但是该类不能被继承,但可以继承其他类. final可以修饰变量(成员变量,局部变量),(两种方法:一直接赋值,二用构造方法)但是该变量此时变成了一个常量. final可以修饰成员方法,但是该方法不能被重写,但可以被继承. final 修饰局部变量时,可以先定义使用时再赋值. final 不能修饰接口.抽象类.抽象方法. f

Java基础之final和static关键字

一.final        根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的.        final方法不能被子类的方法覆盖,但可以被继承.        final成员变量表示常量,只能被赋值一次,赋值后值不再改变.        final不能用于修饰构造方法.        注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的. 1.fin

final和static关键字的个人认识

final fianl关键字可以修饰类.方法和变量. a. 修饰类 final修饰的类,该类没有子类,该类不能被继承. b. 修饰方法 final可以修饰方法.final修饰的方法不能被重写. c. 修饰变量 final修饰的变量,是一个常量,且只能被赋值 一次,可以是成员变量和局部变量. static a. static用于修饰成员,可以是成员变量和成员方法. b. 被static修饰后的成员,可以直接被类调用. 类名.静态成员 c. 随着类的加载而加载,随着类的消失而消失.类一加载,就有静态

java 中final和static关键字说明

final fianl关键字可以修饰类.方法和变量. a. 修饰类 final修饰的类,该类没有子类,该类不能被继承. b. 修饰方法 final可以修饰方法.final修饰的方法不能被重写. c. 修饰变量 final修饰的变量,是一个常量,且只能被赋值 一次,可以是成员变量和局部变量. static a. static用于修饰成员,可以是成员变量和成员方法. b. 被static修饰后的成员,可以直接被类调用. 类名.静态成员 c. 随着类的加载而加载,随着类的消失而消失.类一加载,就有静态