菜鸟的博客

纵有疾风起,人生不言弃。

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

java作业1.2023.9.15

复制代码
## 典型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和-02. 源码(Sign-Magnitude):
   - 正数的源码与其二进制原码相同。
   - 负数的源码是将其二进制原码中的符号位(最高位)取反,其余位不变。
   - 源码也有两个零表示法,+0和-03. 补码(Two's Complement):
   - 正数的补码与其二进制原码相同。
   - 负数的补码是通过将其二进制原码中的每个位取反,然后加1得到的。
   - 补码只有一个零表示法,+0。

主要区别:
- 反码和源码都有两个零表示法,这使得在进行比较和计算时需要额外的处理。
- 补码只有一个零表示法,这使得它更适合进行数学运算,因为它没有额外的复杂性。
- 在补码中,负数的表示方式与正数相加时不需要特殊处理进位问题,这简化了运算过程。
- 补码是计算机中最常用的有符号整数表示方法,因为它具有数学性质上的优势,并且对硬件实现更为简单。



当我们用不同的表示法来表示同一个整数时,它们的二进制表示会有所不同。以下是一个示例,演示了如何使用反码、源码和补码来表示整数 -51. 反码(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
    }
}
~~~

## 变量间的类型转换

~~~java
//自动类型转换是安全的
//强制类型转换时,可能会引起信息的缺失
~~~

## 浮点数的运算与比较

~~~java
//使用浮点数进行运算时,会造成精度的缺失
//可以使用BigDecimal类,精确的计算
~~~

## 字符串转化为数字的方法

~~~java
int number = Integer.parseInt(numberString)
~~~

## 字符串转化为浮点数

~~~java
number1 = Double.parseDouble(firstNumber);
~~~
复制代码

 

posted on   hhmzd233  阅读(11)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示