java 方法 传参

调用方法传入参数,难道不就是bytea=45;的意思吗?为啥会出错!请老哥老姐妹告诉我答案!... 调用方法传入参数,难道不就是 byte a = 45;的意思吗?为啥会出错!请老哥老姐妹告诉我答案! 展开
 我来答
无野楼升域醉0t
2019-08-26 · TA获得超过8552个赞
知道小有建树答主
回答量:1498
采纳率:88%
帮助的人:504万
展开全部

要是想传字面量的话 就这样

public class D {

public static void main(String[] args) throws Exception {

    byte a = 45;

    t(a);

    t((byte)45);

}

public static void t(byte a) {

    System.out.println(a);

}

}



正确的传参方式

更多追问追答
追问
嗯,老哥
嗯,byte a = 45; 这里的45没超过左边数据的类型编译器就自动给它强转,若是超过了范围就不自动给它强转了,对吗
百度网友8d9d8c6
2019-08-26 · TA获得超过1681个赞
知道小有建树答主
回答量:315
采纳率:82%
帮助的人:145万
展开全部
你在定义变量的时候,确实45会被转为byte型,但是在调用方法的时候不会自动帮你转型.
java是强类型语言,同样的方法有重载的概念.即方法名相同,参数不同,则认为是两个不同的方法.你既然传的是int型,则java只会寻找参数是int类型的方法.
假设java连参数是byte型的方法也去调用,如果同时存在参数是byte型,和参数是int型的相同名字的方法,java怎么处理这种情况?
更多追问追答
追问
老哥,牛逼,一语点破梦中人
其他人都要么不懂装懂,要么没说在电子上!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fuyh16
2019-08-26 · TA获得超过222个赞
知道小有建树答主
回答量:462
采纳率:82%
帮助的人:119万
展开全部
在定义方法的时候,方法的参数叫形参(形式参数),在调用方法的时候,给方法传递的参数叫实参(实际参数),你的写法有问题,在调用abc方法的时候,可以直接把45写在方法后面(直接写45需要类型转换,否则报错),也可以把45先赋值给一个变量,然后把变量当成参数传给abc方法,不能又写变量名,又写45啊,标准写法如下:
byte a=45;
abc(a);//或者是abc((byte)45)
public static void abc(byte a){
}
更多追问追答
追问
那不是变量名,那是提示,亲
idea所有的提示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Forever小熊
2019-08-26 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:204
采纳率:57%
帮助的人:54.8万
展开全部
这里主要是因为Java的默认类型导致的,像你直接传字面量45,默认是int类型的,但是你的abc方法需要的参数类型是byte的,所以给你报错了。
上面byte直接赋值45不报错的原因是因为java的自动拆装箱,你赋值的时候他自动把int的45转换成byte然后赋值给了a,所以不会报错。
追问
亲,你说错了,那不是装箱和拆箱哦,要是也是强转
追答
果然说的多,错的多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-08-26
展开全部
调用 abc() 函数的时候,参数写a,别写45。
abc(a)
byte a = 45 ,45默认是int类型,这里没有报错,因为这里有个类型强转。
你定义的函数abc() 参数是byte类型,传参的时候就只能传byte类型的参数。
追问
嗯,byte a = 45; 这里的45没超过左边数据的类型编译器就自动给它强转,若是超过了范围就不自动给它强转了,对吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式