`
incyanggan
  • 浏览: 32710 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Java菜鸟学习笔记--面向对象篇(五):方法

 
阅读更多


方法格式

[修饰符1 修饰符2 …..] 返回值类型 方法名( 形式参数列表 ){

Java 语句;… … …

}

语法解释:

    1. 形式参数:在方法被调用时用于接收外界输入的数据。
    2. 实参:调用方法时实际传给方法的数据。
    3. 返回值:方法在执行完毕后返回给调用它的环境的数据。
    4. 返回值类型:事先约定的返回值的数据类型,无返回值,必须给出返回类型viod。
      1. Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
      2. 实参的数目、数据类型和次序必须和所调用方法声明的形式列表匹配。
      3. return语句中止方法的运行并指定要返回的数据。

方法区分与特点

  • 方法不能独立定义,要在类体里里面
  • 从逻辑上来看,方法要么属于类本身(类方法),要么属于类的一个对象(对象方法)
  • 方法永远不能独立执行,执行方法必须使用类和对象作为调用者
  • 没有static修饰的方法则属于对象,有static标识的则属于类本身

示例.

1.对比静态方法和动态方法
class Person{
 	private int age;
	private double number;
	
	Person(int age,double number){
		this.age=age;
		this.number=number;
	}
	public void show(){
		System.out.println("这是对象方法");
		System.out.println("age= "+age);
		System.out.println("number= "+number);
	}
	public static void say(String some){
		System.out.println(some);
	}

}
public class PrimitiveTest{
	public static void main(String[] agrs){
		//1.定于类方法和对象方法
		Person.say("你好,这个是类方法");//类方法直接诶 类名.方法名()
		Person yg=new Person(18,114.2);	//对象方法  对象.方法名()
		yg.show();	
		/*输出:
		你好,这个是类方法
		这是对象方法
		age= 18
		number= 114.2

		*/		
	}
}


方法的参数传递机制



  • Java中方法中参数的传递方式只有一种:值传递(就是将实参的赋值品传递给方法内接受的形参)



1.传递基本类型的代码

class Person{

	static void swap(int a,int b){
		int temp=a;
		a=b;
		b=temp;
		System.out.println("swap栈区中 a= "+a+" b="+b);
	}
	static void say(String word){
		
		System.out.println(word);
	} 


public class test{
			
	public static void main(String[] agrs){
	
		Person.say("1.测试传递基本类型参数");
		
		int a=100;
		int b=321;
		Person.swap(100,321);
		System.out.println("main栈中 a= "+a+" b= "+b);
		/*输出:
		1.测试传递基本类型参数
		swap栈区中 a= 321 b=100
		main栈中 a= 100 b= 321
		*/	
	}
	
}

2.传递引用类型的代码


class Person{

	static void objswap(Warehouse one){
		int objtemp=one.a;//one.a one.b全部是堆中的对象的数据成员,objtemp是栈中的变量
		one.a=one.b;
		one.b=objtemp;
			
		System.out.println("obj交换后 a= "+one.a+" b="+one.b);
	}
	static void say(String word){
		
		System.out.println(word);
	} 

} 
class Warehouse{
	int a;
	int b;
	Warehouse(){}
	Warehouse(int a,int b){
		this.a=a;
		this.b=b;
	}

}
public class test{
			
	public static void main(String[] agrs){
	
		Person.say("1.测试传递引用类型参数");
		Warehouse one=new Warehouse(123,456);
		System.out.println("交换前,one.a= "+one.a+" one.b= "+one.b);
		Person.objswap(one);//传过去为指向堆中对象的指针的副本。形参接受副本,还是指向堆中的同一个对象
		System.out.println("交换后,one.a= "+one.a+" one.b= "+one.b);

		/*
		1.测试传递引用类型参数
		交换前,one.a= 123 one.b= 456
		obj交换后 a= 456 b=123
		交换后,one.a= 456 one.b= 123
		*/		
	}
	
}


Main()方法



在java中,main()方法是java应用程序的入口方法。java虚拟机通过main方法找到需要启动的运行程序,并且检查main函数所在类是否被java虚拟机装载。如果没有装载,那么就装载该类,并且装载所有相关的其他类。因此程序在运行的时候,第一个执行的方法就是main()方法。通常情况下, 如果要运行一个类的方法,必须首先实例化出来这个类的一个对象,然后通过"对象名.方法名()"的方式来运行方法,但是因为main是程序的入口,这时候还没有实例化对象,因此将main方法声明为static的,这样这个方法就可以直接通过“类名.方法名()”的方式来调用。


每个类都可以拥有main()方法,不管这个类是否声明为public

//测试每个类的main方法的调用
package me.testmain;
public class Testmain{
	
	
	public static void main(String[] args){
		
		System.out.println("这个class Testmain()方法");
		
	}
	
	
}
class Dog{
	
	public static void main(String[] args){
		
		System.out.println("这是 Dog 类的main方法");
		
	}
	
	
	
}

编译无问题后,我们可以这样运行测试

/*输出:
	yg@Gander:~/Desktop/code$ java me.testmain.
	me.testmain.Dog       me.testmain.Testmain  
	yg@Gander:~/Desktop/code$ java me.testmain.Testmain 
	这个class Testmain()方法
	yg@Gander:~/Desktop/code$ java me.testmain.Dog 
	这是 Dog 类的main方法
	yg@Gander:~/Desktop/code$ 	
	*///说明每个class都可以拥有main函数,而且不管是否public都可以java xxx









作者:YangGan
出处:http://blog.csdn.net/incyanggan
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics