java方法和内存空间

方法介绍

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

方法组成

这里写图片描述

方法名是方法存在的唯一标识,必须是合法的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(“我“); //?
解析:如果传入的参数类型可以隐式转换为定义的参数类型,则系统会自行转换,不会出现错误

这里写图片描述

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

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

内存空间

这里写图片描述

这里写图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值