• 动手动脑及实验性练习总结


    1.EnumTest.java的分析

       (1)源代码

     1 public class EnumTest {
     2 
     3     public static void main(String[] args) {
     4         Size s=Size.SMALL;
     5         Size t=Size.LARGE;
     6         //s和t引用同一个对象?
     7         System.out.println(s==t);  //
     8         //是原始数据类型吗?
     9         System.out.println(s.getClass().isPrimitive());
    10         //从字符串中转换
    11         Size u=Size.valueOf("SMALL");
    12         System.out.println(s==u);  //true
    13         //列出它的所有值
    14         for(Size value:Size.values()){
    15             System.out.println(value);
    16         }
    17     }
    18 
    19 }
    20  enum Size{SMALL,MEDIUM,LARGE}

    (2)结果截图

    (3)s和t没有引用同一个对象,变量只有一个值,那么就要选取枚举类型中的一个值进行赋值。上例是将字符串转化为枚举类型。

    (4)枚举不属于原始数据类型,是引用类型,它的具体值引用的是特定的对象。int(整数),float(浮点)类型为原始数据类型。

    2.反码、补码跟原的基本概念

      (1)原码: 这个数本身的二进制形式

       (2)反码

          正数的反码就是它的原码,而负数的反码是将它的原码的除符号位之外的各位求反。

     (3)补码

        正数的补码还是它的原码,但负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。

      PS:JAVA采用的是补码。

    3.TestDouble.java

    (1)源代码

    1 public class TestDouble {
    2 
    3     public static void main(String args[]) {
    4         System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
    5         System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
    6         System.out.println("4.015 * 100 = " + (4.015 * 100));
    7         System.out.println("123.3 / 100 = " + (123.3 / 100));
    8     }
    9 }

    (2)运行结果截图

       

    (3)为什么double类型的数值进行运算得不到“数学上精确”的结果?

        计算机只能识别二进制,一切的数据最后都要转换为二进制。例如源程序中的2.4是十进制的,要转换为二进制,但2.4的二进制不是精确的2.4,只是接近4.4,实为2.3999999999999999,浮点数由两部分组成:指数和 尾数,在进行浮点数的二进制与十进制的转换时,浮点数参与了计算,那么转换的过程就会变得不可预测,并且变得不可逆。

    (4)在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)

        4.

          int X=100;

          int Y=200;

          System.out.println("X+Y="+X+Y);

          System.out.println(X+Y+"=X+Y");

       (1)代码的输出结果是什么?

         

       (2)为什么会有这样的输出结果?

           语句1为字符串的连接,其中的“+”为连接运算,输出字符串“X+Y=”与X(100)与Y(200);

           语句2为数字相加,其中的第一个“+”为相加运算,第二个“+”为连接运算。

    5. Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。

       

     1 class c
     2 {
     3   public int name = 12;
     4 }
     5 class d extends c
     6 {
     7 int name =13;
     8 void d2()
     9 {
    10 System.out.println(super.name);
    11 }
    12 }
    13 public class Main
    14 {
    15   public static void main(String[]args)
    16   {
    17   d d1 = new d();
    18   System.out.println(d1.name);
    19 d1.d2();
    20   }
    21 }

    6.看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论?

    (1)Java里面包含8个基本数据类型,boolean、byte、char、short、int、float、douboe、long。

         byte类型是JAVA中最小的数据类型,占8位,表示数值范围为-128到127。

         short类型占2个字节,取值范围为-32678到32677。

         char类型占2个字节,表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0 到 65535。

         int型占4个字节,取值范围为-2147483648 到2147483647 。

         float 单精度浮点型型占4个字节,取值范围从-3.4E38 到3.4E38。

         long 长整型在内存中占8个字节,取值范围从 -9223372036854775808 到9223372036854775807。

         double 型占8个字节,取值范围从-1.7E308 到1.7E308。

          boolean型变量在内存中只占1/8个字节

    (2)Java语言中的整型的位数是固定的,而不会根据硬件平台以及操作系统的不同而不同。 JAVA中所有的数字变量都是有符号(正负)的。

    7.编写程序。实验目的:用户输入两个数,求出其加减乘除,并用消息框显示计算结果。

     (1)源代码

     

    import javax.swing.JOptionPane;//导入包javax.swing中JOptionPane类
    
    public class Yuanshuan {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            String firstNumber,secondNumber;        
            int  number1,number2,
                sum,
                cha,
                ji,
                shang;
            
            firstNumber =
                     JOptionPane.showInputDialog( "输入第一个数: " );
            secondNumber =
                     JOptionPane.showInputDialog( "输入第二个数:" );
            
             number1 = Integer.parseInt( firstNumber ); 
             number2 = Integer.parseInt( secondNumber );
             
             sum = number1 + number2;
             cha=number1-number2;
             ji=number1*number2;
             shang=number1/number2;
             
             JOptionPane.showMessageDialog(
                     null,"和为" + sum
                     +"\n"+"差为"+cha
                     +"\n"+"积为"+ji
                     +"\n"+"商为"+shang);
                  
             System.exit( 0 );
             
        }
    
    }

    (2)结果截图

        

     

     

         

  • 相关阅读:
    ubuntu jdk安装
    paxos 算法略解
    java 异常问题 (望解答)
    jquery加载问题
    The Pragmatic Programmer Quick Reference Guide
    车辆调度管理系统开发(三)
    车辆调度管理系统开发(二)
    车辆调度管理系统开发(一)
    vue2过渡&动画
    VScode 之快速创建vue模板
  • 原文地址:https://www.cnblogs.com/LL66/p/4856960.html
Copyright © 2020-2023  润新知