方法的语法:
访问权限 (修饰词) 返回值类型 方法名((参数列表)){
方法体
}
访问权限
用于控制方法在其他类中使用
1、public 可自由使用
2、private 仅仅当前类可使用
3、protected 仅仅当前package可使用
修饰词
1、static 有此修饰的方法调用方式:类名.方法名() 或 储存对象的变量.方法名()
若无此修饰的方法调用方式:储存对象的变量.方法名()
如:
Test test =new Test();
Test.print();
test.print();
2、final
3、synchronized
方法名
符合java标识符命名规范,做到见名知义,且为动词或动宾结构。
返回值类型
1、如果方法返回值类型为void,则无返回值,或返回值为空,亦即若为非void则一定要有返回值。
2、如果方法返回值类型为基本数据类型,则返回值为该基本数据类型或为比该基本数据类型精度小的基本数据类型,若要返回更大精度的数据则需要强制类型转换。
//2.
public static int print(){
double a = 1.2;
int b = 1;
short c = 2;
return b ;
//若return a; 错误
//若return (doule)a; 正确
//若return b; 正确
//若return c; 正确
}
3、如果方法返回值为引用类型,则返回值为该类型或者为该类型的子类(Object为所有类型的父类)。
public static String print(){
return "12";
//若return "a"; 正确
//若return 12; 错误
}
参数列表
定义参数,可有可无,参数间用逗号隔开
其中动态参数形如 数据类型…参数名 实质上是一个数组,可以理解为没有长度限制,因此动态参数只能定义在最后,因为如若在前,则无法区分其他参数的值。
如下为正确
public static void print(int a,int ...b) {
}
重载
方法的方法名相同,但是参数列表不同(参数个数不同,数据类型不同,不考虑参数名不同)
public static void print(int a,int b) {
}
public static void print(int a,int b,int c) { //参数个数不同
}
public static void print(int a,int b,double c) { //数据类型不同
}
public static void print(int x,int y) { //错误,因为不考虑参数名的不同
}
如何调用上述的方法?
依靠参数一 一对应
public class Computer {
public static void print(int a,int b) {
System.out.println(a);
System.out.println(b);
}
public static void print(int a,int b,int c) {
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
public static void print(int a,int b,double c) {
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
public static void main(String[] args) {
Computer.print(1,2);
Computer.print(1,2,3);
Computer.print(1,2,3.0);//调用方法
}
}
输出结果为
1
2
1
2
3
1
2
3.0
另
关于方法里 this 的用法
package sirius;
public class Student {
public void test() {
System.out.println("test方法:"+this);//this是一个代词,哪个对象调用该方法,this就是谁
}
public static void main(String[] args) {
Student student = new Student();
student.test();
System.out.println("main方法:"+student);
}
}
输出结果为
test方法:sirius.Student@52e922 //对象的地址
main方法:sirius.Student@52e922