用java画海绵宝宝_java 方法的重载

本文介绍了Java中的方法重载,强调了重载规则和好处。通过示例展示了如何重载加法运算方法,包括基本类型的重载,并特别讨论了涉及byte和short类型时可能出现的精度丢失问题及解决方案。在运算过程中,如果出现long类型,所有运算都将按照long进行。
摘要由CSDN通过智能技术生成

方法的重载:一个类中允许出现一个以上的同名方法,必须保证同名方法的参数列表不同

好处:方便阅读,优化程序设计

重载规则:重载方法名相同,但每个重载方法都必须有一个独一无二的参数类型列表,方法的返回值也可不同

参数个数和类型相同但参数顺序不同也可以区分这两个方法,不过一般情况下不这样做,因为会让代码难以维护

1.基本重载

1 public classMyMethod{2 //加法运算 x+y=z

3 public int add(int a,intb){4 return a+b;5 }6 public double add(double a,doubleb){7 return a+b;8 }9 public static voidmain(String[] args){10 MyMethod mymethod = newMyMethod();11 int a1 = mymethod.add(1,2);12 double a2 = mymethod.add(1.2,2.3);13 }14 }

2.涉及基本类型的重载

基本类型能从一个"较小"的类型自动提升至一个"较大"的类型,此过程涉及到重载,会有些特殊的地方会混淆

如果有某个重载方法接受int型参数,他就会被调用

如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际参数类型就会被提升

char类型不同,如果无法找到接收char类型参数的方法,就会把char直接提升至int

如果传入的参数较大,就得通过类型转换来执行窄化转换

3.其他:运算问题

在写重载方法时遇到一个小问题:以上程序没问题,但是重载一个byte和short类型的参数方法时会报错

1 public classMyMethod{2 //加法运算 x+y=z

3 public int add(int a,intb){4 return a+b;5 }6 public byte add(byte a,byteb){7 return (byte)(a+b); //必须强制转换,否则报错

8 }9 public short add(short a,shortb){10 return (short)(a+b); //必须强制转换,否则报错

11 }12 public static voidmain(String[] args){13 MyMethod mymethod = newMyMethod();14 byte a1 = mymethod.add(1,2);15 short a1 = mymethod.add(1,2);16 /*

17 //错误写法18 byte a = 10;19 byte b = 20;20 byte c = a+b; //int+int21

22 short a = 10;23 short b = 20;24 short c = a+b;25 */

26 }27 }

以上程序中在调用byte a1 = mymethod.add(1,2);和short a1 = mymethod.add(1,2);时会报错:可能损失精度

解决方法:进行强制转换 return (byte)(a+b);

原因:算术运算(+,-,*,/,%):在没有出现long类型的情况下,算术运算符两边的数据都会按照int运算,会自动将数据类型提升为int

在算数运算中存在long类型,则全部按照long运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值