Java关键字final和static的作用
Posted xianya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java关键字final和static的作用相关的知识,希望对你有一定的参考价值。
一、关键字final
- final修饰类:这个类就不能被继承
- final修饰方法:不能被重写
- final修饰属性:此属性就是一个常量,一旦初始化后,不可再被赋值。习惯上,常量用大写字符表示
- 此常量在哪里赋值:①此常量不能使用默认初始化 ②可以显式的赋值、代码块、构造器
注意:变量用static final修饰:全局常量
二、关键字static
static,静态的,可以用来属性、方法、*代码块(或初始化块)、*内部类
static修饰属性(类变量):
- 由类创建的所有的对象,都共用这一个属性
- 当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。vs 实例变量(非static修饰的属性,各个对象各自拥有一套副本)
- 静态类变量随着类的加载而加载的,而且独一份
- 静态的变量可以直接通过“类.类变量”的形式来调用
- 静态类变量的加载是要早于对象。所以当有对象以后,可以“对象.类变量”使用。但是"类.实例变量"是不行的
- 静态类变量存在于静态域中
static修饰方法(类方法):
- 随着类的加载而加载,在内存中也是独一份
- 可以直接通过“类.类方法”的方式调用
- 内部可以调用静态的属性或静态的方法,而不能调用非静态的属性或方法。反之,非静态的方法是可以调用静态的属性或静态的方法
注意:静态的结构(static的属性、方法、代码块、内部类)的生命周期要早于非静态的结构,同时被回收也要晚于非静态的结构
静态的方法内是不可以有this或super关键字的!
static测试实例:
package com.yyx.pratice; public class JavaPratice { public static void main(String[] args) { Account a1 = new Account("abc123", 1000); Account a2 = new Account("abc456", 2000); Account a3 = new Account("abc456", 2000); System.out.println(a1); System.out.println(a2); System.out.println(a3); } } class Account { private int id;// 账号 private String password;// 密码 private double balance;// 余额 private static double rate = 0.05;// 利率 private static double minBalance = 1;// 最小余额 private static int init = 1000; public Account(String password, double balance) { this.id = init++; this.password = password; this.balance = balance; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public double getBalance() { return balance; } public void setBalance(double balance) { this.balance = balance; } public static double getRate() { return rate; } public static void setRate(double rate) { Account.rate = rate; } public static double getMinBalance() { return minBalance; } public static void setMinBalance(double minBalance) { Account.minBalance = minBalance; } @Override public String toString() { return "Account [id=" + id + ", password=" + password + ", balance=" + balance + "]"; } }
以上是关于Java关键字final和static的作用的主要内容,如果未能解决你的问题,请参考以下文章
java中 static,final,transient,volatile关键字的作用