2.14

 运行EnumTest.java

public class EnumTest {

   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};

结果如下

  

Size为枚举类,s和t分别赋值了其下的两个对象,因为对象地址值不同所以比较结果为false,之后用getClass().isPrimitive()函数证明非原始数据类型而是引用数据类型,u则通过字符串转换赋予了枚举类的一个对象值,其地址值与s相同故结果为true,最后遍历枚举类中的所有值

 

// An addition program 

import javax.swing.JOptionPane;  // import class JOptionPane

public class Addition {
   public static void main( String args[] )
   {
      String firstNumber,   // first string entered by user
             secondNumber;  // second string entered by user
      int number1,          // first number to add
          number2,          // second number to add
          sum;              // sum of number1 and number2

      // 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 );

      // add the numbers
      sum = number1 + number2;

      // display the results
      JOptionPane.showMessageDialog(
         null, "The sum is " + sum, "Results",
         JOptionPane.PLAIN_MESSAGE );

      System.exit( 0 );   // terminate the program
   }
}

 

 

 

Double类型数据在计算时无法获取准确值是由于浮点数的存储和计算方式导致的。在计算机中,浮点数使用有限的二进制位来表示,而实数是无限的。
因此,浮点数的表示是一个近似值,而不是准确的值。由于浮点数的存储格式是有限的,所以在进行计算时会引入舍入误差。
这意味着在进行浮点数计算时,结果可能会有一定的误差。这种误差通常是由于小数位数的舍入误差

 

public class Test {
public static void main(String[] args) {
   int intValue=100;
   long longValue=intValue;
   double doubleValue=1234567890;
   float floatValue=(float)doubleValue;
   System.out.println(floatValue);//1.23456794E9
   
   int X=100;
   int Y=200;
   System.out.println("X+Y="+X+Y);
   System.out.println(X+Y+"=X+Y");
   doNotRunme();
   
   String string="";
   double d1=1000.123;
   double d2=1000.123;
   if(Math.abs(d2-d1)<1e-10){
      
   }
   //System.out.println(string);

}

public static void doNotRunme()
{
   doNotRunme();
}
}

  在这个程序中,有几个地方可能会导致结果不符合预期:1. 在将int类型的变量intValue赋值给long类型的变量longValue时,由于long类型的范围比int类型大,可以直接进行赋值。2. 在将double类型的变量doubleValue赋值给float类型的变量floatValue时,由于float类型的精度比double类型小,需要进行强制类型转换。在这里,使用了(float)doubleValue来将doubleValue转换为float类型。3. 在打印输出floatValue时,由于浮点数的表示方式,可能会出现科学计数法的形式,例如1.23456794E9。4. 在打印输出X+Y时,由于字符串连接操作符(+)的优先级比加法运算符高,所以先进行了字符串连接操作,将X和Y连接成一个字符串,然后再连接到"X+Y="字符串后面。5. 在打印输出X+Y时,由于加法运算符的优先级比字符串连接操作符低,所以先进行了加法运算,然后再连接到"=X+Y"字符串后面。6. 在调用doNotRunme()方法时,该方法内部又调用了自身,形成了一个无限递归的循环,导致程序无法正常结束。这个程序中的结果可能会受到数据类型转换、运算符优先级和递归调用等因素的影响,导致结果与预期不符。

 

posted @ 2024-02-14 20:32  cor0000  阅读(35)  评论(0)    收藏  举报