您的位置:首页 > 编程语言 > Java开发

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

2013-07-16 12:23 686 查看

方法格式

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

Java 语句;… … …

}

语法解释:

形式参数:在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返回给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,无返回值,必须给出返回类型viod。

Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形式列表匹配。
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(包含链接).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: