方法,是类或对象(实例)的行为特征的抽象。从功能上看,它完全类似于传统结构化程序设计里的函数。但是在Java中,方法是不能独立存在的,它必须定义在类里。在逻辑上,它要么属于类,要么属于对象(实例)。
一个方法,如果被static修饰,那么它就是类方法,归属于类,否则它归属于对象(实例)。(它就这2种)
同归属的不同方法之间的相互调用,若是非静态方法,则是对象调用,否则是类调用。对象调用时,可以用this显示调用,也可以省略this。
在类的方法中,会碰到“递归方法”这一词。那么什么是递归方法呢?其实,递归方法就是一个方法体内调用它自身。不过要注意递归的方向,否则就会陷入无限递归。
当同一个类里出现多个同名方法,且形参列表各不相同。那么称之为方法重载。它的要求如同定义所言 -- 同类同方法名、不同的形参列表,对于方法的返回值类型、修饰符等,就跟方法重载扯不上边了。
下面贴出上面所涉及到点的代码:
package com.ClassTests;
/**************************************************
*
* @author: 瘋叻ハ.兩
* @create-time: 2011-5-15 下午04:56:44
* @revision: 1.0
* @purpose: 介绍方法的使用
*
***************************************************/
public class MethodTest1 {
public static String name = "张三";
public static void run() {
System.out.println("这是类的方法");
}
public void say(String message){
say(); // 同归属的不同方法之间相互调用,非静态方法,是对象调用,可以省略this引用对象,等同于this.say();
run(); // 静态方法默认类调用,等同于 MethodTest1.run();
}
// say(String message)的重构方法
// 在对象方法里修改类的属性
public void say(){
System.out.println("类的name属性值为:"+MethodTest1.name);
MethodTest1.name = "李四";
}
// 递归方法
public static int fn(int n){
if( n == 0 ) {
return 1;
}else if(n == 1){
return 4;
}else {
return 2* fn(n-1)+fn(n-2);
}
}
public static void main(String[] args) {
System.out.println("方法递归后的结果是:"+fn(4));
run(); //调用类的方法
new MethodTest1().say();
System.out.println("更改后的name值为:"+new MethodTest1().name); // 此处对上篇的拓展 -- 不同方法内实例修改类的属性同样改变
}
}
方法中还有个重点也是难点:方法参数的传递。 为什么呢?且看下面2种类型的方法参数的传递
1、基本类型的参数传递
public class TestA {
public static void swap(int a, int b){
int temp = a;
a = b;
b = temp;
System.out.println("交换后,a的值是:"+ a + ",b值是:"+b);
}
public static void main (String[ ] args) {
int a = 6;
int b = 9;
swap(a,b);
System.out.println("a的值是:"+ a + ",b值是:"+b);
}
}
2、引用类型的参数传递
public class TestB {
int a;
int b;
public static void swap(TestB t){
int temp = t.a;
t.a = t.b;
t.b = temp;
System.out.println("交换后,a的值是:"+ t.a + ",b值是:"+t.b);
}
public static void main (String[ ] args) {
TestB t = new TestB();
t.a = 6;
t.b = 9;
swap(t);
System.out.println("a的值是:"+ t.a + ",b值是:"+t.b);
}
}
不妨copy运行,试问自己是否懂得它们2个是怎么发生转换的...
在Java中方法的参数传递方式只有一种:值传递 --- 就是将实际参数值的的副本(复制品)传入方法内,而实参本身不会受到任何影响。
详细的解析部分请请看图片TestA、TestB。
- 大小: 30.4 KB
- 大小: 53.5 KB
分享到:
相关推荐
NULL 博文链接:https://949507869-qq-com.iteye.com/blog/1053933
T1_起航JAVA旅程 java 经典教程 经典教材
对于初学者来说这是很好的入门资料。简单易懂,浅谈深入。
上课所使用的ssh框架下的物流系统
JAVA性能优化.pptx
Java Tess4J 实现OCR 可运行Demo 一 下载相关的jar包 1.下载Tess4J jar,网址:http://sourceforge.net/projects/tess4j/ 2.如果你使用的JVM 64位的,还需要下载 liblept168.dll、libtesseract302.dll的64位文件,...
这是一份java学习资料,里面包括java基础、javaee、数据库学习资料,ssh\ssm框架,才用网页离线方式进行学习。
本资料主要是讲解了Java虚拟机的机制,jvm设计原理与实现
java面试资料.rar
良葛格 java 学习笔记,对java初学者有莫大的帮助,pdf格式,
java 基础 ppt格式,学习必备 下半部分
java 2D api;编程必备,基础 java 2D api;编程必备,基础
Java中级教程(ppt).rarJava中级教程(ppt).rar
学习think in java 的时候查资料构建的源码构成的工程 导入即可查看使用 方便学习看书时同时查看源码
LeetCode题库42——接雨水算法:给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 LeetCode题库42——接雨水算法:给定n个非负整数表示每个宽度为1的柱子的高度图,计算...
自定义可控制drawbleleft/right/bottom/top大小的view,忘了从哪儿抄的了,分享给大家,可根据需求改变父类,入textview、radiubutton、checkbox
数据库,redis等都迁移到公众号上,比较清晰,利于管理:这次的YummyFood电商项目呢,是跟随慕课网的《 Java架构师成长直通车》学习的,之前呢也有一个项目是mmall,不过这次呢,我打算重新开始,扬帆起航,学习几位...
htmlunit webclient下载资源,谨慎运行,我设置的下载是1000次,想做个刷下载量的东西,然并卵
此demo是基于我上一个demo的延展(http://download.csdn.net/detail/cwb521zg/9741707),希望对需要搭建框架的leading有帮助。下一步在集成redis,尽情期待。
非对称加密java,让你更加明白私钥、公钥