一.
分析程序EnumTest.Java:
public class EnumTest {
public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一个对象?
System.out.println(s==t); //
//是原始数据类型吗?
System.out.println(s.getClass().isPrimitive());
//从字符串中转换
Size u=Size.valueOf("SMALL");
System.out.println(s==u); //true
//列出它的所有值
for(Size value:Size.values()){
System.out.println(value);
}
}
}
enum Size{SMALL,MEDIUM,LARGE};
运行结果:
- 结论:可以看出,枚举类型可以定义几种类型,并从中选择其中一种进行赋值。当判断两个赋值是否相同时,输出结果只能是ture或false。当输出value时,需要Size value:Size.values()循环类型的数量的次数。enum Size{SMALL,MEDIUM,LARGE};语句可以写在程序的最后,也可以写在前面,但必须自己引用。枚举的赋值可以有两种表示方法:1.Size s=Size.SMALL; 2.Size t=Size.valueof(“SMALL”)。
二.阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原 码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。
- 反码:机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作〔X〕反。
- 补码:机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作〔X〕补。
- 原码:原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作〔x〕原。
三.
Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。
public class Test1 {
public static int value = 1;
public static void main(String[] args) {
// TODO Auto-generated method stub
int value = 2;
System.out.println(value);
}
}
结果为:2
public class Test1 {
public static int value = 5;
public static void main(String[] args) {
// TODO Auto-generated method stub
int value = 3;
System.out.println(value);
}
}
结果为:3
public class Test1 {
public static int value = 4;
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(value);
}}
结果为:4
得出结论:在函数里面的赋值优先于在函数外赋值,函数外的赋值可以赋给类中的多个函数,如果函数里面没有重复的赋值,那么函数的值为函数外的。
四.
看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?
实线代表无精度损失,虚线代表有精度损失,一般来说在实线两端都是由低精度指向高精度的类型,所占的位数从低到高,范围从小到大,所以可得出,低精度向高精度转化不丢失精度,反之,从高精度传向低精度则会损失。
n 五.以下代码的输出结果是什么?
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
n 为什么会有这样的输出结果?
因为输出的是字符串,所以前一个分别输出两个字符串,而后一个表示用字符串输出两个整形的和。