函数传参问题(Java复习三)
来源:互联网 发布:圆方拆单软件破解版 编辑:程序博客网 时间:2024/06/05 18:34
昨天在写数组问题的时候,遇到一个问题,就是数组作为函数参数传入时,数组本身值也改变了(详见Java复习二)。于是请教了一下Java老师,发掘了自己以前没有意识道德问题。
只要参数是复合类型,即对象,接口,数组,那么传递的值都是地址。
1.对象package com.object;public class Demo {public static void main(String[] args) {// TODO Auto-generated method stubNum num1=new Num(1,1);Num num2=new Num(2,2);num1.display();num2.display();num1.add(num2);num1.display();num2.display();}}class Num{int num;int value;public Num(int num,int value){this.num=num;this.value=value;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public int getValue() {return value;}public void setValue(int value) {this.value = value;}public void display(){System.out.println("\nnum="+num+" value="+value);}public void add(Num num){num.setValue(3);}}
运行结果:
2.数组
详见Java复习二
3.对象数组
package com.object;public class Demo {public static void main(String[] args) {// TODO Auto-generated method stubNum[] nums={new Num(1,1),new Num(2,2)};new Num(0,0).add(nums);for(int i=0;i<nums.length;i++){nums[i].display();}}}class Num{int num;int value;public Num(int num,int value){this.num=num;this.value=value;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public int getValue() {return value;}public void setValue(int value) {this.value = value;}public void display(){System.out.println("\nnum="+num+" value="+value);}public void add(Num num){num.setValue(3);}public void add(Num[] num){for(int i=0;i<num.length;i++){num[i].value=3;}}}
运行结果
4.接口
package com.interfaceDemo;public class Demo {public static void main(String[] args) {// TODO Auto-generated method stubPeople p1=new People();p1.add(p1);p1.display();}}interface Animal{int n=0;void display();}class People implements Animal{int num=1;@Overridepublic void display() {// TODO Auto-generated method stubSystem.out.println("n="+n+" num="+num);}void add(Animal animal){//animal.n=3;//报错((People)animal).num=3;}}
运行结果:
例子可能不太好,但是可以说明问题吧,原理和对象作参数差不多。好的,这个问题先处理到这里吧。
0 0
- 函数传参问题(Java复习三)
- JAVA复习(三)
- java复习(三)
- Java复习笔记(三)
- #java笔试复习(三)#
- JAVA 复习总结(三)
- Java面试复习(三)
- JAVA复习笔记--------类(三)继承
- Java单例模式复习(三)
- 复习Java(三)简单的逻辑运算
- Java基础复习(章节三)
- java复习三 线程
- java 复习 (三)
- Java基础复习(三)
- Java基础复习三
- Java基础复习(三)
- linux复习杂记(三)select函数相关
- Java复习 9.1问题???
- html5 返回当前地理位置的坐标点(经纬度)
- 微信传过来的时间是距1970年的秒数,而不是毫秒数
- 转载关于视觉SCI期刊
- #模糊相似矩阵到模糊等价矩阵(opencv实现)
- 【公告】hex工作室博客转移
- 函数传参问题(Java复习三)
- 一个多层HMM模型
- 层次型HMM模型
- 情感小屋
- MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题
- word生成pdf保留书签设置
- 将不相关的多个表查询结果组合在一起显示
- kernel coding style
- OCP 1Z0 051 112