Java——final关键字

155-157

package com.May.seven;

/**
 * 关于java语言当中final关键字:
 * 		1、final是一个关键字,表示最终的,不可变的。
 * 		2、final修饰的类无法被继承
 * 		3、final修饰的方法无法被覆盖
 * 		4、final修饰的变量"一旦"赋值之后,不可重新赋值【不可二次赋值】
 * 		5、final修饰实例变量,必须手动赋值,不能采用系统默认值
 * 		6、final修饰的引用,一旦指向某个对象之后,不能再指向其他对象,那么被指向的对象无法被垃圾回收器回收。
 * 			final修饰的引用虽然指向某个对象之后不能指向其他对象,但是所指向的对象内部的内存是可以被修改的。
 * 		7、final修饰的实例变量,一般和static联合使用,被称为常量。
 * 
 * 关于myeclipse怎么链接源码?
 * 		打开某个.class字节码文件,当没有看到源码的时候:
 * 			点击"Attached Source":
 * 				- Workspace..【源码在当前的工作区当中】
 * 				- External File..【源码在某个压缩包当中】
 * 				- External Folder..【源码在某个目录当中】
 *
 * 以后尽量所有的程序都链接源码,没有源码从网上找,或者跟老师要源码。
 * 养成看源代码的好习惯。
 * 
 * 对于以后大家所学习的类库,一般都是包括三个部分的:
 * 		- 源码【可以看源码来理解程序】
 * 		- 字节码【程序开发的过程中使用的就是这部分】
 * 		- 帮助文档【对开发提供帮助】
 */

public class FinalTest01 {

	public static void main(String[] args) {
		int i = 10;
		System.out.println(i);
		i = 20;
		System.out.println(i);

		final int k = 100;
		//编译错误:无法为最终变量k分配值
		//k = 200;
		
		final int m;
		m = 200;
		//编译错误:无法为最终变量m分配值
		//m = 300;
	}

}
package com.May.seven;

public class FinalTest02 {

	// 成员变量之实例变量
	// 实例变量有默认值 + final修饰的变量一旦赋值不能重新赋值
	// 综合考虑,java语言最终规定实例变量使用final修饰之后,必须手动赋值,不能采用系统默认值。
	// final int age; //编译错误

	// 第一种解决方案
	final int age = 10;

	// 第二种解决方案
	final int num;

	public FinalTest02() {
		this.num = 200;
	}

	// 以上的两张解决方案:其实本质上就是一种方式,都是在构造方法执行过程当中给实例变量赋值。

	public static void main(String[] args) {

		final int a;
		a = 100;
		// 不可二次赋值
		// a = 200;
	}

}
package com.May.seven;

public class FinalTest03 {

	public static void main(String[] args) {

		// 创建用户对象
		User u = new User(100); // User u = 0x1234;

		// 又创建了一个新的User对象
		// 程序执行到此处表示以上对象已变成垃圾数据,等待垃圾回收器的回收。
		u = new User(200); // u = 0x2586;

		// 创建用户对象
		final User user = new User(30);
		// user = new User(50); //final修饰的引用,一旦指向某个对象之后,不能再指向其他对象,那么被指向的对象无法被垃圾回收器回收。
		System.out.println(user.id);
		user.id = 50; // final修饰的引用虽然指向某个对象之后不能指向其他对象,但是所指向的对象内部的内存是可以被修改的。
		System.out.println(user.id);

	}

}
package com.May.seven;

public class User {
	int id;

	public User(int id) {
		super();
		this.id = id;
	}

}
package com.May.seven;

public class FinalTest04 {

	public static void main(String[] args) {
		System.out.println(Chinese.GUO_JI);
		System.out.println("圆周率:" + Math.PI);
	}

}

class Math{
	
	public static final double PI = 3.1415926;
	
}

class Chinese{
	
	//国籍
	//需求:每一个中国人的国籍都是中国,而且国籍不会发生改变,为了防止国籍被修改,建议加final修饰。
	//final修饰的实例变量是不可变的,这种变量一般和static联合使用,被称为"常量"
	//常量的定义语法格式:
	//		public static final 类型 常量名 = 值;
	//java规范中要求所有常量的名字全部大写,每个单词之间使用下划线连接
	
	//static final String country = "中国";
	
	public static final String GUO_JI = "中国";
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值