找到 2637 篇文章 关于 Java

如何在 Java 中使集合线程安全?

Maruthi Krishna
更新于 2019年10月15日 07:08:23

2K+ 浏览量

java.util 包中的 Collections 类包含专门用于集合的方法,这些方法提供了各种额外的操作,包括多态算法。此类提供了 synchronizedCollection() 方法的不同变体,如下所示:序号方法和描述1static Collection synchronizedCollection(Collection c)此方法接受任何集合对象,并返回一个由指定集合支持的同步(线程安全)集合。2static List synchronizedList(List list)此方法接受 List 接口的对象,并返回一个由指定列表支持的同步(线程安全)列表。3static Map synchronizedMap(Map m)此方法接受 Map 接口的对象,并返回一个由指定映射支持的同步(线程安全)映射。4static ... 阅读更多

我们可以在 Java 中重写时更改方法签名吗?

Maruthi Krishna
更新于 2019年10月15日 07:03:06

2K+ 浏览量

否,在重写父类的方法时,我们需要确保这两个方法具有相同的名称、相同的参数和相同的返回类型,否则它们将被视为不同的方法。简而言之,如果我们更改签名,则无法重写父类的方法,如果尝试执行父类的方法。原因 - 如果更改签名,则两者都被视为不同的方法,并且由于子类对象中存在父类方法的副本,因此将执行它。示例实时演示类 Super {    void sample(int a, int b) { ... 阅读更多

为什么当类存在于 Java 中时我们会得到 ClassNotFoundException?

Maruthi Krishna
更新于 2019年10月15日 07:01:24

3K+ 浏览量

每当我们尝试加载一个类时,如果类加载器无法在指定的路径中找到该类,就会生成 ClassNotFoundException。这可能发生在执行 Java 程序时,使用名为 Class 的类的 forName() 方法或 ClassLoader 类 的 loadClass() 方法显式加载类时。这两个类接受表示类名的字符串值并加载指定的类。将类名传递给这些方法时,您需要确保:您传递给这些方法的类名应准确无误。指定的类(以及包)应位于... 阅读更多

transient 如何与 Java 序列化中的 final 一起工作?

Maruthi Krishna
更新于 2019年10月15日 06:56:27

862 浏览量

在 Java 中,序列化是一个概念,我们可以使用它将对象的 state 写入字节流中,以便我们可以通过网络传输它(使用 JPA 和 RMI 等技术)。瞬态变量 - 瞬态变量的值永远不会被考虑(它们被排除在序列化过程中)。即,当我们声明一个变量为 transient 时,反序列化后其值将始终为 null、false 或零(默认值)。因此,在序列化类的对象时,如果您希望 JVM 忽略特定的实例变量,您可以将其声明为 transient。public transient int limit = ... 阅读更多

Java 中常量和 final 变量的区别?

Maruthi Krishna
更新于 2019年10月15日 06:53:36

11K+ 浏览量

Java 中的常量常量变量是指其值固定且在程序中仅存在一个副本的变量。一旦您声明了一个常量变量并为其赋值,您就无法在整个程序中再次更改其值。与 C 语言不同,Java 不直接支持常量。但是,您仍然可以通过声明一个变量为 static 和 final 来创建一个常量。一旦您声明一个变量为 static,它们将在编译时加载到内存中,即只有一个副本可用。一旦您声明一个变量为 final,您就不能修改其值... 阅读更多

我们可以在 Java 中的默认构造函数中初始化静态变量吗?

Maruthi Krishna
更新于 2019年10月15日 06:50:25

7K+ 浏览量

类/静态变量属于类,就像实例变量一样,它们在类中声明,在任何方法之外,但使用 static 关键字。它们在编译时可用,您可以在实例化类之前/无需实例化类即可访问它们,在整个类中只有一个副本的静态字段可用,即所有对象中静态字段的值将相同。您可以使用 static 关键字定义静态字段。如果您在类中声明了一个静态变量,如果您没有初始化它,就像实例变量一样,编译器会使用默认值初始化它们... 阅读更多

如何在 Java 中使数组的元素不可变?

Maruthi Krishna
更新于 2019年10月15日 06:44:33

3K+ 浏览量

否,您无法使数组的元素不可变。但是,java.util.Collections 类的 unmodifiableList() 方法接受 List 接口的对象(实现其类的对象)并返回给定对象的不可修改形式。用户只能对获得的列表进行只读访问。而 ArrayList 类的 asList() 方法接受一个数组并返回一个 List 对象。因此,要将数组转换为不可变:获取所需的数组。使用 asList() 方法将其转换为列表对象。将获得的列表作为参数传递给 unmodifiableList() 方法。示例实时演示导入 java.util.Arrays; 导入 java.util.Collections; 导入 java.util.List; 公共类 UnmodifiableExample ... 阅读更多

仅使用 final 关键字可以在 Java 中定义常量吗?

Maruthi Krishna
更新于 2019年10月15日 06:41:59

346 浏览量

常量变量是指其值固定且在程序中仅存在一个副本的变量。一旦您声明了一个常量变量并为其赋值,您就无法在整个程序中再次更改其值。与其他语言不同,Java 不直接支持常量。但是,您仍然可以通过声明一个变量为 static 和 final 来创建一个常量。静态 - 一旦您声明一个变量为 static,它们将在编译时加载到内存中,即只有一个副本可用。最终 - 一旦您声明一个变量为 final,您就不能修改其值... 阅读更多

为什么 Java 不允许在构造函数中初始化静态 final 变量?

Maruthi Krishna
更新于 2019年10月15日 06:37:04

609 浏览量

如果您声明一个变量为 static 和 final,则需要在声明时或在静态块中对其进行初始化。如果您尝试在构造函数中初始化它,编译器会假设您正在尝试重新分配值并生成编译时错误 - 示例实时演示类数据 {    static final int num;    Data(int i) {       num = i;    } } 公共类 ConstantsExample {    public static void main(String args[]) {       System.out.println("常量的值:"+Data.num);    } }编译时错误ConstantsExample.java:4: 错误:无法为... 阅读更多

为什么应在所有 Java 构造函数中显式初始化空白 final 变量?

Maruthi Krishna
更新于 2019年10月15日 06:35:01

1K+ 浏览量

未初始化的 final 变量称为空白 final 变量。通常,我们在构造函数中初始化实例变量。如果我们遗漏了它们,则构造函数将使用默认值初始化它们。但是,final 空白变量不会使用默认值初始化。因此,如果您尝试在未在构造函数中初始化的情况下使用空白 final 变量,则会生成编译时错误。示例实时演示公共类 Student {    public final String name;    public void display() {       System.out.println("学生的姓名:"+this.name);    }    public static void main(String args[]) { ... 阅读更多

广告