9.28日报
p37动手动脑
输出结果为:
false
false
true
SMALL
MEDIUM
LARGE
第一行 false 是因为 s 和 t 是不同的枚举实例。
第二行 false 是因为枚举不是原始类型。
第三行 true 是因为 s 和 u 是相同的枚举实例。
接下来的三行分别打印出枚举 Size 的所有成员: SMALL 、 MEDIUM 和 LARGE 。
p54动手动脑
byte:1个字节,8位,-128 ~ 127;
short:2个字节,16位,-32768 ~ 32767;
int:4个字节,32位,-2147483648 ~ 2147483647;
char:2个字节,16位,范围是0-255对应ASCLL码值;
long:8个字节,64位,-9,223,372,036,854,775,808~9,223,372,036,854,775,807);
float:4个字节,32位,7~8位有效数字
double:8个字节,64位,16~17位有效数字
结论,整数和浮点数内部都是小位数变大位数无精度损失,整数变浮点数因为原补码的原因精度存在损失
p62动手动脑 输出结果为X+Y=100200 300=X+Y
原因:“+”号使用不当 第一行"x+y="+x+y 因为x+y没有括号,因此程序从左到右执行,(x+y=)是字符串 ,后面(+)号链接x的值,之后+号链接y的值,("x+y=")加(x)加(y)所以结果为X+Y=100200 第二行x+y被计算成为300 然后+“=x+y”这个字符串,300也会被转换成“300”实现相加 输出(300=x+y)
3O道四则运算
import java.util.Random;
public class Mathproblems {
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i < 30; i++) {
int num1 = random.nextInt(10);
int num2 = random.nextInt(10);
int operation = random.nextInt(4);
String[] operations = {"+", "-", "*", "/"};
String problem = String.format("%d %s %d", num1, operations[operation], num2);
// 避免除以零
if (operations[operation].equals("/") && num2 == 0) {
num2 = random.nextInt(10);
problem = String.format("%d %s %d", num1, operations[operation], num2);
}
// 输出题目
System.out.println(problem);
}
}
}