(28)Java基础 --final关键字

本文详细介绍了Java中的final关键字,包括final修饰变量、方法、类和局部变量的使用规则及应用场景。通过示例代码展示了final如何防止变量被修改、方法被重写以及类被继承,强调了final在创建常量、确保数据安全性和方法不可变性等方面的重要性。同时,解释了final修饰形参的作用,增强了代码的可读性和安全性。
摘要由CSDN通过智能技术生成

目录

一、final概述

二、final修饰变量

三、final修饰方法

四、final修饰类

五、final修饰局部变量

六、final修饰形参


一、final概述

final是个修饰符。

final是最终的,不可修改的意思。

final可以修饰类,方法,成员变量,局部变量,方法形参

二、final修饰变量

此时的变量转为常量。

此变量在第一次被赋值后,再不能修改它的值。

public class Test{
	private final int age=10;  // 必须赋值
	public void method(){
		age = 100;  // 编译报错,不能重新赋值
	}
}

成员常量一般也做成static类型,因为没有必要为每个实例提供一份根本不会变化的变量空间

常量的定义规则   

public static final double PI=3.14;

1:public :访问权限最大

2:static :内存中只有一份

3:final  :是一个常量

4:常量名大写,多个单词用下划线(_)分隔

5:必须初赋值,赋值后,不能重新赋值。

案例:

   定义静态方法求圆的面积

   定义静态方法求圆的周长

   发现方法中有重复的代码,就是PI,圆周率。如果需要提高计算精度,就需要修改每个方法中圆周率。

public static final double PI = 3.14; // 静态常量

public static double getArea(double r) {
    return PI * r * r;
}

public static double getLength(double r) {
    return PI * r * 2;
}

三、final修饰方法

该方法是最终方法,不能被子类重写。

class A{
	public final void sayHello(){
		System.out.println("你好");
	}
}

class B extends A{
	public  void sayHello(){ // 编译报错——不能重写父类中被final修饰的方	
	}
}

四、final修饰类

该类是最终类,不能被继承

final class AA{
	
}

class BB extends AA{  // 编译报错——被final修饰的类,不能被继承     jdk中的String类就是不能被继承的
	
}

五、final修饰局部变量

final修饰的局部变量不能重新赋值。

class X{  // final修饰局部变量
	public void hello(){
		final int x = 100;
		x = 200;  //final修饰的局部变量,不能重新赋值	
	}
}

六、final修饰形参

1: 当形参被修饰为final,那么该形参所属的方法中不能被篡改(重新赋值)。

2: 项目中主要用于一些只用来遍历未知数据的方法。将未知变量声明为final的。增强数据的安全性。

public class TestFinal {
	/*
	 * 用final修饰方法的形参
	 * */
	public static void printStudentName(final Student s){
		  //s.setName("yyy");  // 这句不是为形参重新赋值
		  //s = new Student(2,"李四"); // 因为final修饰了形参,所以不能重新赋值
	      System.out.println(s.getName());
	}
	
	public static void add(final int x, final int y){
		/*  因为final修饰了 形参,所以在方法中不能为 形参重新赋值
		x = 10;
		y = 10;
		*/
		System.out.println(x+y);
	}

	public static void main(String[] args) {
		Student s = new Student(1,"xxx");
		printStudentName(s);
		add(100, 100);
	}
}

上一篇:(27)Java基础 --Object类

下一篇:(29)包和访问权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值