我们知道,对于byte,char,这些数据类型加减时都会转化成int在运算,然而,对于final修饰过的数据是不会发生转换的. 比如说 byte b1=1; byte b2=2; byte b3=b1+b2;对于这句话是有问题的,因为右边算出来是个int,而大转小必须强转,所以会出错. 但是现在我们用final修饰b1,b2 final byte b1=1; final byte b2=2; byte b3=b1+b2:这句话是没有问题的.…
今天无意发现这样一道题,可以先做做看: 正确答案是BCD. 至于原因有人给出了参考答案: 1.所有的byte,short,char型的值将被提升为int型: 2.如果有一个操作数是long型,计算结果是long型: 3.如果有一个操作数是float型,计算结果是float型: 4.如果有一个操作数是double型,计算结果是double型: 5.被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化.   其中第5项就很模糊了,啥叫根据左边的变量而变…
double 类型运算时的 计算的精度不高,常常会出现0.999999999999999这种情况,那么就须要用BigDecimal   它是java提供的用来高精度计算的工具类 以下是对这个类的一个包装,方便使用: package cn.soft.util; import java.io.Serializable; import java.math.BigDecimal; import org.springframework.stereotype.Component; /** *类描写叙述: d…
笔记: /** 关键字final(最终的) 标记的类不能被继承, 提高安全性,提高程序的可读性 * 1.final 修饰类,这个类就不能被继承: 如:String类.StringBuffer类.System类等 * 2.final 修饰方法:不能被重写: 如:Object类的getClass() * 3.final 修饰属性,变为常量 属性(没有默认初始化的值):习惯上,常量用大写字符来写! * final常量一旦确定后,就禁止再次复制! * 4.变量用 static final +类型 来修饰…
转自:http://java.chinaitlab.com/base/836044.html public class BB{ public int i; } public class PP{ public static void f(final BB ref) //我的理解是无法修改ref { ; } public static void main(String args[]){ BB x = new BB(); f(x); System.out.println(x.i); //但事实上是修改…
一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很多Java程序员来说,他们大都只是草草看了一下各种书本上的介绍,然后背下来,什么时候想起 来有这东西就用一下.对于何时使用final修饰符.使用final修饰符对程序有什么影响,这些其实他们并不知道,当然在这篇文章之前,我也是一知半解的. 我们书本上对final的描述大概有三种用法: final可以修饰变量,…
final 修饰符 修饰类 不可以有子类 修饰变量 变量一旦获得初始值就不可改变,不能被重新赋值 成员变量:初始值必须有程序员显式设置,系统不会对其隐式初始化 类变量:静态初始化块 | 声明该类变量时      实例变量:非静态初始化块 | 声明该实例变量时 | 构造器中      局部变量:初始值必须有程序员显式设置,系统不会对其隐式初始化                 定义变量时指定 | 后面代码中指定                 形参变量由传入参数值来完成初始化,故不能被赋值    …
一:修饰成员变量 关于被final修饰的成员属性(常量)初始化赋值问题分为以下两种情况: 1.被static修饰符修饰:可以通过两种途径进行初始化赋值 ① 在常量被定义时进行初始化赋值 ② 在静态代码块中进行初始化赋值 2.不被static修饰符修饰:可以通过三种途径进行初始化赋值 ① 在常量被定义时进行初始化赋值 ② 在代码块中进行初始化赋值 ③ 在构造函数中进行初始化赋值 二:修饰参数 当final修饰函数的参数时,该参数就只能被使用而无法被更改 三:修饰方法 使用final修饰函数的原因:…
最近重头开始看基础的书,对一些基础的概念又有了一些新的理解,特此记录一下 static final修饰的常量: 静态常量(static修饰的全部为静态的),编译器常量,编译时就确定其值(java代码经过编译器把.java源文件编译成.class字节码文件.经过jvm解释成机器码) 存放于方法区的静态常量池中,在编译时就已经存放 如果调用此常量的类并不是定义这个常量的类,那么不会初始化定义这个常量的类,节省了内存资源的开销 class Demo{ } 代码如下 class Demo{ privat…
案发现场 经常听说final修饰的字段是常量不能改变的他的值,但是以外发现 Integer.java源码中的字段“value”是final,但是可以通过反射改变他的值. public final class Integer extends Number implements Comparable<Integer> { /** * The value of the {@code Integer}. * * @serial */ private final int value; public In…