8.19方法调用笔记
2015-08-19 23:43
281 查看
方法的定义、调用、重载
一、方法
概念:完成某一功能的程序块相当于其他语言的函数。
main本身也是一个方法。
将参数传递给方法(或函数)
按值调用--表示方法接收的是调用者提供的值
按引用调用--表示方法接收的是调用者提供的变量地址
一个方法可以修改传递引用所对应的变量值,而不能修改传传递值调用所对应的变量值
--Java程序设计语言总是采用按值调用,也就是说,方法得到的是所有参数值的一个拷贝,特别的是,方法不能修改传递给它的任何参数变量的内容
参数值和参数变量的内容区别
运行结果为:10
运行结果为:10
此含义相同,但是书写方法略有不同,并不懂。
此处分析下具体的执行过程:
拷贝
3倍的值
1)x被初始化为p值的一个拷贝(也就是10)
2)x被乘以3后等于30.但是p值还是10
3)这个方法结束之后,参数变量x不再使用
--既然改变不了这个p变量的值,那还有何意义了
--如何才能将输出的结果变做3倍p的值呢
二、为什么要用方法
1.代码重用
2.团队分工合作(做接口实现)
三、分类
JDK自带方法
用户自定义方法
四、用户自定义方法
1.定义
[访问修饰符] 返回值类型 方法名(参数类型1 参数名1,...,参数类型n 参数名n)
public
private
区别
返回值类型--怎么判断有无返回值
1).如果没有返回值,必须写void,这是不可以省略的。
2).如果有返回值,程序中必须有return与返回值类型匹配的变量或者表达式。
方法名命名规则与变量名一样。
“骆驼命名法”
参数可有可无
参数:参与运算的数据
在定义的时候--形参
在调用的时候--实参
2.分类
1).是否有参数
有参数
无参数
方法参数
2).方法参数分类:是否有返回值
有:基本数据类型(数字、布尔值 )
有:引用数据类型(对象引用)
无:void
定义在类的下面、class里
一个方法不可能修改一个基本数据类型的参数。而对象引用作为参数就不同了------哪里不同了,根本没反应过来好嘛
对象的引用
由此可见,实现一个对改变参数状态的方法并不是一件难事,因为方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用一个对象。
很多程序设计语言提供了俩种参数传递的方式:值调用和引用调用。Java对对象采用的是引用调用,实际上这种理解是不对的(Java中只有传值调用一种方式。Java中的方法参数为那几种基本数据类型的情况跟C++中一样,传入的只是变量的拷贝。而当参数类型为类对象是,则有可能会误以为是传址调用),这里给出一个反例:
这并没有实现交换数据,显然该方法并没有改变存储在变量a和b中的对象引用。swap方法的参数x和y被初始化为两个对象引用的拷贝,这个方法交换的是这两个拷贝。
这个过程说明:Java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递
引用和调用一样吗
总结一下java程序设计语言中方法参数的使用情况:
一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)
一个方法可以改变一个对象参数的状态
一个方法不能让对象参数引用一个新的对象
3.调用
main方法调用自定义方法
方法所在类的类名 随便起个名字=new 方法所在类的类名();
随便起个名字.方法(参数)
//不管在不在同一个类中,都这么写
参数是什么
如果定义是int[] a,参数竟然只要a吗?
除了main方法,俩个自定义方法互相调用
1)俩个方法在同一个类
a(){
b();
}
2)俩个方法在不同类
假设a方法在A类,b方法在B类,a方法中调用b方法
class A{
a(){
B XXX=new B();
XXX.b();
}
}
------------------------------------------------并不是很透彻
![](http://images0.cnblogs.com/blog2015/789013/201508/192340499103317.jpg)
2015-08-19
23:42:15
一、方法
概念:完成某一功能的程序块相当于其他语言的函数。
main本身也是一个方法。
将参数传递给方法(或函数)
按值调用--表示方法接收的是调用者提供的值
按引用调用--表示方法接收的是调用者提供的变量地址
一个方法可以修改传递引用所对应的变量值,而不能修改传传递值调用所对应的变量值
--Java程序设计语言总是采用按值调用,也就是说,方法得到的是所有参数值的一个拷贝,特别的是,方法不能修改传递给它的任何参数变量的内容
参数值和参数变量的内容区别
package B19fangfa; public class Test1paixu { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int x = 10; Test1paixu s = new Test1paixu(); s.san(x); System.out.println(x); } public int san(int x) { x = 3 * x; return x; } }
运行结果为:10
package B19fangfa; public class Test1paixu { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int p = 10; System.out.println(p); } public void san(int x) { x = 3 * x; } }
运行结果为:10
此含义相同,但是书写方法略有不同,并不懂。
此处分析下具体的执行过程:
p=10 |
x=30 |
3倍的值
1)x被初始化为p值的一个拷贝(也就是10)
2)x被乘以3后等于30.但是p值还是10
3)这个方法结束之后,参数变量x不再使用
--既然改变不了这个p变量的值,那还有何意义了
--如何才能将输出的结果变做3倍p的值呢
二、为什么要用方法
1.代码重用
2.团队分工合作(做接口实现)
三、分类
JDK自带方法
用户自定义方法
四、用户自定义方法
1.定义
[访问修饰符] 返回值类型 方法名(参数类型1 参数名1,...,参数类型n 参数名n)
public
private
区别
返回值类型--怎么判断有无返回值
1).如果没有返回值,必须写void,这是不可以省略的。
2).如果有返回值,程序中必须有return与返回值类型匹配的变量或者表达式。
方法名命名规则与变量名一样。
“骆驼命名法”
参数可有可无
参数:参与运算的数据
在定义的时候--形参
在调用的时候--实参
2.分类
1).是否有参数
有参数
无参数
方法参数
2).方法参数分类:是否有返回值
有:基本数据类型(数字、布尔值 )
有:引用数据类型(对象引用)
无:void
定义在类的下面、class里
一个方法不可能修改一个基本数据类型的参数。而对象引用作为参数就不同了------哪里不同了,根本没反应过来好嘛
对象的引用
由此可见,实现一个对改变参数状态的方法并不是一件难事,因为方法得到的是对象引用的拷贝,对象引用及其他的拷贝同时引用一个对象。
很多程序设计语言提供了俩种参数传递的方式:值调用和引用调用。Java对对象采用的是引用调用,实际上这种理解是不对的(Java中只有传值调用一种方式。Java中的方法参数为那几种基本数据类型的情况跟C++中一样,传入的只是变量的拷贝。而当参数类型为类对象是,则有可能会误以为是传址调用),这里给出一个反例:
package B19fangfa; public class Test1paixu { /** * @param args */ public static void main(String[] args) { int a =5; int b=10; Test1paixu s=new Test1paixu(); s.swap(a,b); System.out.println(a); System.out.println(b); } public void swap(int a,int b){ int temp=a; a=b; b=temp; } }
这并没有实现交换数据,显然该方法并没有改变存储在变量a和b中的对象引用。swap方法的参数x和y被初始化为两个对象引用的拷贝,这个方法交换的是这两个拷贝。
这个过程说明:Java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递
引用和调用一样吗
总结一下java程序设计语言中方法参数的使用情况:
一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)
一个方法可以改变一个对象参数的状态
一个方法不能让对象参数引用一个新的对象
3.调用
main方法调用自定义方法
方法所在类的类名 随便起个名字=new 方法所在类的类名();
随便起个名字.方法(参数)
//不管在不在同一个类中,都这么写
参数是什么
如果定义是int[] a,参数竟然只要a吗?
除了main方法,俩个自定义方法互相调用
1)俩个方法在同一个类
a(){
b();
}
2)俩个方法在不同类
假设a方法在A类,b方法在B类,a方法中调用b方法
class A{
a(){
B XXX=new B();
XXX.b();
}
}
------------------------------------------------并不是很透彻
![](http://images0.cnblogs.com/blog2015/789013/201508/192340499103317.jpg)
2015-08-19
23:42:15
相关文章推荐
- 9款Android常用的快速开发框架
- ActionCamera,OrbitCamera源码解析
- JavaScript设计模式与开发实践——读书笔记1.高阶函数(下)
- 使用json-lib进行Java和JSON之间的转换
- uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
- 独立日记 2015年8月19日 quick 3.5 + sublime环境搭建
- java基础学习集合学习笔记
- android activity 组件详解
- Python & OpenCV混合编程
- 一个优秀的程序员是如何炼成的?(大神、小白通吃的干货,不信你
- 关于异步:再次思考和澄清
- Android应用程序优化注意事项
- React实践笔记-Introduction
- 自定义Adapter将图片在GridView中显示
- 安装 Windows XP
- linux配置网卡
- TalkingData灵动分析技术揭秘(下)
- 调试神器
- Leetcode 213 House Robber II 抢劫最大金额
- HDOJ 2187 悼念512汶川大地震遇难同胞——老人是真饿了 (贪心)