初学者学Java(六)
来源:互联网 发布:vim for mac os x 编辑:程序博客网 时间:2024/05/01 12:05
详解方法参数传递和方法重载
这篇我讲一下Java中两个比较重要的两个知识点:方法的参数传递和方法的重载。
1.方法参数传递
对于Java中的方法参数传递,无论是原生数据类型还是引用类型,统一是传值,Java中没有传引用的概念。只不过引用类型变量保存的值比较特殊,是他所指向的对象的地址,所以可以修改形参的值可以修改对象的属性,因为形参所接受的值是其的地址。
例:
public class A
{
int age;
public void addAge(A a)
{
this.age++;
a.age++;
}
public void doNotAddAge(int a)
{
a++;
}
public static void main(String[] args)
{
A a = new A();
a.addAge(a);
a.doNotAddAge(a.age);
System.out.println(a.age);
}
}
这个程序的最终结果是2,我们来分析一下:
A a= new A();
这条语句只是在内存中new了一个A的新对象,并把这个对象的引用赋给了a;
a.addAge(a);
这条语句调用了类A的一个方法addAge(A a);这个方法是把实参a中保存的引用地址的值赋给形参a,此时形参a和实参a指向同一个对象。
所以此时this.age++;a.agg++会使此对象的age属性加2;
a.doNotAddAge(a.age);
这条语句调用了类A的一个方法doNotAddAge(int a);这个方法是把实参a指向的对象的age属性赋给了形参a,而a++只是修改了a的值,并不会影响对象的age属性。
所以输出时a.age 的值为2。
分析到这里应该对方法的参数传递有一定的了解了吧,下面我们讲方法的重载。
方法的重载
方法重载是指两个或多个方法的名字相同,但方法参数不同。方法的参数不同1有两层含义:1.参数的类型不同。2.参数的个数不同。我看有的参考书上还写上了参数的排列顺序,我觉得参数的排列顺序不同属于参数的类型不同。还有一点很重要就是:方法的返回值对方法的重载没有任何的影响。普通方法和构造方法都可以进行重载,但main()方法不可以。关于方法的重载我个人认为,你的程序只要让系统在调用你的方法时知道该调用哪一个,哪就是合法的。如果产生了分歧,就是非法的。关于重载我就说这么多吧。
详解方法参数传递和方法重载
这篇我讲一下Java中两个比较重要的两个知识点:方法的参数传递和方法的重载。
1.方法参数传递
对于Java中的方法参数传递,无论是原生数据类型还是引用类型,统一是传值,Java中没有传引用的概念。只不过引用类型变量保存的值比较特殊,是他所指向的对象的地址,所以可以修改形参的值可以修改对象的属性,因为形参所接受的值是其的地址。
例:
public class A
{
int age;
public void addAge(A a)
{
this.age++;
a.age++;
}
public void doNotAddAge(int a)
{
a++;
}
public static void main(String[] args)
{
A a = new A();
a.addAge(a);
a.doNotAddAge(a.age);
System.out.println(a.age);
}
}
这个程序的最终结果是2,我们来分析一下:
A a= new A();
这条语句只是在内存中new了一个A的新对象,并把这个对象的引用赋给了a;
a.addAge(a);
这条语句调用了类A的一个方法addAge(A a);这个方法是把实参a中保存的引用地址的值赋给形参a,此时形参a和实参a指向同一个对象。
所以此时this.age++;a.agg++会使此对象的age属性加2;
a.doNotAddAge(a.age);
这条语句调用了类A的一个方法doNotAddAge(int a);这个方法是把实参a指向的对象的age属性赋给了形参a,而a++只是修改了a的值,并不会影响对象的age属性。
所以输出时a.age 的值为2。
分析到这里应该对方法的参数传递有一定的了解了吧,下面我们讲方法的重载。
方法的重载
方法重载是指两个或多个方法的名字相同,但方法参数不同。
方法的参数不同1有两层含义:
1.参数的类型不同。
2.参数的个数不同。
我看有的参考书上还写上了参数的排列顺序,我觉得参数的排列顺序不同属于参数的类型不同。
还有一点很重要就是:方法的返回值对方法的重载没有任何的影响。普通方法和构造方法都可以进行重载,但main()方法不可以。
关于方法的重载我个人认为,你的程序只要让系统在调用你的方法时知道该调用哪一个,哪就是合法的。如果产生了分歧,就是非法的。关于重载我就说这么多吧。
- 初学者学Java(六)
- 初学者学Java(一)
- 初学者学Java(二)
- 初学者学Java(四)
- 初学者学Java(五)
- 初学者学Java(七)
- 初学者学Java(八)
- 初学者学Java(八)
- 初学者学Java(九)
- 初学者学Java(十)
- 初学者学Java(十一)
- 初学者学Java(十一)
- 初学者学Java(十二)
- 初学者学Java(十三)
- 初学者学Java(十四)
- 初学者学Java(十四)
- 初学者学Java(十五)
- 初学者学Java(十五)
- paip.c++ qt 网页爬虫 的 网络编程 总结
- android 图片加载顺序
- rman备份脚本(改良版)
- 让ScrollView出现在顶部
- 如何使用ttf字体文件?及一些前端优秀网站资料
- 初学者学Java(六)
- XSD教程
- strut1文件上传和下载
- 磁盘的块大小(Block Size)和扇区大小(Sector Size)
- Altium Designer 10 导出文件(PDF,gerber,BOM)
- 如何解决加载大图片时内存溢出的问题
- 仿照memset的功能给出函数arrayset的具体实现
- 小记录
- fopen的逻辑小bug