课后作业和动手动脑

st引用的不是同一对象;

枚举不是原始的数据类型,所以显示false

su是同一个字符串。

结论:(1)枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值引用同一个对象;(2)可以使用“==”和equals()方法直接对比枚举变量的值。

2.

+X+Y是对字符串进行连接而不是对他们进行数学上的运算

                 课后练习

1

1.反码:机器数的反码可由原码得到。如果机器数是正数,则机器数的反码和原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反得到的。

2.机器数的补码可由原码的得到。如果机器数是正数,则该机器数的补码和原码一样;如果机器数是负数,则该机器数的补码是对它的原码(符号位除外)各位取反,并在末位加1得到的。

3.原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用1表示负号

2

这个涉及到二进制与十进制的转换问题。
N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(100次幂)+4×(10-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(20次幂)+0+1×(2-2次幂)=十进制的3.25
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2n次方)。

解决办法:1.NumberFormat nFormat=NumberFormat.getNumberInstance(); 
nFormat.setMaximumFractionDigits(2);//设置小数点后面位数为
System.out.println(nFormat.format(3.1415););

2.如int a=3 int b=3 编译器先处理int a=3double f=0;
double i=3,生存期可知.println("
double d=f*i;);
double f1=0.0005,然后在找字面值等于3的地址,现在有了;
double j=3,查找有没有3这个字面值的地址,出于速度的原因就把它们放在栈中;在创建完变量为b的应用后;
double d1=f1*j.out;
if(d==d1){
System;aaa",自动变量存的是字面值;
}这样就相当,java中基本数据类型称为自动变量,由于字面值的数据大小可知,栈中的数据可以共享,接着处理int b=3;首先它会在栈中创建一个变量为a的引用,没有 就开辟一个存放3这个字面值的地址,则指向3的地址.0005

                课后作业

import javax.swing.JOptionPane;

public class xiaoxikuang {

 

public static void main(String[] args) {

// TODO 自动生成的方法存根

String firstNum,secondNum;

int num1,num2,sum,minus,mul,div;

//读取用户的第一个数字作为字符串

firstNum = JOptionPane.showInputDialog("Enter first integer");

//读取用户的第二个数字作为字符串

secondNum = JOptionPane.showInputDialog("Enter second integer");

//把字符串转换为整型

num1=Integer.parseInt(firstNum);

num2=Integer.parseInt(secondNum);

//计算

sum =num1+num2;

minus=num1-num2;

mul=num1*num2;

div=num1/num2;

//显示结果

JOptionPane.showMessageDialog(null,"和为: "+sum+" 差为:"+minus+" 积为:"+mul+" 商为:"+div,"Results",JOptionPane.PLAIN_MESSAGE);

System.exit(0);//释放空间

}

posted @ 2015-10-07 09:31  夕颜mu  阅读(198)  评论(0编辑  收藏  举报