static和final关键字

static:

我们在两种特殊的情况下会使用static关键字:

①我们想用一个存储区来保存一个特定的数据,无论要创建多少个对象,或者根本不创建对象。

②我们需要一个特殊的方法,这个方法没有与类的任何一个方法相关联。

public class StaticInJava {

    static int i = 47;
    static void staticTest(){
        StaticInJava.i++;
    }
}    

final:

在谈final之前,我们首先谈下“常数”的概念:

①编译期常数,永远不会改变。

②运行期初始化一个值,我们不希望这个值发生变化。

final数据

对于基本数据类型,final会将值变成一个常数。对于对象句柄,final会将句柄变为一个常数,但是句柄所指向的对象本身是可以修改的。

可以将自变量设为final属性,在这个方法内部,不能改变自变量指向的句柄。

final方法

对方法加final关键字,继承类不能覆盖或者改写这个方法。

编译器会自动用final方法中实际代码的副本替换方法调用。

final类

对类加final方法,不允许继承。

时间: 2024-11-02 23:20:31

static和final关键字的相关文章

Java的static和final关键字的用法

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

static 和 final 关键字 对实例变量赋初始值的影响

static 和 final 关键字 对实例变量赋初始值的影响 最近一直在看<深入理解Java虚拟机>,在看完了对象内存分配.Class文件格式之后,想深扒一下实例变量是如何被赋上初始值的这个问题的细节. 在2.3.1小节中讲对象创建的时候,讲到内存分配有两种方式:一种是指针碰撞:另一种是空闲列表. 而选择哪种分配方式是由JAVA堆是否规整决定,而JAVA堆是否规整则由虚拟机所采用的垃圾收集器是否带压缩整理功能决定. 我们不管内存分配采用何种方式,当内存分配完成后,虚拟机将分配到的内存空间都初

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代表当前对象(可以输出或地址).

关于static以及final关键字

Static关键字: 可以用来修饰类中的属性.类中的方法.以及具体的某一个类. 1.用于修饰属性: 则表示该属性属于整个类,不论有多少个对象实例,所有的实例共同拥有一个static静态的成员变量.该变量属于整个类,而并非是某个具体的实例,直接通过类名就可以访问对应的成员变量. 2.用于修饰方法: 用static修饰的方法称为静态方法,被修饰的静态方法可以通过一个实例来直接进行方法调用,也可以通过类名来直接调用类的静态方法. 关于静态方法的继承问题: 静态方法是可以被继承下来的,但是静态方法的子类

Java之static与final关键字

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

super 、static、final关键字加深记忆哦!还有父子类构造函数调用问题

使用super关键字可以直接调用父类中的构造方法.属性.普通方法 super调用父类构造方法的操作,与this调用构造方法一样,语句必须放在子类构造方法的首行 java中,构造函数不被继承,只是调用,如果父类有无参构造函数,子类可以写构造函数也可以不写构造函数,如果父类只有带参构造函数,那么子类必须也要写一个构造函数,并且调用父类构造函数在函数第一行.原因大致是因为,构造子类时都是需要先调用父类构造函数的,若父类没有了默认构造函数,子类声明调用自己的构造函数时就有问题了,所以此时(父类只有带参构

static与final关键字详解

接口(interface):接口的地位等同于class.接口中的所有方法都是抽象方法.在声明接口中的方法时,可以使用abstract关键字,也可以不使用.通常情况下,都会省略掉abstract关键字. 可以将接口看作特殊的抽象类(抽象类可以有具体方法,也可以有抽象方法,而接口中只能有抽象方法,不能有具体方法). 类可以实现接口.实现用implements表示,代表了某个类实现了某个接口. 一个类实现了某个接口,那么该类必须要实现接口中声明的所有抽象方法.如果该类是抽象类,那么就无需实现接口中的方

面向对象之static与final关键字

final关键字和static关键字 final关键字 final:在翻译过来的意思就是最后的,最终的,不可改变的意思.在Java中同样也是这个意思.那到底什么时候可以用到final来修饰呢?都知道,继承的应用提高了代码的复用性,通过继承,子类可以对父类的方法进行重写,那如果有些父类中的方法是固定的,不想让子类进行重写,要解决这个问题就要用到final关键字,final关键字可以用来修饰类,类的成员,以及局部变量. 1.修饰类:final修饰的类是最终类,不能有子类,不能被继承,但是可以继承其他

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

1.static关键字 经由static关键字修饰的成员为类成员,被所有对象所共享,通常通过类名来引用static成员.类加载的连接阶段将会为静态成员变量在jvm内存的方法区分配空间,并在类的初始化阶段赋初值. 一个类的static成员变量只有“一份”(存储在方法区),无论该类创建了多少对象.看如下的示例: public class StaticDemo { public static void main(String[] args) { People p1 = new People(18);