1、EnumTest.java的:运行结果:对象引用比较:System.out.println(st)输出false;基本类型判断:s.getClass().isPrimitive()返回false;字符串转换验证:Size.valueOf("SMALL")与s的引用比较结果为true;枚举遍历:Size.values()输出所有枚举常量(SMALL、MEDIUM、LARGE)。
结论:枚举类型是引用类型!枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。可以使用“”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。
2、运行:
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999
不意外,重复调用导致内存不足。
3、运行结果:X+Y=100200
300=X+Y
原因:当字符串在前时("X+Y="+X+Y),Java会优先进行字符串连接操作;当数值在前时(X+Y+"=X+Y"),Java会先进行数值运算再连接字符串。
4、代码:
import java.util.Random;
public class MathProblemGenerator {
private static final int PROBLEM_COUNT = 30;
private static final int MAX_NUMBER = 100;
private static final Random random = new Random();
public static void main(String[] args) {generateProblems();
}private static void generateProblems() {for (int i = 1; i <= PROBLEM_COUNT; i++) {int a = random.nextInt(MAX_NUMBER) + 1;int b = random.nextInt(MAX_NUMBER) + 1;char operator = getRandomOperator();String problem = formatProblem(a, b, operator);System.out.println(i + ". " + problem);}
}private static char getRandomOperator() {char[] operators = {'+', '-', '×', '÷'};return operators[random.nextInt(operators.length)];
}private static String formatProblem(int a, int b, char operator) {if (operator == '-' && a < b) {int temp = a;a = b;b = temp;} if (operator == '÷') {b = random.nextInt(10) + 1;a = b * (random.nextInt(10) + 1);}return a + " " + operator + " " + b + " = ";
}
}