动手动脑及课后实验

1.仔细阅读示例: EnumTest.java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗?

结果:false  false  true  SMALL  MEDIUM  LARGE

结论:枚举可用于switch语句中。枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

2.请运行以下代码(TestDouble.java)

你看到了什么样的输出,意外吗?

1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999

使用double类型的数值进行计算, 其结果是不精确的。

float的符号位占一位,阶码为8位,尾数为23位,所以一共四个字节;double的符号位占一位,阶码为11位,尾数52位。符号位为0的话说明是

正的,为1的话说明是负的;阶码就是尾数所要乘以的2的次方数;尾数默认是去掉整数位的1的,也就是说加入尾数序列为01010101(后面还有很多),那么其实它是1.01010101(后面还有很多)。比如一个float类型的变量,其符号位为0,阶码化成十进制为3,尾数为01000000(后面都是0)

3.以下代码的输出结果是什么? int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+Y+"=X+Y"); 为什么会有这样的输出结果?

结果:X+Y=100200  300=X+Y

在语句一中,“+”是连接量;在语句二中,“+”是运算符,进行求和运算。

 

4.阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念

原码:二进制的定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码:正数的补码与其原码相同;负数的补码是在其反码末位加1。

 

5.Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。

 

package com;

 

class Test {

private static int value=1;

public static void main(String[] args){

int value=2;

System.out.println(value);

}

}

 

输出是2

 

posted @ 2016-10-05 15:05  1503赵晗  阅读(109)  评论(0编辑  收藏  举报