成员方法(简称方法)
人类除了有一些属性外(外貌,年龄)还有一些行为,比如 说话 跑步 学习。这时就用成员方法来完成。
比如添加speak行为
class Person{
int age;
String name;
//方法(成员方法)
//添加speak 成员方法,输出“我是一个人”
//1.public 表示方法公开
//2.void 表示没有返回值
//3.speak():speak是方法名 ()形参列表
//4.{}方法体 里面写执行代码
//5.System.out.println输出内容
public void speak() {
System.out.println("我是一个人");
}
}
public class ss{
public static void main(String[] args){
Person p1=new Person();
//方法使用
//1.方法写好后,如果不去调用,不会输出
//2.先创建对象,再调用方法
p1.speak();//找Person中的speak方法
}
}
计算1+2+…+1000
class Person{
public void leijia(){
int sum=0;
for(int i=1;i<=1000;i++){
sum+=i;
System.out.println("结果="+sum);
}
}
public class ss{
public static void main(String[] args){
Person p1=new Person();
p1.leijia();
}
}
计算1+…+n
class Person{
public void leijia(int n){
int sum=0;
for(int i=1;i<=n;i++){
sum+=i;}
System.out.println("结果="+sum);
}
}
public class ss{
public static void main(String[] args){
Person p1=new Person();
p1.leijia(5);
p1.leijia(10);
}
}
算两数的和
class Person{
public int getsum(int n,int m){//int 表示执行后返回一个int值
int sum=0;
sum=n+m;
return sum;
}
}
public class ss{
public static void main(String[] args){
Person p1=new Person();
int sum= p1.getsum(5,10);//调用方法,传入两值,把值给sum
System.out.println("结果="+sum);
}
}
方法调用机制
- 当程序执行到方法时,就会开辟一个独立的空间(栈空间)
- 当方法执行完毕,或执行到return语句时就会返回
- 返回到调用方法的地方
- 返回后,继续执行方法后面的代码
- 当main方法(栈)执行完毕,整个程序退出
示意图看P204
提高代码复用性
例如 遍历二维数组
class Tools{
//接收二维数组
public void printArr (int[][] map){
//遍历输出
System.out.println("=========");
for(int i=0;i
for(int j=0;j
方法的定义
public 返回数据类型 方法名(形参列表..){//方法体
语句;
return 返回值;
}
- 形参列表:表示成员方法输入leijia(int n)
- 返回数据类型:表示成员方法输出的类型,void 表示没有返回值
- 方法主体:实现某一功能代码块
- return不是必须的
访问修饰符 如不写则为默认访问
返回数据类型
- 一个方法最多有一个返回值[思考,如何返回多个结果] (返回数组)
- 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
- 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return值;而且要求返回值类型必须和return的值类型一致或兼容(低精度变为高精度为兼容,反之则不行)
- 如果方法是void,则方法体中可以没有return语句,或者只写 return;
方法名
遵循驼峰命名法,最好见名知义,表达出该功能的意思即可,比如得到两个数的和getSum,开发中按照规范
class Tools{
public int[] getsumandsub (int n1,int n2){//一个方法最多有一个返回值[思考,如何返回多个结果] (返回数组)
int[] resarr=new int[2];
resarr[0]=n1+n2;
resarr[1]=n1-n2;
return resarr;
}
}
public class ss{
public static void main(String[] args){
Tools a=new Tools();
int[] res= a.getsumandsub(1,4);
System.out.println("和="+res[0]);
System.out.println("差="+res[1]);
}
}
//返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
注意事项和使用细节
形参列表
- 一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开,比如getSum(int n1,int n2)
- 参数类型可以为任意类型,包含基本类型或引用类型,比如printArr(int[][] map)
- 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数!【getSum】
- 方法定义时的参数称为形式参数,简称形参;方法调用时的传入参数称为实际参数,简称实参,实参和形参的类型要一致或兼容、个数、顺序必须一致!
方法体
里面写完成功能的具体的语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法!即:方法不能嵌套定义。
方法调用细节说明
- 同一个类中的方法调用:直接调用即可。比如print(参数);
案例演示:A类 sayOk调用print()
public class ss{
public static void main(string[] args) {
A a = new A();
a.sayok();
}
}
class A {
//同一个类中的方法调用︰直接调用即可
public void print(int n) {
system.out.print1n( "print()方法被调用n=" +n);
}
public void sayOK( ){ //sayok调用print(直接调用即可)
print(10);
system.out- println("继续执行sayOK()~~~");
}
}
- 跨类中的方法A类调用B类方法:需要通过对象名调用。比如对象名.方法名(参数);案例演示:B类sayHello 调用print()
//跨类中的方法A类调用B类方法︰需要通过对象名调用
public void m1(){
//创建B对象,然后在调用方法即可
system.out.print1n( "m1()方法被调用");
B b = new B();
b.hi();
system.out.print1n( "m1()继续执行:");
}
}
class B {
public void hi() {
system.out.println( "B类中的hi()被执行");
}
}
- 特别说明一下:跨类的方法调用和方法的访问修饰符相关
parameter–参数
基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参!
引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参!
判断奇偶数
class Tools{
public boolean isodd(int n) {
return n%2!=0;
}
}
public class ss{
public static void main(String[] args){
Tools n=new Tools();
if(n.isodd(2)){
System.out.println("是奇数");}
else {System.out.println("是偶数");
}
}
}
行4 列4 字符#
效果
#### #### ####
class Tools{
public void print(int row,int col,char c) {
for(int i=0;i
for(int j=0;j
System.out.print(c);//输出每一行
}
System.out.println();//换行
}
}
}
public class ss{
public static void main(String[] args){
Tools n=new Tools();
n.print(4, 4,'#');
}
}


![[JAVA]方法 [JAVA]方法](http://www.mshxw.com/aiimages/31/872265.png)
