Java闪卡学习卡片

点击卡片查看详细内容

💻
编程语言

编译型 vs 解释型

编程语言
是描述如何做事情的方式
编译型语言
以C为例:编译器一次性翻译成机器能直接运行的二进制文件
优点:运行速度快
缺点:需要重新编译,不能跨平台
解释型语言
以Python为例:解释器一边读取代码,一边翻译,一边执行
优点:开发方便,天生跨平台
缺点:运行速度通常比编译型慢
💡 Java是编译型和解释型的结合
Java特性

Java的核心特性

  • 编译型语言:更准确的说法是编译型和解释型的结合
  • 高效的OOP语言:面向对象编程是Java的核心思想
  • UNIX世界成员:设计哲学深受UNIX/Linux系统影响
  • 广泛应用:广泛用于各种类型的应用程序
💡 Java通过字节码和JVM实现跨平台
📜
Java简史

Java的发展历程

Java之父
James Gosling
起源
1991年为"机顶盒"项目开发,最初名为OAK
重生
1995年互联网浪潮兴起,OAK改造后命名为Java
发布
1995年5月23日正式发布
💡 "一次编写,到处运行"特性使Java适合网络应用
⚙️
Java如何运行

一次编写,到处运行

  1. Java源代码(.java文件)
  2. 编译 → 字节码文件(.class文件)
  3. JVM执行字节码
  4. JVM将字节码翻译成具体操作系统的指令

跨平台原理:开发者只需写一份.java代码并编译成.class文件,这份.class文件可以被拷贝到任何安装了JVM的机器上运行。

💡 JVM是关键,它为不同操作系统提供不同的实现
🔄
跨平台/可移植性

Java的核心优势

可移植性
JVM + 统一数据类型
性能低的原因
解释执行、代码检查、栈机器
性能高的手段
JIT(即时编译器)、多线程、字节码简单设计

JIT:JVM在运行时会监控代码,如果发现某段代码被频繁执行,JIT就会把它编译成本地机器码并缓存起来。

💡 Java在统一数据类型方面比C语言更严格
🛡️
稳定与KISS原则

Keep It Simple, Stupid

  • 没有指针:用"引用"替代指针,提高安全性
  • 数组越界检查:运行时检查,直接抛出错误
  • 自动内存管理:垃圾回收器(GC)自动检测和回收不再使用的内存
  • 类C++语法:方便C++程序员迁移
💡 KISS原则通过简化C++的复杂特性提升稳定性和开发效率
🔍
更纯粹的OOP

Java = C++ -

Java相比于C++,在面向对象方面做得更"纯粹"或更"简单":

  • 没有多重继承:只允许单继承,通过接口实现灵活性
  • 没有虚继承:不需要解决多重继承带来的问题
  • 没有模板:用泛型实现类似功能,但更容易理解
  • 没有运算符重载:禁止运算符重载(除了字符串的+号)
💡 Java牺牲部分灵活性,换取更高的稳定性和简洁性
🔄
动态性

Java的动态特性

  • Java没有具体的程序概念
  • Java认为所有类和对象都在一个空间里
  • 编译结果是这个空间的一部分
  • "运行程序"是启动一个线程从一个类的方法开始

动态加载机制:允许程序在运行时才去加载需要的类,是大型框架和热部署技术的基础。

💡 把JVM想象成一个持续运行的"世界"
🗂️
对象的存储

对象在内存中的位置

C/C++
内存分配灵活,程序员可决定变量放在栈或堆上
目的:追求极致性能
Java
所有对象都必须在堆上创建
堆由垃圾回收器自动管理
使用new关键字在堆中创建对象
💡 Java统一规定对象在堆上创建,简化了内存管理
🔄
创建和销毁对象

对象的生命周期

  • 必须创建对象:使用new关键字创建对象(基本数据类型除外)
  • 不能自己销毁对象:与C++的delete或C的free()不同
  • 回收机制:垃圾回收器(GC)自动检测和回收不再使用的对象

GC会巡视堆内存,当发现某个对象已经没有任何引用指向它时,会将其标记为"垃圾"并回收内存。

💡 GC像后台清洁工,自动管理内存
已学习 10 个概念