`
瘋叻ハ.兩
  • 浏览: 80620 次
  • 性别: Icon_minigender_1
  • 来自: 宁德
社区版块
存档分类
最新评论

Java起航 ---- 方法

阅读更多

 

     方法,是类或对象(实例)的行为特征的抽象。从功能上看,它完全类似于传统结构化程序设计里的函数。但是在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中方法的参数传递方式只有一种:值传递 --- 就是将实际参数值的的副本(复制品)传入方法内,而实参本身不会受到任何影响。

      详细的解析部分请请看图片TestATestB

  • 大小: 30.4 KB
  • 大小: 53.5 KB
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics