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. 五大组成部分(逻辑清晰,名称+功能)
- 必须提到的部件:
- 运算器(ALU):执行算术和逻辑运算。
- 控制器(CU):指挥协调其他部件,与运算器共同组成CPU。
- 存储器(Memory):统一存储程序和数据(与早期计算机分离存储不同)。
- 输入设备(Input):如键盘、鼠标。
- 输出设备(Output):如显示器、打印机。
加分项:可以提到“总线(Bus)”作为部件间数据传输的通道。
3. 核心思想:存储程序(重点!)
- 关键解释:
- 二进制存储:程序和数据都以二进制形式存在存储器中。
- 顺序执行:CPU按地址顺序逐条读取指令并执行(通过程序计数器PC)。
- 无需硬件修改:通过改变程序实现不同功能,计算机通用性大幅提升。
举例:早期的计算机(如ENIAC)需要手动接线编程,而冯诺依曼结构让编程更灵活。
4. 特点与意义(体现思考深度)
- 优势:
- 简化设计,奠定了通用计算机的基础。
- 程序可编程化,适应多种任务(与专用计算机区分)。
- 局限性:
- 冯诺依曼瓶颈:CPU和存储器间的数据传输速度限制整体效率(现代计算机通过缓存、并行计算缓解)。
- 意义:
“它是现代计算机的基石,至今仍是主流架构,尽管存在瓶颈,但后续技术(如多核、缓存)都在其框架内优化。”
5. 回答模板(供参考)
“冯诺依曼结构是现代计算机的基础,核心是存储程序思想。它由五大部件组成:运算器、控制器、存储器、输入和输出设备。程序和数据统一存储在存储器中,CPU按顺序读取并执行指令,通过改变程序即可实现不同功能,无需修改硬件。这种设计使计算机具备了通用性,但也存在指令与数据共享总线导致的效率瓶颈(冯诺依曼瓶颈)。尽管如此,它至今仍是计算机架构的核心基础。”
注意事项:
- 避免冗长:控制在1分钟内,重点突出核心概念。
- 结合应用:如果时间允许,可举例说明其影响(如现代PC、手机均基于此架构)。
- 对比扩展(加分项):提一句“哈佛架构”(指令和数据分开存储)作为对比,体现知识广度。
- 自然表达:不要死记硬背,用口语化的方式组织语言。
最后:面试官可能追问“冯诺依曼瓶颈”或“现代优化方法”,提前准备相关扩展知识即可。

浙公网安备 33010602011771号