2024年8月26日

Java中抽象类和接口的区别

抽象类和接口之间的区别是常见的面试问题之一。抽象类和接口是 Java 编程语言的核心部分。选择接口还是抽象类是每个架构师面临的设计决策。在我上一篇文章中,我提供了尽可能多的有关Java 接口和抽象类的详细信息。在这篇文章中,我们将了解抽象类和接口之间的区别,以及何时应该使用接口而不是抽象类,反之亦然。 抽象类和接口之间的区别 abstract关键字用于创建抽象类,并且也可以与方法一起使用,而interface关键字用于创建接口,但不能与方法一起使用。 子类使用extends关键字来扩展抽象类,并且它们需要提供抽象类中所有声明的方法的实现,除非子类也是抽象类,而子类使用implements关键字来实现接口,并且应该为接口中声明的所有方法提供实现。 抽象类可以具有带实现的方法,而接口提供绝对抽象,不能具有任何方法实现。请注意,从…
2024年8月26日

在 Java 中将 char 转换为字符串

有时我们必须在 Java 程序中将字符转换为字符串。在这里,我们将研究在 Java 中将字符转换为字符串的不同方法。我们还将学习如何使用不同的方法将字符数组转换为字符串。 将 char 转换为字符串 Java 这是一个简单的程序,展示了在 Java 中将字符转换为字符串的不同方法。 package com.journaldev.string; public class CharToStringJava { public static void main(String[] args) { // char to string char c = 'a'; String str = String.valueOf(c); // using Character class str = Character.toString(c); // another way str = new Character(c).toStrin…
2024年8月26日

Java 中的构造函数

Java 中的构造函数用于创建类的实例。除了两点之外,构造函数几乎与方法相似 - 其名称与类名相同并且没有返回类型。有时构造函数也被称为初始化对象的特殊方法。 Java 中的构造函数 每当我们使用new关键字创建类的实例时,就会调用构造函数并返回该类的对象。由于构造函数只能将对象返回给类,因此它由 Java 运行时隐式完成,我们不应该为其添加返回类型。如果我们为构造函数添加返回类型,那么它将成为类的方法。这是 Java 运行时区分普通方法和构造函数的方式。假设我们在Employee类中有以下代码。 public Employee() { System.out.println("Employee Constructor"); } public Employee Employee() { System.out.println("Employee Method…
2024年8月26日

Java 中的 ConcurrentHashMap

Java ConcurrentHashMap 类是并发集合类的一部分。它是一个哈希表实现,支持并发检索和更新。它用于多线程环境以避免ConcurrentModificationException。 并发哈希映射 如果我们尝试在迭代过程中修改集合,则会得到结果ConcurrentModificationException。Java 1.5 在包中引入了 Concurrent 类java.util.concurrent来克服这种情况。ConcurrentHashMap 是 Map 实现,它允许我们在迭代过程中修改 Map。ConcurrentHashMap 操作是线程安全的。ConcurrentHashMap 不允许键和值为 null。 Java ConcurrentHashMap 示例 该类与HashMapConcurrentHashMap类似,不同…
2024年8月26日

如何从另一个 Java 程序编译和运行 Java 程序

您是否想过是否可以从另一个 Java 程序编译并运行一个 Java 程序?我们可以用Runtime.exec(String cmd)它来向底层操作系统发出命令。我们将使用相同的方法从另一个 Java 程序编译并运行一个 Java 程序。 从另一个 Java 程序编译并运行 Java 程序 让我们编写一个简单的 java 程序,它将从另一个 java 程序编译并运行。 package com.journaldev.files; public class Test { public static void main(String[] args) { System.out.println("Start"); for(String str : args){ System.out.println(str); } } } 这是我正在编译和运行测试类的另一个程序。 package com.journaldev…
2024年8月26日

[已修复] 可执行文件中的 CPU 类型错误 - 在 MacBook 上安装 Java

我最近买了新的 MacBook Air M1,首先想安装的是 Java。因此,我下载了 OpenJDK tar 文件,将其解压缩并尝试运行“java -version”命令,结果出现了错误: -bash: ./java: 可执行文件中的 CPU 类型错误 这对我来说是新鲜事,我使用 Java 和 Mac OS 已经很久了,从来没有见过这种错误。经过一些在线搜索和调试,我发现发生这种情况是因为新的 MacBook M1 芯片使用的是 ARM64 架构,而从 JDK 站点下载的 OpenJDK 二进制文件是为 x64 架构构建的,而英特尔处理器使用的是 x64 架构。 修复-bash:./java:可执行文件中的 CPU 类型错误 确定问题后,解决方案很简单。我所需要的只是找到一个支持 ARM64 架构的 OpenJDK 实现。经过一番搜索,我找到了Azul Zulu OpenJDK 构建页面,它有…
2024年8月26日

Java 中的 AtomicInteger

今天我们将研究AtomicIntegerJava。原子操作在单个任务单元中执行,不受其他操作的干扰。原子操作在多线程环境中是必需的,可以避免数据不一致。 原子整数 让我们创建一个简单的多线程程序,其中每个线程都会将共享count变量增加 4 次。因此,如果有两个线程,则它们完成后count值应该是 8。JavaAtomic.java package com.journaldev.concurrency; public class JavaAtomic { public static void main(String[] args) throws InterruptedException { ProcessingThread pt = new ProcessingThread(); Thread t1 = new Thread(pt, "t1"); t1.start(); T…
2024年8月26日

Java 中的模板方法设计模式

模板方法是一种行为设计模式。模板方法设计模式用于创建方法存根并将某些实现步骤推迟到子类。 模板方法设计模式 模板方法定义了执行算法的步骤,它可以提供所有或部分子类通用的默认实现。让我们通过一个例子来理解这种模式,假设我们想提供一种建造房屋的算法。建造房屋需要执行的步骤是 - 打地基、建柱子、建墙壁和窗户。重要的一点是我们不能改变执行的顺序,因为我们不能在打地基之前建窗户。所以在这种情况下我们可以创建一个模板方法,使用不同的方法来建造房屋。现在,建造房屋地基的方法对于所有类型的房屋都是一样的,无论是木屋还是玻璃屋。所以我们可以为此提供基本实现,如果子类想要重写这个方法,他们可以,但大多数情况下它对所有类型的房屋都是通用的。为了确保子类不会重写模板方法,我们应该将其设为 final。 模板方法抽象类 由于我们希望某些方法由子类实…
2024年8月26日

为什么 Java 中的字符串是不可变的?

为什么 String 在 Java 中是不可变的,这是常见的面试问题之一。字符串是任何编程语言中最常用的类之一。我们知道 String 在 Java 中是不可变的和最终的。Java 运行时维护一个String 池,使其成为一个特殊的类。 为什么 Java 中的 String 是不可变的? 让我们看看字符串不变性的一些好处,这将有助于理解为什么字符串在 Java 中是不可变的。 字符串池之所以可行,是因为 String 在 Java 中是不可变的。这样,Java 运行时可以节省大量堆空间,因为不同的 String 变量可以引用池中的同一个 String 变量。如果 String 不是不可变的,那么 String 驻留就不可能实现,因为如果任何变量改变了值,它也会反映在其他变量中。 如果字符串不是不可变的,那么它将对应用程序造成严重的安全威胁。例如,数据库用户名、密码作为字符串传…
2024年8月26日

使用 Eclipse 的 Java 示例中的 SOAP Web 服务

Java 中的 Soap Webservices 可以通过多种方式开发。我们在上一篇教程中学习了JAX-WS SOAP Web 服务,今天我们将学习如何使用 Eclipse 创建 SOAP Web 服务及其客户端程序。在这里我们将不使用 JAX-WS,我们将使用集成在 Eclipse 中的Apache Axis,并提供快速简便的方法将应用程序转换为 Java Web 服务,并使用测试 JSP 页面创建客户端存根以用于测试目的。 Java 中的 SOAP Web 服务 我在本教程中使用Eclipse Mars Release (4.5.0),但我认为这些步骤也适用于旧版本的 eclipse。另外,请确保已在 Eclipse 中添加 Apache Tomcat 或任何其他 servlet 容器作为服务器。现在让我们开始实现Eclipse Web 服务。 SOAP Web 服务示例 让我们开始使用 Ecl…