关于方法调用的问题
提问者:花哨丶涼了碎 | 浏览 次 | 提问时间:2017-02-11 | 回答数量:9
我在练习方法的调用以下是我自己编的一个程序:public class TestMethod{public static void main(String[]args){m(2);m1(1,2);m2(2+3);m3(3,4);int i=m3(3,4); System.out.println(i);} public static void m(int i){System.out.println(i);}public static void m1(int i,j){System.out.println(\"i\"+\"j\");}public static void m2(int i+j){System.out.println(\"i+j\");}public static void m3(int i,j){if(i<j?i:j)return;}}运行后的结果:机器显示的结果是什么意思?我觉得我没编错啊
已有9条答案
m3你定义的是无返回方法
m1(int i, int j) 应该这样写
曾在黑暗中狂奔
回答数:62 | 被采纳数:110
2017-02-11 03:33:38
为什么m1(int i, int j)一定要这样写?我写成m1(int i,j) 好像也是一个意思啊。
我写的m3应该是可以返回的,我用的if语句,3<4 所以返回i=3 然后打印i
LZ 你要这样写就对了
public class TestMethod{
public static void main(String[]args){
m(2);
m1(1,2);
m2(2, "+", 3);
m3(3,4);
int i = m3(3,4);
System.out.println("m3Reson = " +i);
}
public static void m(int i){
System.out.println("mReson = " +i);
}
public static void m1(int i, int j){
System.out.println("m1Reson = " +i +"+" +j);
}
public static void m2(int i, String operate, int j){
System.out.println("m2Reson = " +i +operate +j);
}
public static int m3(int i, int j){
if (i < j) {
return i;
}
return j;
}
}
简单的举例给你听函数的形参定义和传递 以及 输入的格式书写
就本帖例子而言
此方法
public static void m2(int i, String operate, int j)
首先声明一下,如果外部类不调用此方法的话,建议使用private私有类型
此方法的基本含义如下:
定义了一个静态的公有方法m2无返回类型,传递的参数有三个分别为
int i 整型
String operate 字符串型
int j 整型
这些i j operate 只是一个形参 不代表具体的含义,因此可以更换其他的标识符如
public static void m2(int neo, String neoneo, int neoneoneo)
其跟上面的方法是一样的
输出类型
System.out.println("m2Reson = " +i +operate +j);
表示输出一个字符串的意思
首先输出一部分字符串常量m2Reson = 因为是常量字符串所以要用引号
其次接着输出形参i的值
再其次输出形参operate的值 因为是个形参字符串类型所以不需要用引号
最后输出形参j的值
可以这么理解要输出的是字符串类型,因此要用+号把所有小部分都连接起来形成一个长的字符串
所以就写成"m2Reson = " +i +operate +j 这个样!
实际运行的理论
前面main函数中调用此方法传递参数m2(2, "+", 3)
实际上
这个数字2 在内部已经传递给了i
这个字符串+ 在内部已经传递给了operate
这个数字3 也已经传递给了j
因此形参i operate j这三个
分别就携带着实际的值 2 + 3
来充当这几个实际值的载体从而进行m2方法的计算
输出的方式为m2Reson = " +i +operate +j
这些+号只是为了连接各个小部分的,因此不作为输出的对象
可以看成输出m2Reson =i operate j
再把这个载体中的实际值呈现出来
就是最后的输出结果m2Reson = 2+3 了
neo_pang 非常感谢你!
我是初学者,对于Reson 和operate的具体表示意思还不明白,因为还没学到。 但是看了你说的后,我明白了点。不过就这个例子我还有几个问题想问下你:
1.在语句System.out.println("m2Reson = " +i +operate +j);中为什么要写成m2Reson ,直接写成("m2 = " +i +operate +j)难道不能输出一个字符串吗?按照你写的程序运行的结果是:
mReson = 2
mReson = 1+2
mReson = 2+3
mReson = 3
我的意愿是输出这个结果:
m = 2
m = 1+2
m = 2+3
m = 3
也就是说能否在运行结果中去掉Reson ?
2. 在这个方法public static void m1(int i, int j)里,括号里面为什么对i和j这两个变量一定要分别定义,而不能一次定义完?比如写成这样public static void m1(int i, j)可不可以?
3. 为什么常量字符串要加引号而形参字符串类型不加引号?这是Java的规定吗?
4. 最后那个m3方法中 像我这样写错在了哪里?
public static void m3(int i,j){
if(i<j?i:j)
return;}
我想表达的意思就是如果i小于j则选择i的值,然后返回,进行 int i=m3(3,4);的操作,将i的值赋给i然后运行下一句话System.out.println(i); 打印i的值。在这里我有没有什么地方写错了?
1)答:是可以的去掉Reason 我只是为了区别才定义的这个Reason
2)答:传递的是两个参数,而参数的定义 必须是有类型和标识符组成的,所以每个参数都要有int j这样
3)答:常量字符串要加引号是表示引号内的值为该字符串的真值,形参字符串类型只是一个载体不加引号表示载体中的实际字符串真值
4)答:应该这样写
if (i < j ? true: false){
return i;
}
return j;
neo_pang :
我最后一句这样写可不可以:
return i < j ? i : j