java final关键字
来源:互联网 发布:经济数据查询 编辑:程序博客网 时间:2024/06/10 17:18
final关键字
1、可以修饰类,该类不能被继承。
2、可以修饰方法,但是该方法不能被重写。
3、可以修饰成员变量,变量就变成了常量。被final修饰的变量只能赋值一次。
4、可以修饰局部变量,变量分两种情况:
(1)局部类型:基本类型的值不能发生变化
(2)引用类型:引用类型的地址值不能发生变化,但是该对象的堆内存的值是可以改变的。
class Student{ int age = 10;}public class Test { public static void main(String[] args) { final Student s = new Student(); //final修饰引用类型的变量,不能改变的是变量的地址值 System.out.println(s.age); //输出10 s.age = 100; System.out.println(s.age); //输出100 //s = new Student(); //会报错,因为s的地址值不可修改,不可以为s分配新的内存空间 }}
final的一些应用实例
下面程序会报错:原因是因为 1 和 3都是int类型的值,且b1和b2可以自动转换成int类型的变量(小范围到大范围可以自动转换,byte < int),所以结果会导致把一个int赋值给byte,因此会出错。
//会报错byte b1 = 1;byte b2 = 3;byte b3 = b1 + b2;
但是下面代码就可以正常运行。
final byte b1 = 1;final byte b2 = 3;byte b3 = b1 + b2; //输出4
扩展:java中的自动类型转提升
1、所有byte型、short型、char型将被提升到int型
2、整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
short s1 = 1; s1 = s1 + 1; //错误
1、short s1 = 1;在栈中开辟了一个short类型的空间;
2、而s1 = s1 + 1;s1是short类型的,1是int类型的。int类型 > short类型,所以相加后的结果应该为较大的类型,即为int类型
4、把较大的类型(int)赋值给较小的类型(short)必然会出错
5、因此必然需要强制转换。s1 = (short) (s1 + 1)即为正确
short s1 = 1; s1 += 1; //正确
是因为+=运算符在赋值的时候自动完成了强制类型转换。
阅读全文
0 0
- Java static关键字,final关键字
- java关键字之 final
- Java中的final关键字
- Java的final关键字
- JAVA中的关键字FINAL
- Java中final 关键字
- java final 关键字
- java-final关键字
- Java final关键字分析
- java final关键字
- Java基础: 关键字 final
- java中的final关键字
- java中final关键字
- Java关键字final、static
- Java final关键字解释
- java中关键字:final
- java中final关键字
- java中的final关键字
- Java 多线程死锁
- PCA降维操作及subplot子图绘制
- java ArrayList集合反转 学习笔记
- 枚举值与枚举类
- 《tensorflow实战》注释源码版
- java final关键字
- POJ 1827 Bunch Of Monsters(贪心)
- test
- 使用Jenkins进行持续集成
- USACO-Section2.1 The Castle
- ORACLE 某表执行SQL历史,Java 调用历史SQL
- hdu6069
- 支付宝SDK出现的问题---缺少签名参数 无效签名
- springMVC 对参数为null或参数不为null的处理