课程问题 Java
关于Java的一些常用方法,基础知识
## 变量间的类型转换
java
//自动类型转换是安全的
//强制类型转换时,可能会引起信息的缺失
## 浮点数的运算与比较
java
//使用浮点数进行运算时,会造成精度的缺失
//可以使用BigDecimal类,精确的计算
## 字符串转化为数字的方法
java
int number = Integer.parseInt(numberString)
## 字符串转化为浮点数
java
number1 = Double.parseDouble(firstNumber);
## 典型Java程序开发过程
1. Edit(编辑):书写代码并保存到磁盘上
2. Compile(编译):编译器生成节码
3. Load(装入):类装载器在内存中保存字节码
4. Verify(校验):校验器保证字节码不违反安全规则
5. Execute(执行):解释器将字节码翻译成机器码
## 反码,源码和补码
反码(One's Complement)、源码(Sign-Magnitude)和补码(Two's Complement)都是用来表示有符号整数的不同方法,它们在表示负数时有一些关键区别:
1. 反码(One's Complement):
- 正数的反码与其二进制原码相同。
- 负数的反码是将其二进制原码中的每个位取反(0变为1,1变为0)得到的。
- 反码有两个零表示法,+0和-0。
2. 源码(Sign-Magnitude):
- 正数的源码与其二进制原码相同。
- 负数的源码是将其二进制原码中的符号位(最高位)取反,其余位不变。
- 源码也有两个零表示法,+0和-0。
3. 补码(Two's Complement):
- 正数的补码与其二进制原码相同。
- 负数的补码是通过将其二进制原码中的每个位取反,然后加1得到的。
- 补码只有一个零表示法,+0。
主要区别:
- 反码和源码都有两个零表示法,这使得在进行比较和计算时需要额外的处理。
- 补码只有一个零表示法,这使得它更适合进行数学运算,因为它没有额外的复杂性。
- 在补码中,负数的表示方式与正数相加时不需要特殊处理进位问题,这简化了运算过程。
- 补码是计算机中最常用的有符号整数表示方法,因为它具有数学性质上的优势,并且对硬件实现更为简单。
当我们用不同的表示法来表示同一个整数时,它们的二进制表示会有所不同。以下是一个示例,演示了如何使用反码、源码和补码来表示整数 -5:
1. 反码(One's Complement)表示:
- 原码: 101(5 的二进制原码)
- 反码: 010(将 101 中的每个位取反)
2. 源码(Sign-Magnitude)表示:
- 原码: 101(5 的二进制原码)
- 源码: 001(将 101 中的符号位取反,其余位不变)
3. 补码(Two's Complement)表示:
- 原码: 101(5 的二进制原码)
- 补码: 011(将 101 中的每个位取反,然后加 1)
请注意,正数的反码和源码与其原码相同,而负数的反码和源码在符号位上不同。补码的情况下,正数和负数的二进制表示在位级上不同,但在进行数学运算时,只需将它们当作普通的二进制数相加即可,无需特殊处理进位问题。这是补码表示方法的一个优势。
## 图形化界面加法
java
package test;
import javax.swing.*;
public class addTest {
public static void main(String[] args) {
// 创建一个 JFrame 窗口
JFrame frame = new JFrame("加法计算器");
// 创建两个文本框用于输入数字
JTextField textField1 = new JTextField(10);
JTextField textField2 = new JTextField(10);
// 创建一个按钮来触发相加操作
JButton addButton = new JButton("相加");
// 创建一个标签用于显示结果
JLabel resultLabel = new JLabel("结果:");
// 创建一个面板来容纳组件
JPanel panel = new JPanel();
// 添加组件到面板
panel.add(new JLabel("第一个数字: "));
panel.add(textField1);
panel.add(new JLabel("第二个数字: "));
panel.add(textField2);
panel.add(addButton);
panel.add(resultLabel);
// 添加面板到窗口
frame.add(panel);
// 设置窗口属性
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// 添加按钮点击事件监听器
addButton.addActionListener(e -> {
try {
// 从文本框中获取输入的数字
double num1 = Double.parseDouble(textField1.getText());
double num2 = Double.parseDouble(textField2.getText());
// 计算结果
double sum = num1 + num2;
// 将结果显示在标签中
resultLabel.setText("结果: " + sum);
} catch (NumberFormatException ex) {
// 处理无效输入
resultLabel.setText("结果: 输入无效");
}
});
}
}
## 就近原则
java
public class Test {
private static int value = 1;
public static void main(String[] args) {
int value = 2;
System.out.println(value);
//结果为2
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)