zoukankan      html  css  js  c++  java
  • 动手动脑以及课后实验性问题

    1.仔细阅读示例: EnumTest.java,运行它,分析运行结果?

    第一个false说明st没有引用同一个对象。第二个false说明s不是原始数据类型。Size.valueOf可以是u得到SMALL,然后s就和u相同了。然后将Size.values的所有值赋给value,然后列出所有值。

    2.你能得到什么结论?你掌握了枚举类型的基本用法了吗?

    1>JAVA的基本数据类型有8种:byte(字节)short(短整型)int(整数型)long(长整型)float(单精度浮点数类型)double(双精度浮点数类型)char(字符类型)boolean(布尔类型)。而枚举类型不是原始数据类型。

    2>它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

    3>可以使用“==”方法直接比对枚举变量的值。

    3.阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原 码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的。

    原码:二进制的定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

    反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

    补码:正数的补码与其原码相同;负数的补码是在其反码末位加1

    4.请看上边的示例代码,输出结果是什么?

    输出结果是2,如果去掉“int  value=2;”这行代码则输出结果为1,这是因为:Java变量遵循“同名变量的屏蔽原则”。如果想输出value=1,可以用“System.out.println(Test.value);

    其中第一个value是成员变量,也是全局变量。第二个是局部变量。在Java中,局部变量能够覆盖全局变量,在局部使用某个变量的时候JVM会优先找和当前使用位置近的变量定义。

    5.请运行以下代码

    你看到了什么样的输出?

    这是因为使用double类型的数值进行计算, 其结果是不精确的。

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

    这个涉及到二进制与十进制的转化问题。N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×102+2×10+3×(100次幂)+4×(10-1次幂);其他的进制也是同解,例如二进制数11.01=1×2+1×(20次幂)+0+1×(2-2次幂)=十进制的3.25

    Double类型的数值占用64bit,即 64个二进制单位,除去最高位表示正负符号的位,在最低位一定会与实际数据存在误差(除非实际数据是2n次方)。

    举个例子来说,比如用4bit来表示3.26,从高到低位依次应为21,0-1-2次幂,根据最上面的分析,应当在二进制数11.01(对应的3.25)和11.10(对应的3.5)之间选择。

    简单的来说就是我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是无穷多位),而double类型的数值只有64bit后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果

    6.以下代码的输出结果是什么?

    int X=100;

    int Y=200;

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

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

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

    Java中的加号有时是连接符,有时是运算符:

    1>当左右两边连接的都是非数字型时,则为连接符。

    2>当一边是数值类型,另一边是非数值类型时,则为连接符。

    3>当两边都是数值类型时,则为运算符,即相加求和的作用。

    第一个是连接符,第二个是运算符。

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

    //, 要求 用户输入两个 整数,求出其加减乘除,并用消息框显示计算结果 import javax.swing.JOptionPane;

    public class Fouroperations { public static void main( String args[] ) {    String firstNumber,             secondNumber;     int number1,number2, sum,difference,product,quotient;

       // read in first number from user as a string    firstNumber =       JOptionPane.showInputDialog( "Enter first integer" );

       // read in second number from user as a string    secondNumber =       JOptionPane.showInputDialog( "Enter second integer" );

       // convert numbers from type String to type int    number1 = Integer.parseInt( firstNumber );    number2 = Integer.parseInt( secondNumber );

          sum = number1 + number2;    product=number1*number2;    if(number1<number2)    {difference=number2-number1;    quotient=number2/number1;    }    else    {difference=number1-number2;    quotient=number1/number2;    }    // 输出运算结果

       JOptionPane.showMessageDialog(null, "The sum is " + sum, "Results", JOptionPane.PLAIN_MESSAGE );    JOptionPane.showMessageDialog(null, "The difference is " + difference, "Results", JOptionPane.PLAIN_MESSAGE );    JOptionPane.showMessageDialog(null, "The product is " + product, "Results", JOptionPane.PLAIN_MESSAGE );    JOptionPane.showMessageDialog(null, "The quotient is " + quotient, "Results", JOptionPane.PLAIN_MESSAGE );    System.exit( 0 );   // terminate the program } }

  • 相关阅读:
    实用机器学习 跟李沐学AI
    Explicitly drop temp table or let SQL Server handle it
    dotnettransformxdt and FatAntelope
    QQ拼音输入法 禁用模糊音
    (技术八卦)Java VS RoR
    Ruby on rails开发从头来(windows)(七)创建在线购物页面
    Ruby on rails开发从头来(windows)(十三)订单(Order)
    Ruby on rails开发从头来(windows)(十一)订单(Order)
    新员工自缢身亡,华为又站到了风口浪尖
    死亡汽油弹(Napalm Death)乐队的视频和来中国演出的消息
  • 原文地址:https://www.cnblogs.com/keaidejava/p/5939814.html
Copyright © 2011-2022 走看看