作业整理
1.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};
s和t没有引用同一个对象,变量只有一个值。
2.反码、补码跟原 码的基本概念
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
原码10010= 反码11101 (10010,1为符号码,故为负)
(11101) 二进制= -2 十进制
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
3.TestDouble.java
源代码
public class TestDouble { 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)); } }
4.为什么double类型的数值进行运算得不到“数学上精确”的结果?
计算机只能识别二进制,一切的数据最后都要转换为二进制。例如源程序中的2.4是十进制的,要转换为二进制,但2.4的二进制不是精确的2.4,只是接近4.4,实为2.3999999999999999,浮点数由两部分组成:指数和 尾数,在进行浮点数的二进制与十进制的转换时,浮点数参与了计算,那么转换的过程就会变得不可预测,并且变得不可逆。
5.X+Y
结果:
X+Y=100200
300=X+Y
原因:
语句1为字符串的连接,其中的“+”为连接运算,输出字符串“X+Y=”与X(100)与Y(200);
语句2为数字相加,其中的第一个“+”为相加运算,第二个“+”为连接运算。
6.加减乘除
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 jian, cheng, chu; // 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; jian=number1 - number2; cheng=number1 * number2; chu=number1 / number2; // display the results JOptionPane.showMessageDialog( null, "相加为 " + sum, "Results", JOptionPane.PLAIN_MESSAGE ); JOptionPane.showMessageDialog( null, "相减为 " + jian, "Results", JOptionPane.PLAIN_MESSAGE ); JOptionPane.showMessageDialog( null, "相乘为 " + cheng, "Results", JOptionPane.PLAIN_MESSAGE ); JOptionPane.showMessageDialog( null, "相除为 " + chu, "Results", JOptionPane.PLAIN_MESSAGE ); System.exit( 0 ); // terminate the program } }