java方法和内存空间

方法介绍

方法在C或其它面向过程的语言中又称为函数:
method or function
我们接触过的第一方法为:
public static void main(String args[]){
}

方法组成

java方法和内存空间_第1张图片

方法名是方法存在的唯一标识,必须是合法的java标识符,如果方法名为fun,则可以通过fun()来调用这个方法。

访问修饰符有:缺省,public, protected, private
(以后讲解)

方法类型为非static修饰的成员方法和static修饰的静态方法(类方法)-(以后讲解)

方法的返回值

方法的返回值可以为基本数据类型或复合数据类型,也可以没有返回值,如下:
void t(){} //没有返回值

    int t(){    //返回值为整数类型
        return 1;   //因为定义了返回值类型为整数,
            所以必须返回一整数值
    }

    String t(){ //返回值为字符串类型
        return “abc”;   //因为定义了返回值类型为String,
                所以必须返回一String值
    }

注意1:如果没有给方法定义返回值类型,如:
void t(){}
则一定不能在方法体内返回某一个值,如:
void t(){
return 1; //Error
}
但是可以在方法体内使用return,如:
void t(){
return; //OK
}

注意2:方法的返回值必须与定义的返回值类型一致,如:
boolean t(){}
则不能返回字符串值,如:
boolean t(){
return “true”; //Error
}
应为:
boolean t(){
return true; //OK
}

注意3:方法用return返回后,方法的调用就结束了,如:
void t(){
return; //方法至此结束
}
所以以下代码存在语法错误:
void t(){
return;
System.out.println(“stupid”);//不可能被调用的语句,语法错误!
}

参数

int add(int a, int b){
return a+b;
}
以上方法add存在两个参数:
整型类型的参数a
整形类型的参数b
调用方法可以用:
add(1, 2);
不可以传入错误的参数类型如:
add(“1”, 2); //Error

*隐式转换的问题:
如果方法为:
void t(double d){}
考虑用以下方式调用时,是否会有错误:
t(‘我’); //?
t(“我“); //?
解析:如果传入的参数类型可以隐式转换为定义的参数类型,则系统会自行转换,不会出现错误

java方法和内存空间_第2张图片

复合数据类型的传递
void t(int[] a){}
以上方法中参数类型为整数数组,属于复合数据类型
调用方式如下:
int x[] = new int[]{1, 3};
t(x);
注意:不要写成了t(x[])或t(x[0]);
java方法和内存空间_第3张图片

因为数组中可分为栈和堆,栈中存放的是指向对应堆的地址,而堆中存放的是数据,a[0]在栈中地址是一样的,指向同一个堆,因此a里面的元素的值改变了。

内存空间

java方法和内存空间_第4张图片

java方法和内存空间_第5张图片

你可能感兴趣的:(JAVA)