java方法重载内存,Java(1):方法重载(1)

日期:2017/10/10

Java学习不含糊(1)

一、方法的重载

狠抓了一个国庆黄金周,java基础中的基础(数据结构--数组,类型--primitive数据,类的属性--class,成员变量,方法调用和传递参数;结构化--if..else../while.../for.../swith....case...default...break...)已经打牢。之前有python的经验,给一分钟装逼的话,确实对“语言是一个工具”这句话有点独特见解,但碍于造诣不深,还是继续埋头苦干,不吹哔哔。

1. 方法的重载:

1.1 在Github下了一个教程版的java代码,里面的定义如下(精辟!):

在同一个类中,方法名相同,参数列表不同的方法。参数列表不同:个数不同,数据类型不同与返回值类型无关。

那不就乱套了吗!?函数名都能一样,,在C语言要被打死的。C++/Java 支持函数重载而C语言不支持函数重载。(为啥?参考博文:http://blog.csdn.net/FX677588/article/details/70207794;)

方法重载代码如下:

package com.object;

/*

* 比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,

两个int类型,两个long类型,并在main方法中进行测试

* */

/*

* 方法重载:

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

和返回值类型无关。

* */

public class MethodRestructure {

public static void main(String[] args){

//test

byte a = 10;

byte b = 10;

short a1 = 233;

short b1 = 766;

System.out.println(compare(a1,b1)+" 0");

System.out.println(compare(a,b)+" 1");

System.out.println(compare(10,10)+" 2");

}

//byte

public static boolean compare(byte a,byte b){

System.out.print("byte ");

return a == b;

}

//short

public static boolean compare(short a,short b){

System.out.print("short ");

return a == b;

}

//int

public static boolean compare(int a,int b) {

System.out.print("int ");

return a == b;

}

//long

public static boolean compare (long a,long b){

System.out.print("long ");

return a == b;

}

}

1.2 其实恰恰相反,方法的重载大大促进了代码的复用和适用场景。当然也有很多的误区,比如造成方法重载的条件看起来就比较复杂了,有大牛总结的很好了(

http://blog.csdn.net/shippingxing/article/details/47042627 ,感谢助攻)。

1.2.1 对于两个方法,如果只有返回值不同,那么不构成重载,程序会报错。

class A{

public void cry()

{

......

}

public int cry()

{

return 0;

}

}1

2

3

4

5

6

7

8

9

10

1.2.2 对于两个方法,如果只有访问修饰符不同,那么不构成重载,程序会报错。

class A{

public void cry()

{

......

}

protected int cry()

{

......

}

}1

2

3

4

5

6

7

8

9

10

1.2.3 对于两个方法,如果只是参数命名不同,那么不构成重载,程序会报错。

class A{

public void cry(int a)

{

......

}

protected int cry(int b)

{

......

}

}

1.3 方法重载的同时,同名方法也是可以互相调用的!见下面的代码:

package com.object;

public class MethodRestructureSum {

public static void main(String[] args){

//需求:请写一个功能,实现两个数据的求和

System.out.println(sum(10,20));

//需求:请写一个功能,实现三个数据的求和

//System.out.println(sum2(10,20,30));

System.out.println(sum(10,20,30));

System.out.println(sum(1.5,2.5));

System.out.println(sumNest(10,20,30));

}

public static int sum(int a,int b){

System.out.print("Int Result : "+a +"+"+b+" = ");

return a+b;

}

public static int sum(int a,int b,int c){

System.out.print("Int Result : "+a +"+"+b+"+"+c+ "= ");

return a+b+c;

}

public static double sum(double a,double b){

System.out.print("Double Result : "+a +"+"+b+ "= ");

return a+b;

}

public static int sumNest(int a,int b,int c){

System.out.print("Int Nest Result : "+a +"+"+b+"+"+c+ "= ");

int result = sum((a + b),c);

return result;

}

}

Java的方法重载还有很多的运用,待续。。

END.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值