当前位置: 首页 > news >正文

当日总结(课后作业2)

1.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};
运行结果分析:这段代码首先通过enum Size{SMALL,MEDIUM,LARGE};定义了一个枚举类型Size,他有三个枚举常量SMALL,MEDIUM,LARGE,代码先定义了Size类型的两个变量s,t,并分别将他们赋值为SMALL,LARGE,实质上,这里是让s,t分别指向了SMALL,LARGE这两个唯一实例,通过 System.out.println(st); 判断二者指向是否相同并输出判断结果,应为false。s.getClass()可以获取对象的运行时类,在这会获取s运行时的类Size,isPrimitive()会判断获得的类是不是基本数据类型,并输出判断结果,这里输出false。valueOf("SMALL");会根据字符串名字获取对应的枚举常量,在这创建的Size类型的u就会指向SMALL这个实例,与s指向是相同的,所以System.out.println(su);会输出true。 Size.values()会返回一个包含Size中所有枚举常量的数组,用for循环遍历该数组,每次都让value指向数组中的一个枚举常量并输出,因此依次输出:SMALL、MEDIUM、LARGE,最后的运行结果应为
false
false
true
SMALL
MEDIUM
LARGE
结论:
(1)定义枚举类型的写法为enum 枚举名 { 常量1, 常量2, ..., 常量n }
(2)枚举常量可以通过枚举类型.枚举常量的形式访问,并且可以将其赋值给枚举类型的变量
(3)枚举常量可以用==来判断是否相等
(4)枚举是引用类型
(5)枚举可以使用 valueOf(String name) 方法,根据常量名称(字符串)返回对应的枚举常量
(6)枚举中的values() 方法,返回一个包含所有枚举常量的数组(顺序与定义时一致),可用于遍历
2.
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
反映了java中的浮点数运算存在精度上的误差,其原因为double类型采用二进制存储小数。然而,并非所有十进制小数都能被二进制精确表示,例如 0.01、0.42 等,它们会被存储为近似值。当进行运算时,这些近似值的误差会累积,导致最终结果出现偏差。解决精度问题最常用的方法是使用BigDecimal类,但扔要注意的是在创建BigDecimal类对象时要使用字符串,而不是使用double数值,原因是:使用double数值时,数值本身的精度误差会被带入BigDecimal,从而对结果造成影响
3.public static void main(String args[]) {
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
原因:Java 中,+ 运算符有两种作用:
当两边都是数值类型(如int)时,执行算术加法;
当其中一边是字符串(String)时,执行字符串拼接(将非字符串类型自动转为字符串);
运算顺序为从左到右。
第一条输出语句:System.out.println("x+y="+x+y);
执行顺序:先处理左边的 "x+y=" + x
"x+y=" 是字符串,x 是int类型(100),触发字符串拼接,结果为 "x+y=100";
再处理结果与 y 的拼接:"x+y=100" + y
y 是int类型(200),继续拼接,最终结果为 "x+y=100200"。
第二条输出语句:System.out.println(x+y+"=x+y");
执行顺序:先处理左边的 x + y
x和y都是int类型,执行算术加法:100 + 200 = 300;
再处理结果与 "=x+y" 的拼接:300 + "=x+y"
300(数值)与字符串拼接,转为 "300=x+y"。

http://www.hskmm.com/?act=detail&tid=17333

相关文章:

  • Codeforces Global Round 29 (Div. 1 + Div. 2) A~E
  • AI 低代码平台:不止于 “快”,解码技术融合的深层逻辑
  • 实用指南:【知识拓展Trip Five】寄存器
  • 计算机视觉(opencv)实战二十七——目标跟踪 - 教程
  • P8367 [LNOI2022] 盒
  • 蓝桥杯 2025 省 B 题:画展布置 - 题解笔记
  • 二维坐标下的运算
  • Polar2025秋季个人挑战赛web-writeup
  • Day4
  • 题解:P12751 [POI 2017 R2] 集装箱 Shipping containers
  • 弱网配置
  • 绘制金融集团监控大屏的地图demo
  • 实用指南:《原神助手》开源神器:游戏体验大升级
  • 9-25
  • AT_agc021_d [AGC021D] Reversed LCS
  • adb shell 常用文件命令
  • Java文件编程
  • 自我介绍与规划
  • 软件工程学习日志2025.9.25
  • 从50ms到30ms:YOLOv10部署中图像预处理的性能优化实践 - 实践
  • redis实现分布式锁1
  • 完整教程:(13)GPS/无GPS转换
  • Transformer自回归关键技术:掩码注意力原理与PyTorch完整实现
  • 第四篇
  • PyTorch图神经网络(六)
  • Qwen多模态系列模型笔记—Qwen-VL
  • go 语法里变量前面增加、*区别
  • 历程回顾-(2024-2025)
  • CF Round 1053(2150 2151) 总结
  • 20250922_QQ_backdoor