Java关键字----final与static

1.final关键字

在java中,final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。
final的基本用法:

1.1 final修饰类

当用final修饰一个类时,表明这个类不能被继承
在这里插入图片描述

1.2 final修饰属性

当用final修饰一个属性时,表明只能在对象初始化时赋值,对象创建后不能再修改属性

public class Car {
   /*
        * 定义属性时直接赋值  
    */
	private final String color ="red";
	/*\
	 * 代码块赋值
	 */
	private final String color ;
	{
		this.color ="red";
	}
	/*
	 * 无参构造方法赋值/有参数构造方法赋值
	 */
	private final String color;
	
	public Car() { 
		this.color="red";
	}
	public Car(String color) {
		this.color=color;
	}
}

1.3 final修饰方法

当用final修饰一个方法时,表明方法不能被覆盖(重写)
在这里插入图片描述

1.4 final修饰基本类型

当用final修饰一个基本数据类型变量时,表明变量为只读,不能被改写。
在这里插入图片描述

1.5 final修饰引用类型

当用final修饰一个引用类型对象时,表明绑定的对象不能改变,也不能断开绑定(null),但是可以改变对象的内容
在这里插入图片描述

2.static关键字

1)static:在java中,static是一个修饰符,用于修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能
2)用途:方便在没有创建对象的情况下进行调用(方法/变量)。
被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
3)方法区:定义static修饰的属性、方法会进入到JVM的方法区,方法区不在栈或堆内存中,他是独立于JVM的一块区域。在继承关系中,当创建对象时,static修饰的属性、代码块和方法会最先被加载。
在这里插入图片描述
即:
1.类加载是初始化,只初始化一次
2.static空间在内存的方法区,被其它线程共享
3.使用方法: 类名.static方法/属性

2.1 static修饰属性变量

static修饰的属性变量称为静态变量,静态变量和非静态变量的区别:
·静态变量被所有对象共享,在内存中只有一个副本,在类初次加载的时候才会初始化
·非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响

银行取钱例子:

public class Bank {
     public static  double money = 10000.00;//银行中有10000.00元
     
     public void savaMoney(double money) {//取钱
    	 Bank.money+=money; 
     }
     public void WithdrawMoney(double money) {//存钱
    	 Bank.money-=money;
     }
     public static double getMoney() {
		return money;
	}
     
     public static void main(String[] args) {
		Bank A = new Bank();
		A.WithdrawMoney(10000);//取出一万,余额为0
    	Bank B = new Bank();
    	B.savaMoney(200);//存入200,余额为200
    	System.out.println(B.getMoney()); //200,静态变量被所有对象共享
	}       
}

2.2 static修饰方法

static修饰的方法称为静态方法。
1)在静态方法中不能访问类的非静态成员变量和非静态方法,因为非静态成员变量和非静态方法都必须依赖于具体的对象才能被调用。
但在非静态成员方法中是可以访问静态成员方法和静态成员变量。
2)static方法是属于类的,非实例对象。在JVM加载类时,就已经存在内存中,不会被虚拟机回收掉,这样内存负荷会很大,但是非static方法会在运行完毕后被虚拟机回收掉,减轻内存压力
3)对于静态方法来说,是没有this的,因为不依附于任何对象

public static void main(String[] args) {
		//方法体
	}  

2.3 static代码块

static修饰的代码块称为静态代码块
1) 静态代码块,用于类的初始化操作。
2)静态代码块可以置于类中的任何地方,类中可以有多个静态初始化块。
3)在类初次被加载时,会按照静态代码块的顺序来执行每个块,并且只会执行一次。

     private static double money;
     private String Name;
     static {
    	money=1000.00;
    }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值