① java 方法 传参
在定义方法的时候,方法的参数叫形参(形式参数),在调用方法的时候,给方法传递的参数叫实参(实际参数),你的写法有问题,在调用abc方法的时候,可以直接把45写在方法后面(直接写45需要类型转换,否则报错),也可以把45先赋值给一个变量,然后把变量当成参数传给abc方法,不能又写变量名,又写45啊,标准写法如下:
byte a=45;
abc(a);//或者是abc((byte)45)
public static void abc(byte a){
}
② Java中的 参数传递问题
在main函数中,首先给str1复制打印
然后在func函数中,将str1传递进去,而这的str1只是func函数的参数 只在func里面起作用
所以在以下各打印的时候,打印的依然是主函数mian里面的hello
③ java 参数传递 规则
简言之:Java都是值传递(pass-by-value)
在Java中,无非就是两种类型,即基本类型和从Object继承下来的对象类型,而对象类型又包括String这种一旦初始化就不可改变内容的类型和BufferString这种可以初始化后可
以改变内容的类型。
然后看一下代码示例:
java 代码
1.package test;
2.
3.public class Test {
1. public static void main(String args[]) {
2. Integer interger1, interger2;
3. int i, j;
4. interger1 = new Integer(10);
5. interger2 = new Integer(50);
6. i = 5;
7. j = 9;
8. System.out.println("Before Swap, Interger1 is " + interger1);
9. System.out.println("Before Swap, Interger2 is " + interger2);
10. swap(interger1, interger2);
11. System.out.println("After Swap Interger1 is " + interger1);
12. System.out.println("After Swap Interger2 is " + interger2);
13. System.out.println("Before Swap i is " + i);
14. System.out.println("Before Swap j is " + j);
15. swap(i, j);
16. System.out.println("After Swap i is " + i);
17. System.out.println("After Swap j is " + j);
18.
19. StringBuffer sb = new StringBuffer("I am StringBuffer");
20. System.out.println("Before change, sb is <" + sb + ">");
21. change(sb);
22. System.out.println("After change sb is <" + sb + ">");
23. }
24.
25. public static void swap(Integer ia, Integer ib) {
26. Integer temp = ia;
27. ia = ib;
28. ib = temp;
29. }
30.
31. public static void swap(int li, int lj) {
32. int temp = li;
33. li = lj;
34. lj = temp;
35. }
36.
37. public static void change(StringBuffer ia) {
38. ia.append(", but my content can be changed");
39. //ia = new StringBuffer(",but my content can be changed");
40. }
41.}
42.
输出:
Before Swap, Interger1 is 10
Before Swap, Interger2 is 50
After Swap Interger1 is 10
After Swap Interger2 is 50
Before Swap i is 5
Before Swap j is 9
After Swap i is 5
After Swap j is 9
Before change, sb is <I am StringBuffer>
After change sb is <I am StringBuffer, but my content can be changed>
这很好解释,对于基本类型诸如int,传递进去的是存放int值的“内存单元”的一个,所以函数swap里面的int和外面的int根本就不是一个东西,当然不能反射出去影响外面
的int。而对于对象类型,我们同样可以这样认为,传递进去的是存放对象类型的指针的“内存单元”一个(虽然Java里面没有指针的概念,但这并不妨碍我们理解)。这样,
在swap函数里面,对其指针本身的值做任何操作当然不会影响外面的Integer,因为interger1和interger2的“内存单元”里面的值是不变的,其指向的对象类型也是没有变的。
然后这里需要说明一个问题,就是StringBuffer这种类型的对象了。因为其内容是可以改变的,所以change函数里面的“指针”通过类似“*”的操作,改变了StringBuffer对象的
本身,就显而易见了。(StringBuffer对象本身只有一个副本)
④ Java中如何传值
可以通过参考传值,如下:
publicclassTest{
publicvoidfunction(inta){}
publicstaticvoidmain(String[]args){
Testtest=newTest();
inta=1;
test.function(a);
}
}
⑤ Java编程中参数传递
两个情况:
1、args的长度不等于3,退出。
2、args的长度等于3,但不会进for循环,因为x已经等于0是不可能大于3的。
(x=0,还x>args.length??那args必须比0小才行啊!)
这要看args的长度来判断了,你这样断章起义很难判断啊!楼主!
⑥ java中参数传递方式
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
⑦ java 代码中的参数传递
1.
swap(intobj_a,intobj_b); 调用了public static void swap (interger x , interger y ) 这个方法
说明,Integer虽然是int的封装类型,而且java本身的装箱拆箱可以让他用起来像是一个一样,但是他们还是不同的东西,还是有区分滴
2.
方法体里的内容是将x,y的值进行交换,也许你会想着,既然是对象进行传递,那就是引用传递咯,引用传递的话……,想的无比之遥远,不好意思,x,y交换以后intobj_a,intobj_b的值不变,
x,y分别是另外两个变量而已,他们分别拿的是实参的存储地址而已
你吧x的地址给了temp,x拿了y的地址,y拿了temp的地址
那时x,y的事儿,跟外面的实参没有关系
如何才能操作到外面的实参呢,,,根据传过来的对象本身的方法来改变
就是我改变这块儿内存区域里面的东西,就改了
⑧ JAVA的参数传递
change(int a)
p.change(pass);
虽然你吧PASS当作参数传递进去了,但是方法在执行上实际在内存中新建立一个对象a 并且a=100
并且你的程序中没有p=a或者p=100
所以P的内容实际上还是50
⑨ java中对象类型的参数传递
因为Java里方法参数的传递实际上只有值传递(不管基本类型或引用类型),对基本类型来说是把其值传递了一份过去,而对引用类型来说实际是把引用地址的值复制一份传递了过去。
另外,只有用new方法创建的对象的实际成员数据是存放在堆里面的,而其他方法内部定义的变量都存放在栈中,一旦出了方法的范围就失效,会被内存回收。
知道了以上两点,就可以分析了,swap方法里t1,t2,temp都是存放在栈里的只保存引用类型地址的变量,不管他们怎么交换,实际上不会改变堆里面的内容,而main方法里的time1, time2的引用类型虽然其地址仍在栈中,而实际数据在堆中,程序中没有任何改变其内容的语句,因此,不会产生交换。
⑩ Java方法的参数传递
对象型类型是引用传递,传递的是对象的地址。值被修改后原来的变量也会被修改。