2026.9.24
Java基础动手动脑实验练习
实验1 变量的作用域(同名变量屏蔽原则)
代码:
java
public class Test {
private static int value=1;
public static void main(String[] args) {
int value=2;
System.out.println(value);
}
}
运行结果:
plaintext
2
结论:
Java遵循局部变量屏蔽成员变量原则。在main方法内部定义了同名局部变量value,在当前方法作用域内,优先使用局部变量,外部的静态成员变量被隐藏。
实验2 字符串与加法运算符优先级
代码:
java
public class TestAdd {
public static void main(String[] args) {
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
}
}
运行结果:
plaintext
X+Y=100200
300=X+Y
结论:
+ 运算符遇到字符串时为字符串拼接。
1. "X+Y="+X+Y :先拼接字符串和100得到 X+Y=100 ,再和200拼接,输出 X+Y=100200 ;
2. X+Y+"=X+Y" :先计算两个int数值相加 100+200=300 ,再和字符串拼接。
实验3 double浮点数精度丢失
代码:TestDouble.java
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));
}
}
运行结果:
plaintext
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
结论:
计算机内部浮点数采用二进制存储,部分十进制小数无法用二进制精确表示,会产生精度丢失。
解决办法:使用 BigDecimal ,构造BigDecimal时传入字符串,不要直接传double,否则精度误差依然存在。
BigDecimal示例代码 TestBigDecimal.java
java
import java.math.BigDecimal;
public class TestBigDecimal {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.05");
BigDecimal b = new BigDecimal("0.01");
System.out.println("0.05 + 0.01 = " + a.add(b));
}
}
实验4 枚举类型 EnumTest.java
代码:
java
enum Season{
SPRING,SUMMER,AUTUMN,WINTER
}
public class EnumTest {
public static void main(String[] args) {
Season s = Season.SPRING;
System.out.println(s);
System.out.println(Season.values());
for(Season item : Season.values()){
System.out.println(item + " ordinal:"+item.ordinal());
}
}
}
运行结果:
plaintext
SPRING
[LSeason;@xxxx
SPRING ordinal:0
SUMMER ordinal:1
AUTUMN ordinal:2
WINTER ordinal:3
结论:
1. 枚举是特殊类,枚举常量默认是static final;
2. values() 可以遍历全部枚举值;
3. ordinal() 返回枚举常量定义时的序号,从0开始;
4. 枚举可以用来固定一组有限可选值,提高代码安全性。
实验5 原码、反码、补码与位运算
Java中整数全部使用补码存储。
- 正数:原码=反码=补码
- 负数:反码 = 原码符号位不变其余取反;补码 = 反码+1
测试代码:
java
public class BitTest {
public static void main(String[] args) {
int a = 5;
int b = -5;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(b));
}
}
运行结果:
plaintext
101
11111111111111111111111111111011
结论:
打印负数二进制,输出的是补码。计算机底层运算全部基于补码完成。
实验总结
本次实验练习了Java变量作用域、运算符、浮点数精度、枚举类型、二进制补码等基础知识点。
1. 局部变量会屏蔽同名成员变量,写代码时注意变量命名;
2. + 遇到字符串优先做拼接,要注意运算顺序;
3. double浮点数存在精度丢失,金融计算要用BigDecimal,并且传入字符串;
4. 枚举适合固定集合的场景,自带遍历与序号;
5. Java整型采用补码存储,是位运算的基础。

浙公网安备 33010602011771号