浅谈final修饰的变量】的更多相关文章

一直大概的知道final关键字的作用,但是自己实际工作中却很少用,除非在声明一些常量值的时候,今天忽然自己在项目中用一个map进行存储一些值.一开始我只是用private修饰的,心里想的是如果final修饰的话,应该不能修改了.毕竟被final修饰的变量不可变.今天回家后,做了下面的尝试,彻底暴露出自己基础的不扎实. final的作用 被final修饰的类不可以被继承 被final修饰的方法不可以被重写 被final修饰的变量不可变 实战演示 1.首先看下面代码 public class Fin…
int a=1;此时a是变量: StringBuffer a=new StringBuffer();此时a就是引用变量,可以说是a引用String对象,通过a来操作String 对象 final StringBuffer a=new StirngBuffer(); a=new StringBuffer();会报错: a.append("两");没错 这就说明final 修饰的变量是引用不能变,对象的内容可以变的:…
我们都知道final修饰变量时 会变为常量,但是使 用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 下面让我们来看这段代码: /** * 验证final修饰的变量是引用不能变,还是引用的对象不能变 * StringBuilder 线程不安全 但速度快 * 引用初始化以后不能被改变 --- 不是指变量的值不可变,而是指向的变量地址不可变 * @author Tomato * */ public class TestFinal { public static void mai…
Java中,使用Final修饰一个变量,是引用不能变,还是引用对象不能变? 是引用对象的地址不能变,引用变量所指的对象的内容可以改变. final变量永远指向这个对象,是一个常量指针,而不是指向常量的指针. 比如: final StringBuffer sb=new StringBuffer("abc"); 对sb重新赋值 sb=new StringBuffer("cde"); 会出现编译错误,被final修饰的变量是不能重新赋值的: 但是 sb.append(&q…
浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧   摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明:  $$ Shell本身的PID(Process…
两种情况:如果是基本数据类型,被final修饰的变量一旦初始化就不能改变:如果是引用数据类型的变量,初始化之后不能指向另外一个对象. 基本数据类型: package cn.yqg.day2; public class StringTest { public static void main(String[] args) { final int a; ; a=b; System.out.println(a); } } 我们看到上面的代码a是final类型的,但是没有被初始化,所以可以给a赋值.如果…
见代码 public class Test { public static void main(String[] args){ // 情况一 基本数据类型 //System.out.println(Outer.Inner.n); // 输出结果 : 10 //情况二 //Outer outer = Outer.Inner.outer; // 输出结果 : 静态内部类 //情况三 System.out.println(Outer.Inner.str); // 输出结果: 静态内部类 abc //情…
1.final变量: 常和static一起使用,修饰成员变量或者本地变量.修饰后为常量,不可以再次初始化(再次引用),例如public static final String SUCCESS= "成功"; 含义是将SUCESS定义为“成功”且该值不会被改变: 2.final方法: 用final修饰的方法不可以被子类重写(表示最终的方法),优点是比非final方法快,因为在编译时候已经静态绑定.(该用法在项目中少用到)注:类的private方法会隐式被指定为final方法: 3.fina…
Java关键字final有“这是无法改变的”或者“终态的”含义,final可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的.final方法不能被子类的方法覆盖,但可以被继承.final成员变量表示常量,只能被赋值一次,赋值后值不再改变.final不能用于修饰构造方法.注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的. 1.final类 final类不能被继承,因此fin…
对于这个问题,我们不能只记结论,要拿实例说话,参看以下代码: public class Demo { public static void main(String[] args) { final StringBuilder sb = new StringBuilder("haha"); //同一对象的hashCode值相同 System.out.println("sb中的内容是:" + sb); System.out.println(sb + "的哈希编码…