方法的格式
1 返回值类型与返回值的数据类型需要保持一致
2 通过方法名+参数列表调用方法,方法名与参数列表(参数的类型和参数的个数)必须保持一致
3 若方法声明了“返回值类型”,说明该方法运行后有结果
4 若调用者需要用到该结果,则声明一个变量接收
5 若方法运行后不需要返回结果给调用者,则返回值类型处声明为void
public static void main(String[] args) {
//调用一个已经声明的方法
int result = myMethod(5);//实际参数
System.out.println("方法运行结果:"+result);
//调用99乘法表
print99();
//调用compare
System.out.println(compare(10,20));
}
//声明一个方法
public static int myMethod(int i){//形式参数(未知数),用于接收调用者传递的实际参数
int r=i*2+1;
return r;
}
//打印99乘法表
public static void print99(){
for (int i = 0; i <= 9; i++) {
for (int j = 1; j < i; j++) {
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
//判断两数是否相等
public static boolean compare(int a,int b){
return a==b;
}
JVM编译器自动编译的流程:
先在当前.java源文件的相同路径下找,是否有对应类的.java源文件,如果有则编译,如果没有则找是否有.class字节码文件,若有则执行,若没有则报错
跨类调用方法(还可以跨.java源文件的类)
public class MethodTest03 {
public static void main(String[] args) {
//类名.方法
A.method(100,200);
}
}
class A{
public static int method(int n,int m){
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print("*");
}
System.out.println();
}
return n*m;
}
}
参数的值传递
基本数据类型: 当基本数据类型作为参数传递给方法,方法运行结束后,原值不会发生改变
引用数据类型:当将引用数据类型作为参数传递给方法,方法运行结束后,原属性值会发生改变
基本数据类型
public static void main(String[] args) {
int i=10;
int j=20;
System.out.println("main方法调用add方法前:i="+i+"j="+j);//i=10 j=20
add(i,j);
System.out.println("main方法调用add方法后:i="+i+"j="+j);//i=10 j=20
}
public static void add(int a,int b){//只要方法运行,参数一定有值
System.out.println("add方法运行前: a="+a+"b="+b);//a=10 b=20
a+=1;
b+=2;
System.out.println("add方法运行后: a="+a+"b="+b);//a=11 b=22
}
引用数据类型
public static void main(String[] args) {
Number num = new Number();
num.a=10;
num.b=20;
System.out.println("main方法调用add方法前:num.a="+num.a+"num.b="+num.b);//num.a=10 num.b=20
add(num);
System.out.println("main方法调用add方法后:num.a="+num.a+"num.b="+num.b);//num.a=11 num.b=22
}
public static void add(Number num){//相当于Number num = new Number();
System.out.println("add方法运行前:num.a="+num.a+"num.b="+num.b);//num.a=10 num.b=20
num.a+=1;
num.b+=2;
System.out.println("add方法运行后:num.a="+num.a+"num.b="+num.b);//num.a=11 num.b=22
}
public static void add(int a,int b){
a+=1;
b+=2;
}
}
class Number{
//属性
int a;
int b;
方法的重载
同一个类中,
方法名相同,
参数列表不同(参数的个数,参数的类型)
与返回值无关
public static void main(String[] args) {
add(10,20);
}
//计算两个整数的和
public static int add(int a,int b){
return a+b;
}
//计算三个整数的和
public static int add(int a,int b,int c){
return a+b+c;
}
public static double add(double d1,double d2){
return d1+d2;
}
public static void add(String str,boolean boo){
}
public static int add(boolean boo,String str){
return 0;
}
}
方法中可以调用其他方法
public static void main(String[] args) {
double a = max(10.1, 20.1);
System.out.println(a);
double b = max(4.5, 3.2, 6.2);
System.out.println(b);
}
public static double max(double d1,double d2){
return d1>d2?d1:d2;
}
public static double max(double d1,double d2,double d3){
// double max1=d1>d2?d1:d2;
// max1=max1>d3?max1:d3;
// return max1;
double m = max(d1, d2);
m = max(m, d3);
return m;
}
1 不能 参数列表相同,不能构成重载
6 不能 参数列表形同,不能构成重载
7 不能 方法名不同
方法重写
1.重写发生在子类和父类之间。
2.重写的方法要和父类的方法名一致。
3.重写方法的返回值和参数不能改变。