动手动脑

对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};


Size s = Size.SMALL; 和 Size t = Size.LARGE; 分别创建了两个枚举实例的引用s和t,它们分别指向Size枚举中的SMALL和LARGE。

System.out.println(s == t); 比较s和t是否引用同一个对象。由于s指向的是SMALL,而t指向的是LARGE,它们是不同的枚举常量,因此输出结果为false。

System.out.println(s.getClass().isPrimitive()); 这行代码检查s的类是否为原始数据类型。因为枚举不是原始数据类型,所以输出结果为false。

Size u = Size.valueOf("SMALL"); 这行代码通过静态方法valueOf根据字符串"SMALL"获取对应的枚举常量,这会返回一个与s相同类型的枚举实例,实际上就是s引用的对象。

System.out.println(s == u); 输出的结果是true,这是因为s和u都引用了相同的枚举常量对象SMALL。

最后,通过for循环遍历Size.values()数组,打印出枚举Size的所有可能值。这里将依次输出:

SMALL
MEDIUM
LARGE

测试TestDouble.java

点击查看代码
public class TestDouble {

    public static void main(String args[]) {
        System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
        System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
        System.out.println("4.015 * 100 = " + (4.015 * 100));
        System.out.println("123.3 / 100 = " + (123.3 / 100));
    }
}


IEEE 754 标准
IEEE 754标准规定了浮点数的表示方法。对于double类型,它使用64位来表示一个浮点数,包括1位符号位、11位指数位和52位尾数位。

计算机内部表示
在计算机内部,0.05和0.01这样的小数会被近似表示为二进制形式。具体来说:

0.05 的二进制表示是 0.0000101000111101011100001010001111010111000010100011110...
0.01 的二进制表示是 0.00011001100110011001100110011001100110011001100110011...
由于这些小数在二进制中是无限循环的,所以在计算机内部只能用有限位数来近似表示。这就会导致最终计算结果出现微小的误差。

代码运行分析

点击查看代码
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

问题在于+与""的链接上,""后接+将x的值输出,也将后边的+变为了连接作用

实现随机出题

点击查看代码
public class Math4 {
public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	Random ran=new Random();
	int flag=0;
	while(flag<30) {
	int x=ran.nextInt(100);
	int y=ran.nextInt(100);
	int s=ran.nextInt(4);
	switch(s) {
	case 0:System.out.printf("%2d+%2d=",x,y);break;
	case 1:System.out.printf("%2d-%2d=",x,y);break;
	case 2:System.out.printf("%2d*%2d=",x,y);break;
	case 3:System.out.printf("%2d/%2d=",x,y);break;
		default:break;
	}
	System.out.println();
	flag++;
	}
}
}

posted @ 2024-09-28 10:39  liu某人  阅读(3)  评论(0编辑  收藏  举报