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

课后作业小结

Java学习动手问题整理

最近跟着老师学Java基础,遇到了不少需要动手验证的小问题,整理了几个印象深的,记录下我的思考和结果,方便以后复习。

一、枚举类型怎么用?

老师让看EnumTest.java,我自己写了个简单例子试了试:

// 定义枚举类型
enum Size {SMALL, MEDIUM, LARGE}
public class EnumTest {public static void main(String[] args) {Size s1 = Size.SMALL;Size s2 = Size.valueOf("SMALL");// 比较两个枚举值System.out.println(s1 == s2); // 输出true// 遍历所有枚举值for (Size size : Size.values()) {System.out.println(size);}}
}

运行后发现,相同的枚举值其实是同一个对象,用“==”就能比较。而且还能通过values()方法遍历所有枚举选项,这点还挺方便的。

二、double计算为啥不精确?

老师给的TestDouble.java代码,运行结果跟我想的不一样:

public class TestDouble {public static void main(String[] args) {System.out.println(0.05 + 0.01); // 结果是0.060000000000000005System.out.println(1.0 - 0.42); // 结果是0.5800000000000001}
}

查了资料才明白,double用二进制存储,有些十进制小数没法精确表示,只能存近似值。后来用BigDecimal解决了,要注意用字符串当参数:

import java.math.BigDecimal;
public class TestBigDecimal {public static void main(String[] args) {BigDecimal a = new BigDecimal("0.05");BigDecimal b = new BigDecimal("0.01");System.out.println(a.add(b)); // 正确输出0.06}
}

三、字符串拼接的小陷阱

下面两段代码,一开始以为结果差不多,实际差很多:

public class StringAddTest {public static void main(String[] args) {int x = 100, y = 200;System.out.println("x+y=" + x + y); // 输出x+y=100200System.out.println(x + y + "=x+y"); // 输出300=x+y}
}

琢磨了半天,原来“+”遇到字符串就会变成连接操作,而且是从左往右算。第一段先把“x+y=”和x连起来,再连y;第二段先算x+y的和,再跟字符串连接,难怪结果不一样。

四、同名变量谁生效?

看到一段代码,里面有两个叫value的变量:

public class VariableTest {private static int value = 1;public static void main(String[] args) {int value = 2;System.out.println(value); // 输出2}
}

运行后输出2,不是1。原来局部变量会“盖住”外面的变量,要是想访问外面的,得用特殊方式,比如静态变量用类名,成员变量用this(不过这个例子里是静态的,暂时还没完全搞懂this的用法,后续再学)。

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

相关文章:

  • 课后3
  • 尝试决定
  • 竞赛第一步----进实验室
  • Java语法基础课程动手动脑与实验问题深度解析
  • lc1038-从二叉搜索树到更大和树
  • 课程中的问题
  • 课后2
  • Java语法基础课程“动手动脑”问题与实验整理
  • 课后感想
  • mysql的单表如何仅保留半年的数据
  • Java基础核心问题 链接版
  • java作业
  • Insightly存储型XSS漏洞分析:通过链接名称注入恶意脚本
  • H3C交换机的配置学习-01
  • Python脚本生成包含标准的#ifndef保护宏的头文件
  • java实验作业和动手动脑
  • (第三次)Numpy Pandas
  • sg.帮我写一个类似于vb6窗体设计的PySimpleGUI布局设计助手
  • ABC325EF 题解
  • Win11 安装 Python
  • mysql的单表多大要考虑分库分表
  • 2025 采购传感器不踩坑!国内传感器优秀厂家清单:解决精度,防爆,极端环境难题
  • sg.有没有一个可视化辅助设计pysimplegui布局的小工具?
  • 无刷电机速度闭环控制
  • sg.如何使用PySimpleGUI调试器实时监控变量
  • 微信小程序云开发 授权手机号快捷登陆
  • newDay05
  • AtCoder Beginner Contest 425 ABCDEF 题目解析
  • sg.如何使用PySimpleGUI调试器窗口
  • 对话汇总:从东方哲学到可计算架构的演进