Awang2623

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一.Java变量的“同名变量的屏蔽原则”:

两个或多个同名变量,定义了不同的数值时,在使用时,在使用的区间内,变量的值为距其最近(前面)的定义。

程序:

结果:

二.     Java中的类型转换

nt 32位带符号整数 -2的31次方到2的31次方-1之间的任意整数

float 32位单精度浮点数,double 64位双精度浮点数。

char 8位二进制数范围是 -2的7次方到2的7次方-1

byte 8位带符号整数 -128到127之间的任意整数

short 16位无符号整数 -32768到32767之间的任意整数

long 64位带符号整数 -2的63次方到2的63次方-1之间的任意整数

结论:java自动完成从低级类型向高级类型转换,即取值范围相对较小的数据类型转换成取值范围相对较大的数据类型。

三.请运行以下代码,看到了什么样的输出,意外吗?

 

 

为什么double类型的数值进行运算得不到“数学上精确”的结果?

事实上浮点运算很少是精确的,只要是超过精度能表示的范围就会产生误差。往往产生误差不是 因为数的大小,而是因为数的精度。因此,产生的结果接近但不等于想要的结果。尤其在使用 float 和 double 作精确运 算的时候要特别小心。可以考虑采用一些替代方案来实现。如通过使用 long 类型来转换。我们知道在计算机中浮点数的表示方法是由一个整数(即尾数)乘以一个基数(计算机中一般为2)的整次幂得到。(类似于科学计数法,科学记数法基数为10)float的内存结构为:符号位表示正负,1位 指数位,8位 尾数位,32位(符号位1表示负,0表示正)指数是以2为底的,范围是 -128 到 127,如果超过了127,则从-128开始计。 即:127+1=-128尾数都省去了第1位的1,所以在还原时要先在第一位加上1。它可能包含整数和纯小数两部分,也可能只包含其中一部分,视数字大小而定。对于带有整数部分的浮点数,其整数的表示法有两种,当整数大于十进制的16777215时使用的是科学计数法,如果小于或等于则直接采用一般的二进制表示法。科学计数法和小数的表示法是一样的。小数部分则是直接使用科学计数法,形式是X * ( 2 ^ n )。这样就导致浮点类型在计算机的存贮中无法精确表示。

四.以下代码的输出结果是什么?

            int X=100;

            int Y=200;

            System.out.println("X+Y="+X+Y);

            System.out.println(X+Y+"=X+Y");

为什么会有这样的输出结果?

运行结果:

 


原因:

System.out.println("X+Y="+X+Y);其中 + 为连接运算符
System.out.println(X+Y+"=X+Y");其中 + 为加法运算符,为两个数相加

 

posted on 2018-10-07 21:43  Awang2623  阅读(182)  评论(0编辑  收藏  举报