JavaRush /Java 博客 /Random-ZH /喝咖啡休息#105。为什么 Java 中的字符串是不可变的?Java中的接口和多重继承

喝咖啡休息#105。为什么 Java 中的字符串是不可变的?Java中的接口和多重继承

已在 Random-ZH 群组中发布

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

来源:Dev.to 在理解为什么 Java 中的字符串是不可变的之前,我们需要思考为什么我们要让某些东西不可变? 喝咖啡休息#105。 为什么 Java 中的字符串是不可变的? Java中的接口和多重继承 - 1不可变意味着一旦创建我们就无法更改它。我们可以想到使某些东西不可变的唯一原因是一起使用时的同步。这就是字符串不可变的原因。在Java中, String对象是共享的,并缓存在String Pool中。它是堆上存储字符串的特定位置,如果字符串具有相同的值,则在多个线程之间共享这些字符串。例如:在字符串池中,如果已经存在一个值为“test”的字符串,并且程序想要创建另一个具有相同值的字符串对象,那么它将获得相同的引用,而不是创建一个新的字符串对象。现在我们知道字符串是如何存储在堆上的。让我们看看为什么它们没有变化。
  1. 不变性的第一个原因是线程安全。由于行在行池中的多个线程之间共享,因此我们需要限制任何随机线程来更改它。对行的任何更改都可能影响访问同一行的其他线程。如果一个线程想要更​​新一行的值,它需要创建另一行并引用它。

  2. 通常我们使用String作为Map中的键。如果字符串是可变的,任何人都可以更改字符串的值,而我们将丢失实际的密钥。

Java中的接口和多重继承

来源:Dev.to 让我们了解什么是多重继承。多重继承是一些面向对象编程语言的一项功能,其中一个对象或类可以从多个父对象或父类继承功能。 喝咖啡休息#105。 为什么 Java 中的字符串是不可变的? Java中的接口和多重继承 - 1如上图所示,多重继承子类可以有两个或多个基类,但要实现这一点,我们需要一个接口。

界面

Java 中的接口是类的蓝图。它有静态常量和抽象方法。也就是说,接口只能包含抽象方法和变量,不能有方法体。它不能以与抽象类相同的方式创建。

那么我们在哪里声明这些方法的主体呢?

方法体根据程序员的要求在需要该方法的类内部声明。

如何声明接口?

可以使用interface关键字来声明接口。句法:
interface interface_name {abstract methods}

笔记

为了在类中使用声明的接口,我们必须使用implements关键字。

执行?

首先,我们将创建一个打印接口,并在其中创建一个抽象print()方法;
interface printgib{
void print();
}
现在我们已经有了一个可供类使用的接口,因此让我们创建类abcgk并在其中实现该接口。
public class abc implements printgib{
public void print(){                     //1st implementation of print
System.out.println("I love you 3000");
}
public static void main(String[] args){
abc obj = new abc();
gk obj1 = new gk();
obj.print();
obj1.print();
}
}

class gk implements printgib{
public void print(){                   //2nd implementation of print
System.out.println("I am Gk");
}
}
如上面的代码所示,我们实现了多重继承并实现了一个接口。现在运行代码,保存文件并...
javac file_name.java
java abc

结果:

喝咖啡休息#105。 为什么 Java 中的字符串是不可变的? Java中的接口和多重继承 - 2
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION