课后作业和动手动脑
s,t引用的不是同一对象;
枚举不是原始的数据类型,所以显示false;
s和u是同一个字符串。
结论:(1)枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值引用同一个对象;(2)可以使用“==”和equals()方法直接对比枚举变量的值。
2.
+X+Y是对字符串进行连接而不是对他们进行数学上的运算
课后练习
(1)
1.反码:机器数的反码可由原码得到。如果机器数是正数,则机器数的反码和原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反得到的。
2.机器数的补码可由原码的得到。如果机器数是正数,则该机器数的补码和原码一样;如果机器数是负数,则该机器数的补码是对它的原码(符号位除外)各位取反,并在末位加1得到的。
3.原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用1表示负号
(2)
这个涉及到二进制与十进制的转换问题。
N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
解决办法: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);//释放空间
}