1:仔细阅读示例: EnumTest.java,运行它,分析运行结果?
你能得到什么结论?你掌握了枚举类型的基本用法了吗?
import java.util.*;
public enum MyEnum{
ONE, TWO, THREE
}
class Main{
public static void main(String[] args) {
MyEnum[] values = MyEnum.values();
for(MyEnum value : values){
System.out.println(value);
}
}
}
我已经掌握了 下面是我所有关于Enum的学术知识:
函数名:
| name() | 返回枚举常量的名称(字符串) |
| ordinal() | 返回其在枚举类中的位置(从0开始) |
| values() | 返回包含所有枚举值的数组(静态方法) |
| valueOf(String) | 根据名字返回对应的枚举实例 |
用法包括 基本语法与定义 在switch中枚举 带属性和方法构造(默认为private)
原码 反码 补码
一、核心概念:原码、反码、补码(以 8 位二进制为例)
三者均针对“带符号数”(最高位为符号位:0 表示正数,1 表示负数),仅负数的编码规则不同,正数的原/反/补码完全一致。
编码类型 正数(以 +3 为例) 负数(以 -3 为例) 规则说明
原码 0000 0011 1000 0011 符号位 + 数值的绝对值二进制
反码 0000 0011 1111 1100 正数不变;负数符号位不变,数值位按位取反
补码 0000 0011 1111 1101 正数不变;负数 = 反码 + 1(解决原码“正负相加不为0”的问题)
二、Java 验证程序:通过位运算观察补码特性
通过 Integer.toBinaryString() 可获取整数的 32 位补码(高位省略前导 0,负数显示完整符号位),结合位运算验证补码规则。
public class BinaryCodeTest {
public static void main(String[] args) {
// 1. 验证正数:原/反/补码一致
int positive = 3;
System.out.println("1. 正数 +3 的验证:");
System.out.println("十进制值:" + positive);
// toBinaryString 输出补码,正数无符号位问题,直接对应数值
System.out.println("32位补码(省略前导0):" + Integer.toBinaryString(positive)); // 输出 11
System.out.println("------------------------");
// 2. 验证负数:补码 = 反码 + 1(通过“负数 = 正数按位取反 + 1”验证)
int negative = -3;
System.out.println("2. 负数 -3 的验证:");
System.out.println("十进制值:" + negative);
System.out.println("32位补码:" + Integer.toBinaryString(negative));
// 输出 11111111111111111111111111111101(32位,符号位1,数值位为补码)// 验证补码规则:-3 = ~3 + 1(~为按位取反,正数取反后为负数的反码)
int notPositive = ~positive; // ~3 = -4(二进制:11111111111111111111111111111100,即-3的反码)
int negativeFromComplement = notPositive + 1; // 反码 +1 = 补码,结果为 -3
System.out.println("验证:~3(反码) = " + notPositive); // 输出 -4
System.out.println("验证:~3 + 1(补码) = " + negativeFromComplement); // 输出 -3
System.out.println("------------------------");// 3. 验证补码的核心优势:正负相加为 0(解决原码的缺陷)
int sum = positive + negative;
System.out.println("3. 补码优势验证:");
System.out.println("3 + (-3) = " + sum); // 输出 0(若用原码计算会得到 10000010,即-2,显然错误)
System.out.println("0 的32位补码:" + Integer.toBinaryString(sum)); // 输出 0
}
}
三、运行结果与结论
-
正数(如 +3)的二进制输出为 11,与原/反/补码一致,无符号位冲突。
-
负数(如 -3)的二进制输出为 32 位的 11111111111111111111111111111101,完全符合“补码 = 反码 + 1”的规则。
-
正负相加(3 + (-3))结果为 0,验证了补码解决“原码运算错误”的核心作用。
这道题的输出是:
0.06后面跟很多个0
0.58后面跟很多个0
401.5后面跟很多个0
1.233跟很多个3
以下代码的输出结果是什么?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
为什么会有这样的输出结果?
100200
300=X+Y
Java 中的 + 运算符在字符串和数字混合使用时,从左到右依次执行,并且:
如果 有一个操作数是字符串,+ 就变成 字符串拼接。
如果两个都是数字,则先做 数学加法。