03 Java static 和 final

Java 修饰符主要分为两类:

  • 访问修饰符
  • 非访问修饰符

非访问修饰符

Java static

  • static 是一个修饰符,被 static 修饰的成员变量和成员方法,不依赖类的特定实例,被类的所有实例共享,因此静态类方法中不可以定义 this,super 等关键字。
  • 静态成员变量和方法,可以使用类直接调用,如下可以直接使用 Dog 访问 name,age,printInfo()。
  • 静态方法只能访问静态成员,非静态方法既可以访问静态也可以访问非静态成员,如在 printInfo() 方法使用 static 修饰,其中涉及的 name 和 age 也必须使用 static 修饰。
public class Dog {

    static String name;
    static int age;

    public static void printInfo() {
        System.out.println("name:" + name + ", age:" + age);
    }

    public static void main(String[] args) {

        Dog.name = "roy";
        Dog.age = 3;
        Dog.printInfo();

        Dog dog = new Dog();
        dog.printInfo();
    }
}
name:roy, age:3
name:roy, age:3

Java final

  • final 可以修饰类,方法,变量(成员变量和局部变量)
  • 当 final 修饰一个类,表示这个类不能被继承
  • 当 final 修饰一个方法,明确禁止该方法在子类中被覆盖
  • 当 final 修饰一个变量,如是基本类型,表示数值一旦确定,不能修改,如是引用类型,则初始化之后不能指向另一个对象

访问修饰符

  • public,对所有类可见
  • protected,对同一包内的类和子类可见
  • default,同一个包内的类可见
  • private,对当前类可见
修饰符 当前类 同一包内 子孙类 其它包
public Y Y Y Y
protected Y Y Y N
default Y Y N N
private Y N N N

原文地址:https://www.cnblogs.com/wangyaoguo/p/8441353.html

时间: 2024-11-10 13:59:51

03 Java static 和 final的相关文章

1. Java Static和Final使用总结

static:用于属性和方法 static修饰属性:无论一个类生成多少对象,所有这些对象共用唯一一个静态成员变量.一个对象对该静态变量进行修改,其他对象对该静态变量的值也随之发生变化.可以通过类名.成员变量名的方式来使用它. static修饰方法:静态方法只能继承,不能重写.静态方法可以包含静态和非静态方法,非静态方法只能包含非静态方法,不能包含静态方法 final修饰类:表示该类是最终类,不能被继承. final修饰方法:表示该方法是最终方法,不能被重写. final修饰属性:表示该属性不能被

Java static和final

java提高篇(七)-----关键字static static 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概念,在Java中static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块. Java把内存分为栈内存和堆内存,其中栈内存用来存放一些基本类型的变量.数组和对象的引用,堆内存主要存放一些对象.在JVM加载一个类的时候,若该类存在static修饰的成员变量和成员方法

Java static,final 基本概念

(转载自http://blog.kenyang.net/2011/03/java-staticfinal.html) 從很久以前我就了解到, 不僅僅要知道know how, 還要知道know why, 舉個例子,當我派工作給底下的人做時, 例如要他做出一個發送mail的功能出來, 恩,拜Google大神所賜,通常很快都可以找到發送mail的code. 但是當我細下去問每一行code的用途時, 大多是...."恩...不知道". 我覺得此風不可長. 甚至有些學弟們搞不清楚何時要用stat

java学习笔记(三)java中的修饰符abstract、static与final

一.四种访问级别的访问范围 访问级别 访问修饰符 同类 同包 子类 不同的包 公开 public 受保护 protected 默认 没有访问修饰符 私有的 private 二.使用abstract修饰符需要遵守的语法规则 1.抽象类中可以没有抽象方法,但是包含抽象方法的类必须定义为抽象类,即用abstract修饰: 2.抽象类跟抽象方法不能被final修饰符修饰: 3.抽象类中可以有非抽象方法,因为继承抽象类的子类必须重写父类中所有的抽象方法,因此抽象类中不能有抽象构造方法和抽象静态方法: 4.

Java中static 和final的区别

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

JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放.堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要在运行时动态分配内存,存取速度较慢. 栈的优势是

Java中static、final用法

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

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

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

Java中的内存处理机制和final、static、final static总结

Java中的内存处理机制和final.static.final static总结 装载自:http://blog.csdn.net/wqthaha/article/details/20923579 Java程序运行在JVM上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性.所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提.         一个完整的Java程序运行过程会涉及以