【Java_基础】java中static与final关键字的区别

1.static关键字

经由static关键字修饰的成员为类成员,被所有对象所共享,通常通过类名来引用static成员。类加载的连接阶段将会为静态成员变量在jvm内存的方法区分配空间,并在类的初始化阶段赋初值。

一个类的static成员变量只有“一份”(存储在方法区),无论该类创建了多少对象。看如下的示例:

public class StaticDemo {
    public static void main(String[] args) {
        People p1 = new People(18);
        People p2 = new People(19);
        People p3 = new People(20);

    }

}

class People {
    private static int num;
    private int age;
    public People(int age) {
        this.age = age;
        System.out.println(++num);
    }
}

输出结果:

1
2
3

2.final关键字

1)final修饰变量:意为其值不可改(即为常量),在类的编译阶段成员常量就会被初始化,并保存在class文件的静态常量池中,待类加载的时候再将静态常量池中的常量读取到jvm内存方法区,保存在方法区的运行时常量池中。

2)final修饰方法:表示方法不能被重写。

3)final修饰类:表示该类为终极类,不能被继承。JDK中的一些基本类库被定义成final,例如String,Math,Integer等,这样可以防止对系统造成危害。

final和static关键字的区别:final可修饰局部变量,表示其值不可更改。static用于修饰类成员,所以不能修饰局部变量。

原文地址:https://www.cnblogs.com/leiblog/p/10518187.html

时间: 2024-08-06 17:07:28

【Java_基础】java中static与final关键字的区别的相关文章

java中static,super,final关键字辨析

1:static关键字 利:1)对对象的共享数据提供单独的空间存储. 2)修饰的方法可以直接被类名调用 弊:1)生命周期长. 2)访问出现限制(只能访问静态) 它可以有静态方法,静态类,静态变量 2:super关键字 1)使用super关键字调用父类的成员变量和成员方法. 格式1:super.成员变量 格式2:super.成员方法([参数1,参数2...]) 2)使用super关键字调用父类的构造方法 格式1:super([参数1,参数2...]) 总结:this代表当前对象(可以输出或地址).

Java中static、final用法小结(转)

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

Java中static、final用法小结

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

java中static、final、static final的区别

final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值. final修饰的属性表明是一个常数(创建后不能被修改). final修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承. 对于基本类型数据,final会将值变为一个常数(创建后不能被修改):但是对于对象句柄(亦可称作引用或者指针),fin

Java的static和final关键字的用法

static关键字的用法 static的意思是"'静态的",在java里面可用于修饰属性和方法. static关键字的应用应注意以下几种情形: 1.static作用于某个字段,一个static字段对每个类来说只有一份存储空间,而非static字段是每个对象有一份存储空间. 2.static作用于方法的重要用法是不需要创建任何对象直接调用该static方法,这对于main()方法很重要. 3.static不能应用于局部变量. 4.Java中禁止使用全局方法,所以引入static方法通过类

[java基础]java中static关键字

1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在. 这样做有什么意义呢? 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用sta

Java中static 和final的区别

final定义的变量可以看做一个常量,不能被改变: final定义的方法不能被覆盖: final定义的类不能被继承. final static 就是再加上static的特性就可以了 static 和final是没有直接关系的 static 是在内存中分配一块区域,供整个类通用,所有的类的对象都享有它的共同的值 static 和final的区别 一.static : 什么情况下我们要使用static呢? 1.只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创 建对象. 2

Java中static、final用法

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

Java之static与final关键字

static关键字:可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类 static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量:一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量值也会随之发生变化,如果一个成员变量是static的,那么我们可以通过类名.成员变量名来的方式来使用它(Java推荐使用这种方式) package com.yuanzijian01; class MyStatic{    static int a; } public c