JavaRush /Java Blog /Random-TW /喝咖啡休息#139。Java 中的重載和重寫。5 個你不知道的 Java 方法

喝咖啡休息#139。Java 中的重載和重寫。5 個你不知道的 Java 方法

在 Random-TW 群組發布

Java 中的重載與重寫

來源:Medium 在本文中,您將了解 Java 語言中的重寫和重載方法。由於這兩個術語經常相互混淆,因此有必要清楚地了解每種方法的目的及其應用選項。 喝咖啡休息#139。 Java 中的重載和重寫。 您不知道的 5 個 Java 方法 - 1

超載

在Java中,在同一個類別中或超類別與子類別之間使用多個同名但參數不同的方法稱為重載。為了避免這種情況,使用單一方法而不是執行類似操作的許多方法。我們用一個例子來解釋:
public class MethodOverloading {

    public static void main(String[] args){
        MethodOverloading operation = new MethodOverloading();
        operation.mod(12,4);
        operation.mod(12.4,4.2);
    }

    void mod(double a, double b){
        System.out.println(a % b);
    }

    void mod(int a, int b){
        System.out.println(a % b);
    }
}
在此程式碼中,操作方法被重載。具有相同名稱的方法接受不同類型的參數。模式的選擇是針對intdouble參數單獨決定的。當我們執行程式時,operation.mod (12,4)執行void.mod (int a, int b)operation.mod (12.4,4.2)執行void.mod (double a, double b)

壓倒一切

在Java中,我們可以建立一個超類別和繼承該類別的子類別。這些子類別可以重寫和替換它們繼承的父類別的方法。這是使用覆蓋方法完成的。透過一個例子可以更好地理解這一點:
public class MethodOverriding {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.sound();

        Bee bee = new Bee();
        bee.sound();
    }
}

class Animal {
    void sound(){
        System.out.println("Animal sounds");
    }
}

class Cat extends Animal{
    @Override
    void sound() {
        System.out.println("Cat : meow meow");
    }
}

class Bee extends Animal{
    @Override
    void sound() {
        System.out.println("Bee : buzz buzz");
    }
}
此程式碼範例建立一個名為Animal的超類別以及從該超類別繼承的名為CatBee 的子類別。超類中的 聲音方法被重寫。注意:重載方法的分離發生在編譯階段。重寫方法的分離發生在運行時。

5 個你不知道的 Java 方法

來源:Javarevisited Java 開發生態系統有許多可用的工具,程式設計師可以在其程式中匯入和使用。其中包括內建類別和方法。它們顯著簡化了程式設計師的工作,使他們能夠更好地理解和編寫程式碼。每個開發人員都應該了解它們。這裡有 5 種 Java 方法,雖然很少見,但在您的工作中非常有用。

1. 精確遞減

decrementExact()是Math類別中的一個基本 Java 函數,它將給定參數(數字)減/減 1 並傳回結果。該函數與incrementExact()函數相反。例如,如果給定參數為 11,則結果為 10。如果遞減參數導致其資料類型溢出,則會引發異常。因此,使用此函數時一定要小心,尤其是對於大量資料。通常,函數使用整數。句法:
Math.decrementExact(number);
例子:
System.out.println(Math.decrementExact(11));
// Output: 10

2.getAsDouble

getAsDouble()是屬於OptionalDouble類別的方法。OptionalDouble物件是一個可以保存雙精度數的物件。類別中的方法可用於對物件中存在的 double 值進行操作,或指示根本不包含該 double 值。 getAsDouble()就是這樣的方法之一,它會傳回雙精確度值(如果存在)。否則,將引發NoSuchElementException。句法:
OptionalDoubleObject.getAsDouble();
例子:
OptionalDouble num = OptionalDouble.of(15.0);
System.out.println(num.getAsDouble());
// Output: 15.0

3. 絕對精確

absExact()方法與Math類別中的abs()函數類似。它會傳回數字的絕對值,即該數字的正值,無論其符號為何。唯一的區別是,只有在精確表示為其資料類型(intlong)時,它才會執行此操作。如果傳回值的結果超出了原始資料類型,則拋出ArithmeticException。句法:
Math.absExact(number);
例子:
System.out.println(Math.absExact(-11));
// Output: 11

4.結束於

endsWith()是一個內建的字串方法,它根據給定的字串是否以參數中的某個後綴(結束字/字串)結尾,傳回一個布林值。此方法與許多開發人員可能熟悉的startsWith()方法相反。句法:
String.endsWith(String suffix);
例子:
String phrase = "I like bananas";
System.out.println(phrase.endsWith("bananas")); // true
System.out.println(phrase.endsWith("Tandrew")); // false
/* Output:
true
false
*/

5.divide未簽名

divideUnsigned()方法是Integer類別中的一個方法,可讓您將兩個數字相除並傳回相除結果。與常規有符號整數相比,無符號整數只能表示正數。無符號整數和有符號整數在其範圍內具有相同數量的數字(範圍的大小為 65,536 個數字)。但是,由於無符號整數不能為負數,因此它們在正範圍內的最大值遠高於常規有符號整數的最大值。為了簡化這一點,我們可以看一下有符號和無符號位元組的範例。位元組的範圍為 256 個數字。常規位元組的值可以是 -128 到 127。但是,無符號位元組的值可以是 0 到 255。否則,函數的工作方式與常規除法完全相同。句法:
Integer.divideUnsigned(int dividend, int divisor);
例子:
int dividend = 10;
int divisor = 5;
int quotient = Integer.divideUnsigned(dividend, divisor);
System.out.println(quotient);
// Output: 2

結論

以下是本文討論的函數和方法的總結:
  • decrementExact - 將給定數字減少/減去 1

  • getAsDouble -OptionalDouble函數的一部分,傳回具有雙精確度值的數字或指示其不存在

  • absExact - 如果數字可以表示為原始資料類型,則傳回數字的絕對值

  • endsWith() - 根據給定字串中是否存在指定的後綴傳回布林值

  • divideUnsigned() - 執行普通除法,傳回數字相除的結果

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION