当前位置: 首页 > 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.zskr.cn/news/11847.html

相关文章:

  • AI 低代码平台:不止于 “快”,解码技术融合的深层逻辑
  • 动态内存管理(2) - 详解
  • Nano-Banana免费使用指南:一键生成专属3D手办,附超详细提示词 - 指南
  • 绘制金融集团监控大屏的地图demo
  • AM1.5G 太阳光谱 - 教程
  • 常用注解汇总
  • 软件工程学习日志2025.9.25
  • java课基础问题整理与解答
  • 完整教程:(13)GPS/无GPS转换
  • 第四篇
  • CF Round 1053(2150 2151) 总结
  • AT_agc012_d [AGC012D] Colorful Balls
  • 9/25
  • 关闭Edge浏览器页面的圆角效果
  • 搜索二维矩阵II-leetcode
  • Rust/C/C++ 混合构建 - Cmake集成Cargo编译动态库
  • 学习敏捷课程PSM,自考证书分享
  • 详细介绍:基于卷积神经网络的人车识别技术:从原理突破到场景重构的深度探索
  • Rust/C/C++ 混合构建 - 用Bazel构建Rust与C
  • sync.pool 面试题
  • 深入解析:SpringBoot与反射
  • 云栖小镇现场追踪!触摸AI 未来
  • 实用指南:【JavaEE】多线程案例(一)
  • Java学习日记9.18
  • AI Agent如何重塑人力资源管理?易路iBuilder平台实战案例深度解析
  • docker-compose + macvlan + Elasticsearch - 9.1.4 + Kibana - 9.1.4
  • WinForm 计时器 Timer 学习笔记
  • 深入了解一波JVM内存模型
  • CCPC2024-Zhengzhou G Same Sum(线段树)
  • CDN中使用边缘函数实现自定义编程