请问java中调用方法传入参数为null时如何进行调用的

CSDN问答 2021-12-30 10:43:10 阅读数:427

java 方法 调用 请问 传入

如图,当定义好了locked方法后,new出新的lock类对象test,调用locked方法时,如果方法定义中有locked(String type)时,test(null)调用该方法,打印出如下结果:

public class Lock { public void locked(String type){ System.out.println("调用的是locked(Str)方法"); } public void locked(int type){ System.out.println("调用的是locked(int)方法"); } public void locked(){ System.out.println("调用的是locked()方法"); } public static void main(String[] args){ Lock test=new Lock(); test.locked(); test.locked(2); test.locked("2"); test.locked(null); }}

运行结果

调用的是locked()方法调用的是locked(int)方法调用的是lockedStr)方法调用的是lockedStr)方法进程已结束,退出代码0

但当我注释掉String方法后,如图,运行编译未通过。
修改后代码如下:

public class Lock { /**public void locked(String type){ System.out.println("调用的是locked(Str)方法"); }*/ public void locked(int type){ System.out.println("调用的是locked(int)方法"); } public void locked(){ System.out.println("调用的是locked()方法"); } public static void main(String[] args){ Lock test=new Lock(); test.locked(); test.locked(2); //test.locked("2"); test.locked(null); }}

运行结果及报错内容

java: 不兼容的类型: <nulltype>无法转换为int

请问是否代表null做参数的调用就是默认String类型的形参?如果用null作为参数调用的话是调用的那种形式的对应方法呢?希望各位不吝赐教




采纳答案:

这时候你就要知道int和Integer的区别了。

1、Integer是int的包装类,int则是java的一种基本数据类型

2、Integer变量必须实例化后才能使用,而int变量不需要

3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 。

4、Integer的默认值是null,int的默认值是0。
public static void main(String[] args){

 Lock test=new Lock(); test.locked(); test.locked(2); //test.locked("2"); //test.locked(null); test.locked(0);}

就可以了



其他答案2:

引用数据类型默认为空,传递null也就表示传递了一个空的字符串对象。
没有提供字符串类型的参数方法就会报错,因为int类型默认值是0,null不能转为int类型。


其他答案3:

因为你只有一个locked(String type)可以传入null参数,传入null是必然是调用locked(String type),
locked()无参的传入null不会调用,locked(int type)方法int类型也是不能传入null的,所以注释掉locked(String type)之后会编译报错
如果多一个其他类型参数的locked(Object type),调用传参locked(null)时,也会编译报错,无法指定哪一个方法

版权声明:本文为[CSDN问答]所创,转载请带上原文链接,感谢。 https://ask.csdn.net/questions/7619734