当前位置: 首页 > 图灵资讯 > 技术篇> java方法重载知识详解

java方法重载知识详解

来源:图灵教育
时间:2023-04-04 10:32:44

Java方法重载它是一种编程技术,允许开发人员在同一类别中多次使用相同的方法名称,但使用不同的参数。在这种情况下,我们说这种方法是重载的。

1在数量、类型和顺序上显示了一种参数不同的方法。重载三种方法

Number of parameters:

public class Calculator {

void calculate(int number1, int number2) { }

void calculate(int number1, int number2, int number3) { }

}

Type of parameters:

public class Calculator {

void calculate(int number1, int number2) { }

void calculate(double number1, double number2) { }

}

Order of parameters:

public class Calculator {

void calculate(double number1, int number2) { }

void calculate(int number1, double number2) { }

}

1中,我们原始类型可见一斑int和double。因此,我们将进一步处理这些类型和其他类型我们需要花点时间复习Java中的原始类型。

重载不仅能使代码更整洁,更容易阅读,也有帮助我们避免程序中的错误。与1想象一个程序,你有很多种calculate()方法,使用名称,如calculate1, calculate2calculate3。看上去好像是这样不好重载calculate()方法使您可以使用相同的方法名称,只需更改需要更改的内容:参数。因为它们很容易找到重载的方法通常组合在代码中。

请注意,更改变量的名称不会导致重载。不能编译以下代码:

public class Calculator {

void calculate(int firstNumber, int secondNumber){}

void calculate(int secondNumber, int thirdNumber){}

}

我们签名中的返回类型不能通过更改方法来重载。以下代码不允许编译:

public class Calculator {

double calculate(int number1, int number2){return 0.0;}

long calculate(int number1, int number2){return 0;}

}

我们构造函数可以像使用方法一样重载:

public class Calculator {

private int number1;

private int number2;

public Calculator(int number1) {this.number1 = number1;}

public Calculator(int number1, int number2) {

this.number1 = number1;

this.number2 = number2;

}

}

首先,JVM是一个聪明的懒惰者:它将永远尽最大努力实施一种方法。因此,在考虑JVM如何处理重载时,请记住以下三个重要的编译技术:

1.加宽

2.装箱(自动装箱和拆箱)

3.瓦拉格斯

如果从来没有遇到过这三种技术,所以一些例子应该能帮你弄清楚。请注意,JVM 按给定的顺序执行。

这是加宽的示例:

int primitiveIntNumber = 5;

double primitiveDoubleNumber = primitiveIntNumber ;

扩展时,这是原始类型的顺序:

这是自动装箱的例子:

int primitiveIntNumber = 7;

Integer wrapperIntegerNumber = primitiveIntNumber;

编译此代码后请注意后台发生的情况:

Integer wrapperIntegerNumber = Integer.valueOf(primitiveIntNumber);

这是拆箱的例子

Integer wrapperIntegerNumber = 7;

int primitiveIntNumber= wrapperIntegerNumber;

这就是编译代码后在后台发生的事情:

int primitiveIntNumber = wrapperIntegerNumber.intValue();

这是可变参数的一个例子; 请注意,这个varargs总是最后一次执行:

execute(int… numbers){}

当我们直接使用数字时当1传输到executeaction方法时,JVM会自动将其视为int。这就是为什么数字不符合executeaction的原因(short var)方法的原因。

同样,如果传输数字1.0,JVM会自动将数字识别为double。当然,数字1.0也可以是float,但类型是预定义的。这就是executeaction(double var)2调用该方法的原因。

当我们使用当Double包装类型时,有两种可能性:包装号可以拆卸为原始类型或扩展为Object。(请记住,Java中的每个类别都扩展了Object类别。)在这种情况下,JVM选择将Double类型扩展到an,object因为它比拆箱花费的精力更少,就像之前解释的那样。我们传递的最后一个数字是1L,因为这次我们指定了变量类型,所以是long。

重载是一项非常强大的技术,需要相同的方法名称和参数。这是一项有用的技术,因为在代码中使用正确的名称对可读性有很大的影响。我们它可以简单地重载,而不是复制方法,并给代码增加混乱。这可以保持代码清洁和易于阅读,并降低重复方法破坏系统某些部件的风险。

最后,感兴趣的学生可以观看本网站的专业java视频课程了解更多关于重载的例子和用法,更深入的学习知识只在你的思想之间。