Day12_数据类型_冯诺依曼

Java

编译型语言与解释型语言

简介

类型 编译型语言 解释型语言
执行方式 代码需预先编译为机器码再执行 代码通过解释器逐行翻译并执行
典型代表 C/C++、Go、Rust Python、JavaScript、Ruby
输出文件 生成独立的可执行文件(如.exe) 无独立文件,直接运行源代码
跨平台性 需针对不同平台重新编译 解释器兼容即可,天然跨平台
执行速度 (直接运行机器码) 较慢(需实时翻译)
开发调试 修改后需重新编译 直接运行,调试便捷

优缺点对比

类型 优点 缺点
编译型 1. 执行速度快 2. 资源占用低 3. 代码安全性高 1. 跨平台性差 2. 调试复杂 3. 开发效率低
解释型 1. 跨平台性强 2. 开发调试便捷 3. 动态特性灵活 1. 执行速度慢 2. 依赖解释器环境 3. 代码暴露风险

基本数据类型

public class Demo2 {
    public static void main(String[] args) {
        // 八大基本数据类型

        // 整数
        int   num1 = 2147483647; // 最常用
        byte  num2 = 127;
        short num3 = 32767;
        long  num4 = 30L; // Long类型要在数字后面加个L

        // 小数:浮点数
        float num5  = 50.1F; // Lfloat类型要在数字后面加个F
        double num6 = 3.141592653589793238462643;

        // 字符
        char name = 'A';
        char character = '国';
        // 字符串,String不是关键字,而是类
        // String namea = "小杰";

        // 布尔值:是非
        boolean flag = true;
        // boolean flag = false;

    }
}

拓展

public class Demo {
    public static void main(String[] args) {
        // 整数拓展:    进制    二进制0b   十进制    八进制0    十六进制0x

        int i1 = 10;
        int i2 = 010;   // 八进制0
        int i3 = 0x1F;  // 十六进制0x

        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);

        System.out.println("//===========================================================================");
        //===========================================================================
        // 浮点数拓展 银行业务如何表示
        //===========================================================================

        // float 有限 离散 舍入误差 大约 接近但不等于
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较
        //最好完全避免使用浮点数进行比较

        float f  = 0.1f;   //0.1
        double d = 1.0/10; //0.1

        System.out.println(f==d);
        System.out.println(f);
        System.out.println(d);

        float d1 = 2333333358225f;
        float d2 = 2333333358225f+1;

        System.out.println(d1==d2); //true

        System.out.println("//===========================================================================");
        //===========================================================================
        // 字符拓展
        //===========================================================================
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1); // 强制类型转换

        System.out.println(c2);
        System.out.println((int)c2); // 强制类型转换

        // 所有的字符本质还是数字
        // 编码   Unicode   2字节   65536  Excel  2 16 = 65536

        // U0000 UFFFF

        char c3 = '\u0061';

        System.out.println(c3); // a
    }
}

每日一问

在面试中回答冯诺依曼结构的问题时,关键是要简洁、逻辑清晰,同时突出其核心思想和对现代计算机的意义。以下是回答的关键点和结构建议:


1. 核心概念一句话总结(开门见山)

  • 核心句
    “冯诺依曼结构是现代计算机的理论基础,核心是存储程序思想——将程序指令和数据统一存储在同一个存储器中,按顺序执行,由五大部件协同工作。”

2. 五大组成部分(逻辑清晰,名称+功能)

  • 必须提到的部件
    1. 运算器(ALU):执行算术和逻辑运算。
    2. 控制器(CU):指挥协调其他部件,与运算器共同组成CPU。
    3. 存储器(Memory):统一存储程序和数据(与早期计算机分离存储不同)。
    4. 输入设备(Input):如键盘、鼠标。
    5. 输出设备(Output):如显示器、打印机。
      加分项:可以提到“总线(Bus)”作为部件间数据传输的通道。

3. 核心思想:存储程序(重点!)

  • 关键解释
    • 二进制存储:程序和数据都以二进制形式存在存储器中。
    • 顺序执行:CPU按地址顺序逐条读取指令并执行(通过程序计数器PC)。
    • 无需硬件修改:通过改变程序实现不同功能,计算机通用性大幅提升。
      举例:早期的计算机(如ENIAC)需要手动接线编程,而冯诺依曼结构让编程更灵活。

4. 特点与意义(体现思考深度)

  • 优势
    • 简化设计,奠定了通用计算机的基础。
    • 程序可编程化,适应多种任务(与专用计算机区分)。
  • 局限性
    • 冯诺依曼瓶颈:CPU和存储器间的数据传输速度限制整体效率(现代计算机通过缓存、并行计算缓解)。
  • 意义
    “它是现代计算机的基石,至今仍是主流架构,尽管存在瓶颈,但后续技术(如多核、缓存)都在其框架内优化。”

5. 回答模板(供参考)

“冯诺依曼结构是现代计算机的基础,核心是存储程序思想。它由五大部件组成:运算器、控制器、存储器、输入和输出设备。程序和数据统一存储在存储器中,CPU按顺序读取并执行指令,通过改变程序即可实现不同功能,无需修改硬件。这种设计使计算机具备了通用性,但也存在指令与数据共享总线导致的效率瓶颈(冯诺依曼瓶颈)。尽管如此,它至今仍是计算机架构的核心基础。”


注意事项

  1. 避免冗长:控制在1分钟内,重点突出核心概念。
  2. 结合应用:如果时间允许,可举例说明其影响(如现代PC、手机均基于此架构)。
  3. 对比扩展(加分项):提一句“哈佛架构”(指令和数据分开存储)作为对比,体现知识广度。
  4. 自然表达:不要死记硬背,用口语化的方式组织语言。

最后:面试官可能追问“冯诺依曼瓶颈”或“现代优化方法”,提前准备相关扩展知识即可。

posted @ 2025-03-14 00:01  Pikature  阅读(39)  评论(0)    收藏  举报