课后作业2

动手动脑1
EnumTest.java
源代码:

public class EnumTest {

public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一个对象?
System.out.println(st); //
//是原始数据类型吗?
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};
运行结果为

通过对结果的分析我知道枚举类型是引用类型,它的每一个值都引用一个特定的对象。
动手实验1
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));
}
}

运行结果为
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
在没了解之前这让我感到意外,因为我认为他应该是有一个准确值例如
0.05+0.01=0.06
可是在运行后却是一个小数点后面好多位的数字,在了解之后,我知道float浮点类型数据储存是二进制,而二进制与十进制之间的转换存在局限性,准确来说就是二进制不能准确表示十进制所表示的数字,所以得不到数学上准确的值。
动手动脑2
代码:
int X;
int Y;
System.out.println(“X+Y=”+X+Y);
System.out.println(X+Y+”=X+Y”);
输出结果为:X+Y=100200
300=X+Y
为什么会出现这样的结果:

  • 在Java中,+运算符同时具有"算术加法"和"字符串拼接"的功能
  • +两侧有一个是字符串时,会执行字符串拼接操作
  • 执行顺序是从左到右:
    • 第一个语句中,先执行"X+Y="+X得到字符串"X+Y=100",再与Y拼接得到"X+Y=100200"
    • 第二个语句中,先执行X+Y的算术运算得到300,再与字符串"=X+Y"拼接得到"300=X+Y"
posted @ 2025-09-28 21:43  20243867孙堃2405-2  阅读(11)  评论(0)    收藏  举报