Java 教程
- Java - 首页
- Java - 概述
- Java - 历史
- Java - 特性
- Java 与 C++
- JVM - Java 虚拟机
- Java - JDK 与 JRE 与 JVM
- Java - Hello World 程序
- Java - 环境设置
- Java - 基本语法
- Java - 变量类型
- Java - 数据类型
- Java - 类型转换
- Java - Unicode 系统
- Java - 基本运算符
- Java - 注释
- Java - 用户输入
- Java - 日期和时间
Java 控制语句
- Java - 循环控制
- Java - 决策制定
- Java - if-else
- Java - switch
- Java - for 循环
- Java - for-each 循环
- Java - while 循环
- Java - do-while 循环
- Java - break
- Java - continue
面向对象编程
- Java - OOPs 概念
- Java - 对象和类
- Java - 类属性
- Java - 类方法
- Java - 方法
- Java - 变量作用域
- Java - 构造函数
- Java - 访问修饰符
- Java - 继承
- Java - 聚合
- Java - 多态
- Java - 方法重写
- Java - 方法重载
- Java - 动态绑定
- Java - 静态绑定
- Java - 实例初始化块
- Java - 抽象
- Java - 封装
- Java - 接口
- Java - 包
- Java - 内部类
- Java - 静态类
- Java - 匿名类
- Java - 单例类
- Java - 包装类
- Java - 枚举
- Java - 枚举构造函数
- Java - 枚举字符串
Java 内置类
Java 文件处理
Java 错误和异常
- Java - 异常
- Java - try-catch 块
- Java - try-with-resources
- Java - 多重 catch 块
- Java - 嵌套 try 块
- Java - finally 块
- Java - throw 异常
- Java - 异常传播
- Java - 内置异常
- Java - 自定义异常
Java 多线程
- Java - 多线程
- Java - 线程生命周期
- Java - 创建线程
- Java - 启动线程
- Java - 线程连接
- Java - 线程命名
- Java - 线程调度器
- Java - 线程池
- Java - 主线程
- Java - 线程优先级
- Java - 守护线程
- Java - 线程组
- Java - 关闭钩子
Java 同步
Java 网络编程
- Java - 网络编程
- Java - 套接字编程
- Java - URL 处理
- Java - URL 类
- Java - URLConnection 类
- Java - HttpURLConnection 类
- Java - Socket 类
- Java - 泛型
Java 集合
Java 接口
Java 数据结构
Java 集合算法
高级 Java
- Java - 命令行参数
- Java - Lambda 表达式
- Java - 发送邮件
- Java - Applet 基础
- Java - Javadoc 注释
- Java - 自动装箱和拆箱
- Java - 文件不匹配方法
- Java - REPL (JShell)
- Java - 多发行版 Jar 文件
- Java - 私有接口方法
- Java - 内部类菱形运算符
- Java - 多分辨率图像 API
- Java - 集合工厂方法
- Java - 模块系统
- Java - Nashorn JavaScript
- Java - Optional 类
- Java - 方法引用
- Java - 函数式接口
- Java - 默认方法
- Java - Base64 编码解码
- Java - switch 表达式
- Java - Teeing 收集器
- Java - 微基准测试
- Java - 文本块
- Java - 动态 CDS 归档
- Java - Z 垃圾收集器 (ZGC)
- Java - 空指针异常
- Java - 打包工具
- Java - 密封类
- Java - 记录类
- Java - 隐藏类
- Java - 模式匹配
- Java - 简洁数字格式化
- Java - 垃圾收集
- Java - JIT 编译器
Java 其他
- Java - 递归
- Java - 正则表达式
- Java - 序列化
- Java - 字符串
- Java - Process API改进
- Java - Stream API改进
- Java - 增强的@Deprecated注解
- Java - CompletableFuture API改进
- Java - 流
- Java - 日期时间API
- Java 8 - 新特性
- Java 9 - 新特性
- Java 10 - 新特性
- Java 11 - 新特性
- Java 12 - 新特性
- Java 13 - 新特性
- Java 14 - 新特性
- Java 15 - 新特性
- Java 16 - 新特性
Java APIs 和框架
Java 类引用
- Java - Scanner
- Java - 数组
- Java - 字符串
- Java - Date
- Java - ArrayList
- Java - Vector
- Java - Stack
- Java - PriorityQueue
- Java - LinkedList
- Java - ArrayDeque
- Java - HashMap
- Java - LinkedHashMap
- Java - WeakHashMap
- Java - EnumMap
- Java - TreeMap
- Java - IdentityHashMap
- Java - HashSet
- Java - EnumSet
- Java - LinkedHashSet
- Java - TreeSet
- Java - BitSet
- Java - Dictionary
- Java - Hashtable
- Java - Properties
- Java - Collection
- Java - Array
Java 有用资源
Java - 特性
Java 编程语言最初是为在 嵌入式系统、机顶盒、电视上运行而开发的。因此,根据要求,它最初设计为可在不同的平台上运行。经过多年的发展,Java 已经成为开发基于互联网应用程序最流行的语言之一。
Java 是一门功能丰富的语言,并且随着每个新版本的发布,它都在不断发展。它广泛应用于数十亿台设备上。以下是 Java 语言的主要特性:
面向对象
在 Java 中,一切都是对象。Java 基于对象模型,因此易于扩展。作为一门具有面向对象特性的语言,Java 支持以下 OOPs 基本概念:
平台无关性
与包括 C 和 C++ 在内的许多其他编程语言不同,当 Java 编译时,它不会编译成特定于平台的机器码,而是编译成平台无关的字节码。此字节码通过网络分发,并由在任何平台上运行的 Java 虚拟机 (JVM) 解释。
Java 的设计理念是“一次编写,随处运行”(WORA)。用 Java 编写的代码不直接依赖于其运行的机器类型。Java 代码编译成平台无关的字节码。Java 虚拟机 JVM 可以理解字节码。Java 提供特定于平台的 JVM。特定于平台的 JVM 负责正确解释字节码,因此开发人员可以自由地编写代码,而无需担心 Windows、Linux、Unix、Mac 等平台。此特性使 Java 成为一种平台中立的语言。
由于字节码可以通过网络分发,并由在任何平台上运行的虚拟机 (JVM) 解释,因此 Java 代码具有高度的可移植性,非常适合在多个平台上运行的应用程序。
简单
Java 的设计易于学习。如果您了解 Java 的 OOP 基本概念,那么掌握它就很容易。
Java 非常容易学习。它继承了 C、C++ 的许多特性,并去除了指针、运算符重载、多重继承、显式内存分配等复杂特性。它提供自动垃圾回收。Java 提供了包含数千个有用函数的丰富的库,使开发人员的工作更容易。
安全
凭借 Java 的安全特性,它能够开发出无病毒、防篡改的系统。身份验证技术基于公钥加密。
Java 的设计天生安全,因为它不要求开发人员与底层系统内存或操作系统交互。字节码是安全的,并且很少出现缓冲区溢出、内存泄漏等安全漏洞。Java 的异常处理机制允许开发人员处理程序执行过程中可能发生的几乎所有类型的错误/异常。自动垃圾回收有助于控制系统内存空间的利用率。
架构中立
Java 编译器 生成架构中立的对象文件格式,这使得编译后的代码可以在许多处理器上执行,前提是存在 Java 运行时系统。
Java编译器生成一种与体系结构无关的对象文件格式,这使得编译后的代码可以在许多处理器上执行,前提是存在Java运行时系统。随着处理器体系结构或特定机器处理器的进步,Java代码仍然独立于任何特定处理器的要求。由于Java是一个开放标准,甚至可以为自定义体系结构准备特定的JVM。像今天这样,我们几乎在所有流行的平台、体系结构上都有JVM可用,Java代码是完全独立的。例如,在Windows机器上创建的Java程序可以在Linux机器上运行,无需任何代码修改。
可移植性
Java的可移植性源于其体系结构中立性以及规范中没有任何实现相关的方面。Java编译器是用ANSI C编写的,具有清晰的可移植性边界,这是一个POSIX子集。
由于这种可移植性,Java自诞生以来就立即流行起来。它对基于互联网的应用程序特别有用,因为这些应用程序的平台因地而异,而相同的代码库可以在多个平台上使用。因此,跨多个地点的开发人员之间的协作变得容易。
健壮性
Java通过主要强调编译时错误检查和运行时检查来努力消除容易出错的情况。自动垃圾收集、强大的内存管理、无指针、无直接访问系统内存、异常处理、错误处理等关键特性使Java成为一种可靠、强大的语言。
多线程
借助Java的多线程功能,可以编写可以同时执行许多任务的程序。此设计功能允许开发人员构建可以平稳运行的交互式应用程序。
多线程程序包含两个或多个可以并发运行的部分,每个部分可以同时处理不同的任务,从而优化可用资源的使用,尤其是在计算机有多个CPU的情况下。
根据定义,多任务处理是指多个进程共享公共处理资源(例如CPU)。多线程将多任务处理的概念扩展到应用程序中,您可以在单个应用程序中将特定操作细分为各个线程。每个线程都可以并行运行。操作系统不仅在不同的应用程序之间分配处理时间,还在应用程序内的每个线程之间分配处理时间。
多线程使您可以编写多个活动可以在同一程序中并发进行的代码。
解释型
Java字节码是动态地转换为本地机器指令,并且不会存储在任何地方。由于链接是一个增量且轻量级的过程,因此开发过程更快且更具分析性。
JVM位于javac编译器和底层硬件之间,javac(或任何其他编译器)编译器将Java代码编译成字节码,这是特定平台的JVM可以理解的。然后,JVM在代码执行时使用JIT(Just-in-time)编译将字节码编译成二进制代码。
高性能
通过使用即时编译器,Java实现了高性能。JVM使用JIT编译器来提高程序的执行时间。以下是JIT编译器执行的一些常规优化:
- 方法内联
- 死代码消除
- 优化调用站点的启发式方法
- 常量折叠
分布式
Java专为互联网的分布式环境而设计。
动态
Java被认为比C或C++更具动态性,因为它旨在适应不断变化的环境。Java程序可以携带大量的运行时信息,这些信息可用于验证和解决运行时对对象的访问。