实验后的体会
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package HJssss; public class QWE { 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}; |
1 2 3 4 5 6 | false false true SMALL MEDIUM LARGEj |
结果如上,因为枚举不是原始数据类型,所以s.getClass().isPrimitive()输出的值为false,又因为枚举的每个具体值都引用一的特定的对象。相同的值则引用同一个对象,所以s和t引用同一个对象是输出false,我们也可以用==和equals()的方法直接比较对比枚举变量的值,就是说,对于枚举类型的变量,==和equals()方法执行的结果是等价的。
1 2 3 4 5 6 7 8 9 10 | package HJssss; public class QWE { 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" ); } } |
1 2 | X+Y=100200 300=X+Y |
这个的输出结果就是这个,显然结果不对因为”X+Y=”是一个字符串,+X+Y系统就相当于连续输出两个数,要想输出正确结果就要在+X+Y加上括号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package HJssss; public class QWE { 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)); } } |
输出结果:
1 2 3 4 | 0.05 + 0.01 = 0.060000000000000005 1.0 - 0.42 = 0.5800000000000001 4.015 * 100 = 401.49999999999994 123.3 / 100 = 1.2329999999999999 |
显然结果很不精确,所以我们得到结论使用double类型的数值进行计算,其结果是不精确的。那么要想解决这个问题就要去用bigdecimal类去解决,用字符串来输出,在构建bigdecimal对象时应使用字符串而不时double数值,否则,仍有可能,引发计算精度问题。
int number = Integer.parseInt(numberString );
Integer.parseInt方法将 String 转为数字 ( int)
类Integer 属于包 java.lang,它“封装”了一个int类型的整数,因此,它是原始数据类型int的“包装类”。
JOptionPane.showMessageDialog(
null, "The sum is " + sum, "Results",
JOptionPane.PLAIN_MESSAGE );
The sum is " + sum
使用运算符 + 连接字面量“The sum is” 和计算结果 sum将String 和其它数据类型相加,结果是一个新的String。
在学习原码, 反码和补码之前, 我先了解了机器数和真值的概念,对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式,原码就是第一位用1和0表示符号,其余位表示值,原码是人脑最容易理解和计算的表示方式,反码就是正数的反码就是它原码的本身,负数的反码它的符号位的那个数不变,其余各个位取反,可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算,补码的表示方法正数的补码还是其原码的本身,负数的补码符号位不变,其余位取反,最后一位加一,可以看出,负数的补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值,我也了解了为什么要使用原码,反码,补码,原码,反码,补码是完全不同的,原码才是对人类最容易直接识别并用于直接运算的表示方式,因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减. (真值的概念在本文最开头). 在我运行了那个代码之后,我认识了枚举,枚举它是一种新的类型,允许用常量来表示特定的数据片段,而且全部以类型安全的形式来表示,枚举的使用增强了程序的健壮性,比如在引用一个不存在的枚举值的时候,编译器会报错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)