`

static、final关键字

 
阅读更多

一、final

1.final变量:

      当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变(即当final 修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化(比如说不能从10变为20);如果final 修饰一个引用类型时,表示该引用类型不能再指向其他对象了(即不能再new出新对象),但该引用所指向的对象的内容是可以发生变化的。)。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。在声明final类型的成员变量时不赋初值,但在类的所有构造方法中都为其赋上初值

     当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

     另外方法中的内部类在用到方法中的参变量时,此参变也必须声明为final才可使用

 

2.final方法

     如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
使用final方法的原因有二:
    第一、把方法锁定,防止任何继承类修改它的意义和实现。
    第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

 

3.final类

     final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。

 

二、static

      被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。 
      static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用。

     用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块。

 

1.static变量

      按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:
    对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

 

2.static方法

      静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。同时,静态方法只能继承,不能重写。 不能在静态方法中使用this关键字。

 

3.static代码块

      static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

 

4、static和final一块用表示什么
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java编程中static和final关键字的陷阱.pdf

    Java编程中static和final关键字的陷阱.pdf Java编程中static和final关键字的陷阱是Java开发中两个重要的关键字,但是它们的使用也存在一些陷阱,需要开发者注意掌握。 static关键字可以用于修饰属性、方法和类。...

    java中final关键字和static关键字详细用法

    Java中的`final`和`static`关键字是编程中非常重要的两个修饰符,它们分别用于不同的场景,以确保代码的稳定性和高效性。 首先,`final`关键字主要用于表示不可变性。它可以用来修饰类、方法和变量。对于类,如果一...

    第二十二天,对抽象类,static关键字以及final关键字的学习

    第二十二天,对抽象类,static关键字以及final关键字的学习

    Java final关键字

    此外,`final`关键字还有其他用途,如`final`修饰的匿名内部类和`final`局部变量在匿名内部类中的特殊规则,以及`final`与`static`结合时的静态常量等。理解并熟练应用`final`关键字对于编写高效、安全的Java代码至...

    final关键字和static_用法

    ### Java中的final关键字详解 #### 一、final的概述与用途 `final`关键字在Java中扮演着重要的角色,它通常被用来表示“不可变”的特性。`final`可以用来修饰类、方法以及变量,其核心目的是为了保护数据的安全性...

    深入理解Java中的final关键字_动力节点Java学院整理

    public static final String LOAN = "loan"; ``` 在这个例子中,`LOAN` 是一个不可变的常量,尝试重新赋值会导致编译错误。`final` 变量在多线程环境中特别有用,因为它们提供了一种线程安全的方式,无需额外的同步...

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    1. **final关键字** - `final`关键字用于确保变量的值一旦被赋值后就不能改变,或者类和方法不能被进一步扩展。 - 当`final`修饰类时,该类不能被继承,如`final class MyClass {}`,这意味着MyClass不能作为其他...

    Java关键字final、static使用总结

    "Java关键字final、static使用总结" 在 Java 编程语言中,final 和 static 是两个非常重要的关键字,它们可以用来修饰类、方法、变量等,了解它们的使用方法和限制非常重要。本文将详细总结 final 和 static 的使用...

    详解Java编程中static关键字和final关键字的使用

    Java编程中的`static`关键字和`final`关键字是两个非常重要的概念,它们分别代表不同的特性。首先,我们来看`static`关键字。 `static`关键字用于声明静态变量和静态方法。静态变量,也称为类变量,属于类本身而...

    深入解析Java编程中final关键字的作用

    final关键字可以与public、protected、private以及static一起使用,来限制不同范围内的重写和隐藏。例如,final static方法确保了在整个程序中其行为的一致性。 8. **final与构造器**: 一个final类不能有抽象...

    Java中的static关键字

    Java 中的 static 关键字 Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以...

    final关键字的使用

    ### Final关键字详解 #### 一、Final的基本概念与作用 `final`关键字是Java语言中的一个重要的修饰符,它的含义非常直接——“最终”的意思。它可以在不同的上下文中发挥不同的作用,主要体现在以下三个方面: 1....

    JavaSE之final关键字与成员变量的类型

    【JavaSE之final关键字与成员变量的类型】 在Java编程语言中,`final`关键字扮演着重要的角色,它表示“最终”或“不可改变”的特性。对于初学者来说,理解`final`的关键字用法是掌握JavaSE基础的重要一步。本篇...

    学习Java的static与final关键字

    Java static与final关键字详解 Java 中的 static 和 final 关键字是两个重要的概念,分别用于修饰成员变量、方法和类。下面我们将详细分析这两个关键字的知识点和相关代码分享。 static 关键字 static 关键字是 ...

    Java中的final关键字

    - 类级(静态)常量通常也用`final`修饰,例如`public static final`,这样的变量被称为常量,如数学中的圆周率π。一旦赋值,就不能更改,常用于定义程序中的固定值。 - `final`修饰的实例变量(非静态)意味着它...

    stati、thi、supe、final关键字详解

    四、final关键字 final在Java中有多种用途: 1. **修饰变量**:声明为final的变量一旦赋值后就不能再改变。 2. **修饰方法**:final方法不能被子类重写,确保了行为的一致性。 3. **修饰类**:声明为final的类不能被...

    final关键字

    ### final关键字在Java中的应用与理解 #### 一、final关键字概述 `final`关键字是Java语言中的一个重要特性,主要用于定义不可变的对象、方法或变量等。通过使用`final`关键字,开发人员能够确保某些实体在初始化...

    举例讲解Java中final关键字的用法

    Java中的`final`关键字是一个非常重要的概念,它用于表示不可变性或终结状态。下面我们将详细探讨`final`关键字在修饰变量、方法和类时的不同用法。 1. **final变量** - 常量定义:`final`变量一旦被初始化后,其...

    第05章 面向对象(下) 05 Final关键字

    在面向对象的世界里,`final`关键字扮演着一个至关重要的角色。`final`关键字在Java中有着多种用途,包括定义常量、防止类被继承以及阻止方法重写。在本章中,我们将深入探讨`final`关键字的这些关键用法。 首先,`...

    详解static 和 final 和 static final区别

    Static、Final 和 Static Final 是 Java 中三个重要的关键字,它们之间的区别和应用场景是开发者需要了解和掌握的。 首先,让我们来了解 Static 关键字。Static 是 Java 中的静态修饰符,可以修饰变量、程序块、...

Global site tag (gtag.js) - Google Analytics