实验后的体会

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表示符号,其余位表示值,原码是人脑最容易理解和计算的表示方式,反码就是正数的反码就是它原码的本身,负数的反码它的符号位的那个数不变,其余各个位取反,可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算,补码的表示方法正数的补码还是其原码的本身,负数的补码符号位不变,其余位取反,最后一位加一,可以看出,负数的补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值,我也了解了为什么要使用原码,反码,补码,原码,反码,补码是完全不同的,原码才是对人类最容易直接识别并用于直接运算的表示方式,因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减. (真值的概念在本文最开头). 在我运行了那个代码之后,我认识了枚举,枚举它是一种新的类型,允许用常量来表示特定的数据片段,而且全部以类型安全的形式来表示,枚举的使用增强了程序的健壮性,比如在引用一个不存在的枚举值的时候,编译器会报错。

 

 

posted @   南北啊  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
1 2 3
4
点击右上角即可分享
微信分享提示