📝 Java

1404篇技术文档
  可以在Java中重载或重写静态方法吗

📅  最后修改于: 2020-02-15 12:25:24        🧑  作者: Mango

让我们首先定义重写和重载。重写:重写是OOP语言(例如Java)的一项功能,与运行时多态性有关。子类(或派生类)在超类(或基类)中提供方法的特定实现。将在运行时确定要执行的实现,并根据用于调用的对象进行决策。请注意,这两种方法的签名必须相同。有关详细信息,请参见Java中的Override。重载:重载也是Java等OOP语言的功能,与编译时(或静态)多态性有关。此功能允许不同的方法具有相同的名称,...

  Java中静态函数的阴影(方法隐藏)

📅  最后修改于: 2020-02-15 12:26:22        🧑  作者: Mango

在Java中,如果派生类静态函数的名称与基类静态函数的名称相同,则基类静态函数会遮盖(或隐藏)派生类静态函数。例如,以下Java代码显示“ A.fun()”。注意:静态方法是类的属性,因此,如果从具有类名或对象中调用静态方法,则该类方法会被调用,对象的方法将不被调用。输出:注意:如果我们同时将A.fun()和B.fun()设为非静态,则上述程序将打印“ B.fun()”。虽然这两种方法都是静态类型...

  Java中的静态方法与实例方法

📅  最后修改于: 2020-02-15 12:29:12        🧑  作者: Mango

实例方法实例方法是需要先创建其类的对象才能调用的方法。要调用实例方法,我们必须创建在其内定义该类的Object。内存分配:这些方法本身存储在堆的永久生成空间中,但是参数(传递给它们的参数)及其局部变量和要返回的值在堆栈中分配。可以在它们所驻留的同一类中调用,也可以在同一包或其他包中定义的不同类中调用它们,具体取决于提供给所需实例方法的访问类型。重要事项:实例方法属于类的对象,而不属于类,即可以在创...

  在Java中为静态最终static final变量分配值

📅  最后修改于: 2020-02-15 12:30:52        🧑  作者: Mango

在Java中为静态最终static final变量分配值:在Java中,可以在构造函数中或通过声明为非静态最终变量分配值。但是,静态最终变量不能在构造函数中分配值;必须为其声明分配一个值。例如,以下程序可以正常运行。如果我们将i设为静态final,则必须使用代数赋值给i。由于静态变量在类的所有对象之间共享,因此这种行为是显而易见的。创建新对象将更改相同的静态变量,如果该静态变量是final,则不允...

  Java中的协变返回类型

📅  最后修改于: 2020-02-15 12:32:45        🧑  作者: Mango

在JDK 5.0之前,无法通过更改返回类型来覆盖(重写)方法。当我们重写父类方法时,子类中重写方法的名称、参数类型和返回类型必须与父类方法完全相同。重写方法相对于返回类型是不变的。协变量返回类型从Java 5.0开始,子类中的重写方法可能具有不同的返回类型,但是子类的返回类型应该是父类的返回类型的子类型。重写方法相对于返回类型成为变体。协变量返回类型基于Liskov替换原理。下面是一个简单的示例,...

  Java中的对象类Object

📅  最后修改于: 2020-02-15 12:37:30        🧑  作者: Mango

对象类存在于java.lang包中。Java中的每个类都直接或间接地从Object类派生。如果一个类不扩展任何其他类,则它是Object的直接子类,如果扩展其他类,则它是一个间接派生的。因此,对象类方法可用于所有Java类。因此,对象类充当任何Java程序中继承层次结构的根。使用对象类Object方法Object类中有一些方法:1,toString():toString()提供对象的String表...

  Java中的静态类

📅  最后修改于: 2020-02-15 12:38:35        🧑  作者: Mango

Java中的类可以是静态的吗?答案是肯定的,我们可以在Java中拥有静态类。在Java中,我们有静态实例变量,静态方法和静态块。也可以在Java中将类设为静态。Java允许我们在一个类中定义另一个类。这样的类称为嵌套类。包围嵌套类的类称为外部类。在Java中,我们不能将顶级类设为静态。只有嵌套的类可以是静态的。静态和非静态嵌套类有什么区别?(比较绕口)以下是静态嵌套类和非静态嵌套类之间的主要区别。...

  java.lang.Object的灵活性

📅  最后修改于: 2020-02-15 12:42:11        🧑  作者: Mango

我们都喜欢Python的机制,Python让我们不必理会变量的数据类型。有趣的是,我们在Java中也有一个类,这非常相似!是的,你猜对了!这是java.lang.Object例如,输出:这种行为可以归因于java.lang.Object是所有其他类的超类。因此,类型为Object的引用变量实际上可以用于引用任何类的对象。因此,我们也可以在上面的代码中分配y = new InputStreamRea...

  Java重写equals方法

📅  最后修改于: 2020-02-15 12:44:10        🧑  作者: Mango

考虑以下Java程序:输出:打印“不等于”的原因很简单:比较c1和c2时,将检查c1和c2是否都引用相同的对象(对象变量在Java中始终是引用)。c1和c2引用两个不同的对象,因此值(c1 == c2)为假。如果我们像下面创建另一个引用c3,则(c1 == c3)将为true。那么,我们如何检查对象内部值的相等性呢?Java中的所有类都直接或间接地从Object类继承(请参见继承)。该Object...

  在Java中重写toString()

📅  最后修改于: 2020-02-15 12:45:29        🧑  作者: Mango

这篇文章类似于Java中的重写equals方法。考虑以下Java程序:输出:输出是类名,然后是“ at”符号@,然后是object的hashCode的末尾。Java中的所有类都直接或间接地从Object类继承(请参见链接)。Object类具有一些基本方法,例如clone(),toString(),equals()等。Object中的默认toString()方法打印“类名@哈希码”。我们可以在类中重...

  Java中的实例变量隐藏

📅  最后修改于: 2020-02-15 12:46:20        🧑  作者: Mango

在Java中,如果方法中有一个与实例变量同名的局部变量,则该局部变量将隐藏该实例变量。如果我们想反映对实例变量所做的更改,则可以借助this引用来实现。输出:...

  Java中的静态块static block

📅  最后修改于: 2020-02-15 12:55:42        🧑  作者: Mango

与C++不同,Java支持一个特殊的块,称为静态块(也称为static子句),该块可用于类的静态初始化。静态块中的代码仅执行一次:第一次创建该类的对象或第一次访问该类的静态成员(即使您从未创建该类的对象)。例如,检查以下Java程序的输出。输出:同样,静态块在构造函数之前执行。例如,检查以下Java程序的输出。输出:如果我们想为每个对象执行一些代码怎么办?我们在Java中使用Initializer...

  Java中的初始化程序块Initializer Block

📅  最后修改于: 2020-02-15 13:10:55        🧑  作者: Mango

初始化程序块包含创建实例时始终执行的代码。它用于声明/初始化类的各种构造函数的公共部分。例如,输出:我们可以注意到,每当调用任何构造函数时,都会执行初始化程序块的内容(在构造函数的内容之前)初始化构造函数和初始化块的顺序无关紧要,初始化块总是在构造函数之前执行。如果我们想为一个类的所有对象执行一次代码,该怎么办?我们在Java中使用静态块...

  Java中的实例初始化块(IIB)

📅  最后修改于: 2020-02-15 13:12:49        🧑  作者: Mango

在Java程序中,可以在方法,构造函数和初始化块上执行操作。实例初始化块或IIB用于初始化实例变量。IIB在构造函数之前执行。它们每次在创建类的对象时运行。每当初始化类时,在调用构造函数之前,都会执行初始化块。它们通常放在大括号内的构造函数上方。完全没有必要将它们包括在您的类中。输出:我们也可以在一个类中有多个IIB。如果编译器找到多个IIB,则它们都将自上而下执行,即,将首先执行写在顶部的IIB...

  Java中的静态绑定与动态绑定

📅  最后修改于: 2020-02-15 13:14:21        🧑  作者: Mango

静态绑定:可以在编译时由编译器解析的绑定称为静态绑定或早期绑定。所有静态,私有和最终方法的绑定都在编译时完成。为什么绑定静态,最终和私有方法始终是静态绑定?静态绑定是更好的性能选择(不需要额外的开销)。编译器知道所有此类方法都不能被覆盖,并且始终由本地类的对象访问。因此,编译器确定类的对象(肯定是本地类)没有任何困难。这就是此类方法的绑定是静态的原因。让我们看一个例子在向下滚动之前,猜猜上面程序的...