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 - 进程 API 改进
- Java - 流 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 API 和框架
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 vs C++
Java 是一种通用、高级编程语言。Java 用于 Web 开发、机器学习和其他尖端软件开发。Java 编程语言最初由 Sun Microsystems 开发,由 James Gosling 发起,并于 1995 年作为 Sun Microsystems Java 平台 (Java 1.0 [J2SE]) 的核心组件发布。
C++ 是一种中级、区分大小写、面向对象的编程语言。Bjarne Stroustrup 在贝尔实验室创建了 C++。C++ 是一种平台无关的编程语言,可在 Windows、Mac OS 和 Linux 上运行。C++ 接近硬件,允许进行低级编程。这为开发人员提供了对内存的控制、改进的性能和可靠的软件。
通读本文,概述 C++ 和 Java,以及这两种编程语言之间有何不同。
什么是 Java?
Java Standard Edition 的最新版本是 Java SE 23。随着 Java 的发展及其广泛的普及,构建了多种配置以适应各种类型的平台。例如:用于企业应用程序的 J2EE,用于移动应用程序的 J2ME。
新的 J2 版本分别重命名为 Java SE、Java EE 和 Java ME。Java 保证是一次编写,随处运行。
Java 的特性
Java 是 -
面向对象 - 在 Java 中,一切都是对象。由于 Java 基于对象模型,因此可以轻松扩展。
平台无关 - 与包括 C 和 C++ 在内的许多其他编程语言不同,当 Java 编译时,它不会编译成特定于平台的机器代码,而是编译成平台无关的字节码。此字节码在 Web 上分发,并由在运行它的任何平台上的Java 虚拟机 (JVM) 解释。
简单 - Java 的设计易于学习。如果您了解 Java 的基本OOP 概念,则很容易掌握。
安全 - Java 的安全特性使其能够开发免受病毒和篡改的系统。身份验证技术基于公钥加密。
与体系结构无关 - Java 编译器 生成与体系结构无关的对象文件格式,这使得编译后的代码在存在 Java 运行时系统的情况下可在许多处理器上执行。
可移植 - Java 的体系结构中立以及没有规范的实现相关方面使其具有可移植性。Java 中的编译器是用 ANSI C 编写的,具有清晰的可移植性边界,即 POSIX 子集。
健壮 - Java 通过主要强调编译时错误检查和运行时检查来努力消除易于出错的情况。
多线程 − 利用 Java 的 多线程特性,可以编写执行多个任务的程序。此设计特性允许开发人员构建能够流畅运行的交互式应用程序。
解释型 − Java 字节码被实时转换为本地机器指令,并且不会存储在任何地方。由于链接是一个增量且轻量级的过程,因此开发过程更快且更具分析性。
高性能 − 通过使用即时编译器,Java 能够实现高性能。
分布式 − Java 针对互联网的分布式环境而设计。
动态 − Java 被认为比 C 或 C++ 更具动态性,因为它旨在适应不断变化的环境。Java 程序可以携带大量运行时信息,这些信息可用于在运行时验证和解决对对象的访问。
Java 示例
请查看以下简单的 Java 程序 −
package com.tutorialspoint; import java.util.Scanner; public class JavaTester { public static void main(String args[]) { String a, b; Scanner scanner = new Scanner(System.in); System.out.println("Enter The value for variable a"); a = scanner.nextLine(); System.out.println("Enter The value for variable b"); b = scanner.nextLine(); System.out.println("The value you have entered for a is " + a); System.out.println("The value you have entered for b is " + b); scanner.close(); } }
在我们的示例中,我们使用了两个变量“a”和“b”,并为这些变量赋值。请注意,在 Java 中,我们需要显式声明变量的数据类型,因为 Java 是一种强类型语言。由于 Java 是一种面向对象的语言,因此我们使用对象来执行任何操作。在示例中,我们使用了 Scanner 类对象从控制台读取用户输入,该控制台由 System.in 对象表示。System.out 对象方法 println() 用于打印接收到的值。
输出
执行此 Java 代码将产生以下输出 −
Enter The value for variable a 10 Enter The value for variable b 20 The value you have entered for a is 10 The value you have entered for b is 20
什么是 C++?
C++ 是一种静态类型、编译型、多范式、通用编程语言,学习曲线陡峭。视频游戏、桌面应用程序和嵌入式系统广泛使用它。C++ 与 C 的兼容性极佳,几乎可以无需任何更改地构建所有 C 源代码。面向对象编程使 C++ 成为比 C 更结构化和更安全的语言。
C++ 的特性
让我们看看 C++ 的一些特性及其流行的原因。
中级语言 − 它是一种中级语言,因为它既可以用于系统开发,也可以用于媒体播放器、Photoshop、游戏引擎等大型消费类应用程序。
执行速度 − C++ 代码运行速度很快。因为它被编译并且广泛使用过程。垃圾回收、动态类型和其他现代特性会阻碍程序执行。
面向对象语言 − 面向对象编程灵活且易于管理。大型应用程序成为可能。不断增长的代码使过程代码更难处理。C++ 相比 C 的主要优势。
广泛的库支持 − C++ 拥有庞大的库。支持第三方库以加快开发速度。
C++ 示例
让我们通过下面编写的示例来了解 C++ 的语法。
#include using namespace std; int main() { int a, b; cout << "Enter The value for variable a \n"; cin >> a; cout << "Enter The value for variable b"; cin >> b; cout << "The value of a is "<< a << "and" << b; return 0; }
在我们的示例中,我们通过键盘从用户处获取两个变量“a”和“b”的输入,并在控制台上显示数据。
输出
执行后,它将产生以下输出 −
Enter The value for variable a 10 Enter The value for variable b 20 The value of a is 10 and 20
Java 和 C++ 的区别
Java 和 C++ 都是最流行的编程语言之一。它们各有优缺点。在本教程中,我们将仔细研究它们的区别特征。
序号 | 标准 | Java | C++ |
---|---|---|---|
1 | 开发者 | Java 由 Sun Microsystems 的 James Gosling 开发。最初它被设计用于嵌入式系统、机顶盒、电视机等。后来它成为互联网应用程序开发的首选语言。 | C++ 由贝尔实验室的 Bjarne Stroustrup 开发,作为 C 语言的扩展。它既支持高级语言,也支持低级机器代码访问。C++ 主要用于开发系统软件、编译器等。 |
2 | 受影响于 | 它受 Ada 83、Pascal、C++、C# 的影响。 | 它受 Ada、ALGOL 68、C、ML、Simula、Smalltalk 的影响。 |
3 | 对架构的依赖性 | Java 字节码可以在任何操作系统上运行。字节码针对 JVM。JVM 或 Java 虚拟机随后解释字节码并运行底层特定于机器的代码。因此,Java 代码无需更改即可在不同的机器上运行。 | 它不能在每个操作系统上运行,因为不同系统的库不同。 |
4 | 平台独立性 | 它可以在任何操作系统上运行。Java 代码是平台独立的。不需要任何特定于平台的代码。int、long 的大小在所有平台上都相同。 | 它在不同的平台上编译方式不同,不能在任何操作系统上运行。 |
5 | 可移植性 | 它是可移植的。由于是平台独立的,因此 Java 代码可以在任何机器上原样传输,而无需任何特定于平台的修改。在 Windows 机器上编写的 Java 代码可以在 Unix 机器上以相同的方式运行,无需任何修改。 | 它不可移植。 |
6 | 解释型/编译型 | 它是一种解释型语言。 | 它是一种编译型语言。 |
7 | 内存管理 | 内存管理是自动完成的。Java 提供垃圾回收服务,该服务在不再需要对象时自动释放内存。 | 内存管理需要手动完成。 |
8 | virtual 关键字 | 它没有“virtual”关键字。 | 它有“virtual”关键字。 |
9 | 多重继承支持 | 它只支持单一继承。可以使用接口(仅部分)实现多重继承。一个类只能扩展一个类。尽管接口可以扩展多重继承。多重继承可能导致模棱两可的结果。由于 Java 不支持 virtual 关键字,因此不支持多重继承。 | 它支持单一和多重继承。使用 virtual 关键字可以解决模棱两可的引用。 |
10 | 运算符重载支持 | 它不支持运算符重载。Java 只支持方法重载。运算符重载被认为会增加基础语言的复杂性,因此未实现以保持语言简单。 | 它支持运算符重载。在 C++ 中,我们可以重载方法和运算符。 |
11 | 指针 | 它对指针提供有限的支持。指针是一种复杂的功能,Java 避免使用它们。它提供了引用概念来指向对象或更准确地说是它们的地址。 | 它支持指针操作。开发人员可以执行复杂的操作,可以使用指针编写优化的基于内存的代码。但它非常复杂,需要强大的编程技能才能掌握。 |
12 | 低级机器代码访问 | 它们具有高级功能。Java 是一种平台独立的语言,Java 的编译代码作为字节码用于 JVM,JVM 进一步将代码转换为低级代码。因此,使用 Java,开发人员无法编写低级机器代码。这就是 Java 主要用于应用程序开发的原因。 | 它们具有低级功能。由于 C++ 支持低级机器代码代码。它主要用于编写系统软件、编译器等。 |
13 | 本地库访问 | 它不支持直接的本地库调用。Java 不是为与低级机器代码一起工作而设计的,并且不支持本地调用。但是我们可以使用第三方库配置本地调用。 | 它支持直接系统库调用。 |
14 | 文档注释 | 它支持 文档注释(/**.. */)用于源代码。Javadoc 工具可以从源代码读取文档注释,并根据注释生成基于 HTML 的 Java 文档。 | 它不支持源代码的文档注释。 |
15 | 多线程 | 它支持线程操作。Java 默认支持多线程。它允许并发编程以提高效率并减少花费的时间。 | 它在设计上不支持线程。可以通过使用第三方线程库来完成。 |
16 | 控制台输入 | 它使用 'System' 类,即 System.in 用于输入。System.in 类可用于从控制台获取用户输入。 | 它使用 'cin' 进行输入操作。cin 允许用户在控制台中输入值。 |
17 | 控制台输出 | 它使用 System.out 进行输出。System.out.println() 方法在系统的控制台上打印所需的值。 | 它使用 'cout' 进行输出操作。cout 在系统的控制台上打印所需的值。 |
19 | 全局支持 | 它不支持全局范围。Java 是一种严格的面向对象语言,并且不提供全局范围。尽管它使用包支持跨包范围。 | 它支持全局范围和命名空间范围。 |
20 | struct/union 支持 | 它不支持结构体和联合体。 | 它支持结构体和联合体。 |
21 | goto 关键字 | 它没有“goto”关键字。但是可以使用标签实现相同的功能。break/continue 语句可以跳转到带标签的语句位置。 | 它支持 'goto' 关键字。使用 goto 关键字,我们可以跳转到任何带标签的位置。 |
22 | 按值/引用传递 | 它只支持按值传递方法。即使对象引用在技术上也是按值传递给方法。 | 它支持按值传递和按引用传递方法。在按引用传递的情况下,需要指针或 & 符号。 |
23 | 内存管理 | 它使用垃圾回收器自动执行对象管理。开发人员无需为对象分配内存,也不需要在对象不再使用时释放它们。垃圾回收服务自动检测并释放空间。由于 GC 服务,Java 中内存泄漏的可能性非常小。 | 它在“new”和“delete”的帮助下手动执行对象管理。开发人员必须采取措施确保内存得到正确分配/释放,以防止内存泄漏。 |