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整型采用补码存储,是位运算的基础。

posted @ 2026-09-24 18:24  冯佳蕾  阅读(9)  评论(0)    收藏  举报