12.Java静态变量与常量

来源:互联网 发布:gh0st源码分析 编辑:程序博客网 时间:2024/06/07 22:02
12.Java静态变量与常量
转载请保留原文链接: http://dashidan.com/article/java/basic/Java静态变量与常量.html

`static`修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名来访问. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们. 因此`static`修饰的变量和方法,可以在它所属的对象创建之前访问,不用创建对象.

① 静态变量—访问语法为: 类名.静态方法名(参数列表…) 类名.静态变量名 按照是否静态的对类成员变量进行分类可分两种: * 被static修饰的变量,叫静态变量或类变量. * 没有被static修饰的变量,叫实例变量.###1.静态变量与实例变量区别: 1. 静态变量在内存中只有一个拷贝(节省内存), JVM只为静态分配一次内存.在加载类的过程中完成静态变量的内存分配. 可用类名直接访问, 当然也可以通过对象来访问(不推荐). 2. 对于实例变量, 每创建一个实例, 就会为实例变量分配一次内存, 实例变量可以在内存中有多个拷贝, 互不影响, 需要通过实例的引用来访问. ###2.静态变量应用场景:* 在对象之间共享值时* 方便访问变量时![举个栗子](http://localhost/img/common/example.jpg) 猫都有4条腿,2只眼睛一张嘴.这3条属性是猫的通用属性,我们便可以把这三个属性设置为`static`静态变量.

return返回值

我们在定义静态变量时,通常将所有字母大写,与实例变量作区分.

静态方法

静态方法可以直接通过类名调用, 任何的实例也可以调用.因此静态方法只能访问所属类的静态变量和静态方法, 不能用`this`和`super`关键字.不能直接访问所属类的实例变量和实例方法(没有static修饰的成员变量和成员方法).

示例代码:

package com.dashidan.lesson11;/** * 大屎蛋教程网-dashidan.com * <p> * Java教程基础篇: 11. Java静态变量与常量 */public class Demo1 {    public static void main(String[] args) {        /** 出处猫的静态属性*/        System.out.println("MOUSE_NUM: " + Cat.MOUSE_NUM);        System.out.println("EYE_NUM: " + Cat.EYE_NUM);        System.out.println("LEG_NUM: " + Cat.LEG_NUM);    }}
Cat类:
package com.dashidan.lesson11;/** * 大屎蛋教程网-dashidan.com * <p> * Java教程基础篇: 11. Java静态变量与常量 * Cat 类 */public class Cat {    public static int MOUSE_NUM = 1;    public static int EYE_NUM = 2;    public static int LEG_NUM = 4;}
输出: MOUSE_NUM: 1 EYE_NUM: 2 LEG_NUM: 4② Java常量—`final`是Java的一个保留关键字, 可以声明成员变量、方法、类以及局部变量. 被声明final的变量, 一但赋值便不能再次修改.编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误.`final`变量经常和`static`关键字一起使用作为`常量`. 例:
public static final WEB_NAME = "大屎蛋教程网."public static final WEB_URL = "http://dashidan.com"
###1.final关键字要点* 方法前面加上final关键字,代表这个方法不可以被子类的方法重写.* 类名前面加上final关键字,代表这个方法不可以被继承.* final关键字可以用于成员变量、局部变量、方法以及类.* final成员变量必须在声明的时候初始化或者在构造器中初始化, 否则就会报编译错误.* 不能对final变量再次赋值. * fina局部变量必须在声明时赋值.* 在匿名类中所有变量都必须是final变量.* final方法不能被重写.* final类不能被继承.* 接口中声明的所有变量本身是final的.* final和abstract这两个关键字是反相关的, final类就不可能是abstract的.* final方法在编译阶段绑定, 称为静态绑定(static binding). * 没有在声明时初始化final变量的称为`空白final变量`(blank final variable), 必须在构造器中初始化, 或者调用this()初始化. 否则编译器会报错.* 将类、方法、变量声明为final能够提高性能, 这样JVM就有机会进行估计,然后优化.* 按照Java代码惯例,final变量就是常量, 而且通常常量名要大写* 对于集合对象声明为final指的是引用不能被更改, 但可以向其中增加, 删除或者改变内容.

final关键字

涉及到了很多类的继承相关的概念, 可以参考Java教程进阶篇Java对象相关的文章后, 再回头看这些知识就很好理解了.Java对象

③ 相关文章

Java集成开发环境

原创粉丝点击