`

Java基础 之 方法

    博客分类:
  • java
 
阅读更多

概述:

  1. 定义方法 请见method1注释,调用:类.方法(...)、对象.方法(...)。
  2. static 如果方法被static修饰那么这个方法属于类可以被类或对象调用,如果没有那么它只能被对象调用。
  3. 参数传递的机制:基本类型传值和引用类型传引用(String 是一个情况特殊的例子,以后写专门文章介绍)。
  4. 方法的重载:方法名相同(method3),但是参数不同(注意返回类型不同不能作为重载的标准),多态的体现之一。
  5. 动态参数:当不确定到底有多少个参数的时候可以采用动态定义。(类似一个数组,但是使用起来比数组方便)。
  6. 递归调用:方法调用自身(注意结束递归的条件!!),经典例子:遍历文件夹(请关注后续相关文章)。

 

package com.cxyapi.oo;

/** Java方法
 * @author cxy @ www.cxyapi.com
 */
public class MethodTest
{
	public static void main(String[] args)
	{
		String aa="cxyapi";
		//method1没有被static修饰,所以需要创建一个对象来调用
		new MethodTest().method1(aa); 
		//method2被tatic修饰,可以直接使用类调用,通常将工具类方法这样定义
		MethodTest.method2(aa);
		System.out.println("---------------------");
		
		//传值演示
		int i=0;
		MethodTest.method3(i);
		System.out.println("main方法里的变量i:"+i);
		//可以看到i传入方法的是一个值,方法内改变传入参数并不会修改原来的i变量。
		
		//传引用演示
		Point p=new Point();
		System.out.print("p的初始值:");
		p.show();
		MethodTest.method3(p); //传引用类型,实际是在传递p的引用(指针),方法对其的改变会改变原来的它
		System.out.print("method3执行后p的值:");
		p.show();
		System.out.println("---------------------");
		//我们看到method3定义3个方法,名称相同,但是参数不同(可以是类型不同,也可以是个数不同)
		
		//动态参数演示
		MethodTest.method4(aa,"www.cxyapi.com");
		System.out.println("~~~~~~~~~~~~~~~~~~~~~~");
		MethodTest.method4(aa,"www.cxyapi.com","http://www.cxyapi.com");
		System.out.println("---------------------");
	}

	/** 定义一个方法
	 *  修饰符 返回值类型 方法名称(参数类型 参数名)
	 */
	public void method1(String aa)
	{
		System.out.println("非静态方法:"+aa);
	}
	
	/** 一个静态类 可以直接使用 类.方法 的方式调用
	 */
	public static void method2(String aa)
	{
		System.out.println("静态方法:"+aa);
	}
	
	//传值
	public static void method3(int i)
	{
		i=2;
		System.out.println("method3方法内的变量i:"+i);
	}
	
	//传引用
	public static void method3(Point p)
	{
		p.x=1;	p.y=1;
		System.out.print("method4中:");
		p.show();
	}
	
	//方法重载演示:3个method3(...)名字相同,但是类型和个数各有不同
	public static void method3(int i,Point p)
	{
		System.out.println("方法重载演示~");
	}
	
	/* 采用...来定义一个动态的参数,效果类似参数数组。
	 * 动态参数只能有一个且必须在参数列表的最后
	 * */
	public static void method4(String ... str)
	{
		for(String one:str)
		{
			System.out.println(one);
		}
	}
}

/** 定义一个Point类 来演示参数传递引用
 * @author cxy @ www.cxyapi.com
 */
class Point
{
	//为了演示方便 我将其定义成为piblic
	public int x=0;
	public int y=0;
	
	public void show()
	{
		System.out.println("x="+x+",y="+y);
	}
}

 

声明:

1.原创文章,转载请标明并加本文连接。

2.文章反映个人愚见,如有异议欢迎讨论指正

3.更多的内容请看我的  个人博客(测试版)

 

4
4
分享到:
评论
1 楼 hxy1991 2014-04-24  
开了眼界,谢谢博主的分享

相关推荐

Global site tag (gtag.js) - Google Analytics