Java中final修饰的数据】的更多相关文章

目录 Java中final修饰的数据 有初始值的final域 final+基本数据类型 final+引用数据类型 final与static final 空白final域 final修饰的参数 基本数据类型的参数 引用数据类型的参数 Java中final修饰的数据 final是Java中的一个重要关键字,它可以修饰数据.方法和类,本篇将从final修饰的数据角度对final做出总结. final修饰的数据代表着:永远不变.意思是,一旦你用final修饰一块数据,你之后就只能看看它,你想修改它,没门…
一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很多Java程序员来说,他们大都只是草草看了一下各种书本上的介绍,然后背下来,什么时候想起 来有这东西就用一下.对于何时使用final修饰符.使用final修饰符对程序有什么影响,这些其实他们并不知道,当然在这篇文章之前,我也是一知半解的. 我们书本上对final的描述大概有三种用法: final可以修饰变量,…
1.final修饰符的用法: final可以修饰变量,被final修饰的变量被赋初始值之后,不能对它重新赋值. final可以修饰方法,被final修饰的方法不能被重写. final可以修饰类,被final修饰的类不能够被继承. 上面的这些“语法口诀”对真正掌握final修饰符的用法依然是不够的. 2.final修饰的变量:被final修饰的实例变量必须显示指定初始值,而且只能在如下三个位置指定初始值: 定义final实例变量时指定初始值. 在非静态初始化块中为final实例变量指定初始值. 在…
Java中,使用Final修饰一个变量,是引用不能变,还是引用对象不能变? 是引用对象的地址不能变,引用变量所指的对象的内容可以改变. final变量永远指向这个对象,是一个常量指针,而不是指向常量的指针. 比如: final StringBuffer sb=new StringBuffer("abc"); 对sb重新赋值 sb=new StringBuffer("cde"); 会出现编译错误,被final修饰的变量是不能重新赋值的: 但是 sb.append(&q…
在方法参数前面加final关键字就是为了防止数据在方法体中被修改. 主要分两种情况:第一,用final修饰基本数据类型:第二,用final修饰引用类型. 第一种情况,修饰基本类型(非引用类型).这时参数的值在方法体内是不能被修改的,即不能被重新赋值.否则编译就通不过.例如: 1 public static void valid(final int ag){ 2 ag=9; 3 ag=10; 4 } 错误提示: 第二种情况,修饰引用类型.这时参数变量所引用的对象是不能被改变的.作为引用的拷贝,参数…
这是一次阿里面试里被问到的题目,在我的印象中,final修饰的方法是不能被子类重写的.如果在子类中重写final修饰的方法,在编译阶段就会提示Error.但是回答的时候还是有点心虚的,因为final变量就可以用反射的方法进行修改,我也不太确定是否有类似的机制可以绕过编译器的限制.于是面试之后特地上网搜了下这个问题,这里简单记录一下. 首先说一下结论:没有办法能够做到重写一个final修饰的方法,但是有其他的方法可以接近在子类中重新实现final方法并在运行时的动态绑定的效果. 这里需要用到一个a…
一.final关键字可以用来修饰类.方法.变量.各有不同. A.修饰类(class).      1.该类不能被继承.      2.类中的方法不会被覆盖,因此默认都是final的.      3.用途:设计类时,如果该类不需要有子类,不必要被扩展,类的实现细节不允许被改变,那么就设计成final类 B.修饰方法(method)      1.该方法可以被继承,但是不能被覆盖.      2.用途:一个类不允许子类覆盖该方法,则用final来修饰      3.好处:可以防止继承它的子类修改该方…
问题:Java反射机制可以动态修改实例中final修饰的成员变量吗? 回答是分两种情况的. 1. 当final修饰的成员变量在定义的时候就初始化了值,那么java反射机制就已经不能动态修改它的值了. 2. 当final修饰的成员变量在定义的时候并没有初始化值的话,那么就还能通过java反射机制来动态修改它的值. 实验: 1. 当final修饰的成员变量在定义的时候就初始化了值 public Class Person { private final String name = "damon.hua…
java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共同被称为封装 访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关 程序猿在修改和完善代码时,也有着巨大的压力.通常总会有一些消费者(或者客户端程序猿)需要你的代码在某些方面保持不变.因此你想改动代码,但是他们却想代码保持不变.所以就面对一个基本问题“如何把变动的事物和保持不变的事物区分开来” 所…
1.         修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的PI和E是final成员,其值为3.141592653589793 和2.718281828459045. 2.         修饰类或对象的引用的final 在Java中,我们无法让对象被修饰为final,而只能修饰对象的引用,这意味着即使你写public final A a = new A(); 事实上a…