课程总结(作业2)

1.仔细阅读示例: EnumTest.java,运行它,分析运行结果?
你能得到什么结论?你掌握了枚举类型的基本用法了吗?枚举的定义与实例化
枚举是一种特殊的类,实例是预定义且有限的
不能通过 new 关键字创建枚举实例
枚举的基本用法
可以包含字段、方法和构造函数
可以实现接口
自带 values () 和 valueOf () 方法

2.以下代码的输出结果是什么?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
为什么会有这样的输出结果?
产生这种结果的原因与 Java 中的运算符优先级和字符串拼接规则有关:
对于第一个输出语句 System.out.println("X+Y="+X+Y);:
运算从左到右进行
首先执行 "X+Y=" + X,由于字符串与其他类型相加会进行字符串拼接,结果为 "X+Y=100"
然后执行 "X+Y=100" + Y,继续进行字符串拼接,最终结果为 "X+Y=100200"
对于第二个输出语句 System.out.println(X+Y+"=X+Y");
同样从左到右运算,但先执行 X+Y(因为都是数值类型)
100 + 200 的结果是 300(数值运算)
然后执行 300 + "=X+Y",进行字符串拼接,最终结果为 "300=X+Y"
结论:当 + 运算符两侧有一个是字符串类型时,会执行字符串拼接操作;而当两侧都是数值类型时,会执行算术加法运算。运算顺序遵循从左到右的原则。

3.请运行以下代码(TestDouble.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));
}
}
输出结果
0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999

这是由于 Java 中double类型(双精度浮点数)采用 IEEE 754 标准存储,该标准使用二进制表示浮点数。
二进制无法精确表示某些十进制小数像 0.05、0.01 这样的十进制小数,在转换为二进制时是无限循环的,因此只能存储近似值。
运算时误差累积当对这些近似值进行加减乘除运算时,微小的误差会累积,导致最终结果与预期的十进制结果有细微偏差。
为什么会出现这些特定的结果?
0.05 和 0.01 的二进制近似值相加后,得到的不是精确的 0.06
同样,其他运算也因为二进制表示的局限性产生了微小误差

Java 程序通常经历5个阶段:
1、Edit(编辑):程序员书写代码并保存到 磁盘上;
2、Compile(编译):编译器生成字节码(bytecodes);
3、Load(装入):类装载器(Class loader)在内存中保存字节码;
4、 Verify(校验):校验器Verifier保证字节码不违反安全规则;
5、Execute(执行):释器将字节码翻译成机器码。
Java对标识符的要求:
(1)开头:字母,_和$;
(2)不能以数字打头;
(3)不能包含空白字符、制表、空格、回车、换行符;
(4)不能用关键字。

规范标识符的重要性:
没有规范的命名不是一个科班出身的软件开发者应有的行为
Java标识符规范:
类名称: Mammal
函数名:getAge
常量:MAX_HEIGHT
标识符起名应该尽量做到“望名知义”。
各种进制下的数值:(10)10=(0xA)16=(012)8
Java中的基本数据类型独立于具体平台
整型: byte(8),short(16),int(32), long(64)
浮点型: float(32), double(64)
使用科学计数法定义浮点数值:123.456=1.23456e+2
布尔型: true, false
字符型: ‘a’, ’A’
字符串: “Hello,China” String s1=“abc”,S2=“abc”
利用关键字final声明常量,对于全局的常量(即在整个项目中都可用),通常按以下模式声明:
public static final int MAX_VALUE=512
如果某常量只在本类使用,则应将其定义为private的。
常量名字通常采用大写字母。
Java中除了 int , float等少数几个数据类型,其余的数据类型都用来引用对象。
int、float等这些数据类型称为“原始数据类型(primitive type)”。
Precedence of operators(运算符结合性):除了赋值运算符 = ,所有的结合性都是从左到右
例如: x = y = z 相当于 x = (y = z)
编程建议:
错误:象x=y=z这样的可能引起误解的代码,应该尽量避免,如果确实需要,也应该采用右边加上括号的形式,或者是添加注释。

每个变量都有一个名字、数据类型、所占内存单元数和一个值
名字 对应于内存中的位置
数据类型 决定了它所占用的内存单元数量
值 表示变量所占用的内存单元中所保存的数据。
变量的读写:当新值被赋给变量时,老值将被取代,仅从内存中读数据不会破坏数据
在实际开发中,一般使用变量来存储用户在程序运行时输入的数据。
变量在使用前应保证它有确切的值。
下面简要介绍一下如何在Java应用程序中读入数据。
自动类型转换是安全的:
int intValue=100;
long longValue=intValue;
强制类型转换时,可能会引起信息的损失。
double doubleValue=1234567890;
float floatValue=(float)doubleValue;
System.out.println(floatValue); //1.23456794E9
int number = Integer.parseInt(numberString );
Integer.parseInt方法将 String 转为数字 ( int)
类Integer 属于包 java.lang,它“封装”了一个int类型的整数,因此,它是原始数据类型int的“包装类”。

"The sum is " + sum
使用运算符 + 连接字面量“The sum is” 和计算结果 sum将String 和其它数据类型相加,结果是一个新的String
如果变量的数据类型是一个类的名字,就是引用类型的变量,它将引用一个对象。
String 是个类(注意类名首字母大写)
firstNumber, secondNumber将分别引用两个字符串对象。
如果数据类型是一个原始类型(其名称由小写字母组成),这种类型的变量将直接保存一个原始数据类型的值。
double 是一个原始数据类型
number1, number2变量将保存两个双精度数
Double.parseDouble是一个Double类所定义的静态方法
将 String 数据转为double类型的
返回 double类型的数值
记住静态方法调用语法:类名.静态方法名( 参数 )
Double是原始数据类型double的“包装类”,属于引用类型

posted @ 2025-09-27 15:57  雾1435  阅读(7)  评论(0)    收藏  举报