Java学习 --- 成员方法

目录

一、成员方法

二、方法调用机制

 三、方法的妙用

四、方法注意事项

4.1、访问修饰符(控制方法使用范围)

4.2、返回数据类型

4.3、方法名

4.4、形参列表

4.5、方法体

4.6、方法的调用

五、成员方法传参机制

5.1、基本数据类型传参

5.2、引用类型传参

 六、方法练习


一、成员方法

访问修饰符  返回数据类型 方法名(形参列表){

          语句;

          return 返回值;

}

1、参数列表:表示成员方法输入

2、返回数据类型:表示成员方法输出,void:表示没有返回值

3、方法主体:表示为了实现某一功能代码块

4、return 语句不是必须的,有的方法不一定有返回值

参考示例代码:

public class Method1 {
    public static void main(String[] args) {
         //使用方法
        /**
         * 1、当类里的方法写好后,不去调用是没有效果的
         * 2、调用方法前需要先创建对象,再调用方法
         */
        Person person = new Person();
        person.speak(); //调用方法
        person.count();
        person.count1(100); //调用方法同时将 n = 100
        int i = person.count2(10, 20);
        System.out.println(i);
    }
}
class Person{
    String name;
    int age;
    //方法(成员方法)
    //public:表示方法公开
    //void:表示没有返回值
    //speak:表示方法名
    //():表示形参列表
    //{}:方法体,要执行的代码
    //System.out.println("这是一个人");:该方法输出的内容
    public void speak(){
        System.out.println("这是一个人");
    }
    //计算1到1000的值
    public void count(){
        int num = 0;
        for (int i = 1; i <= 1000 ; i++) {
            num += i;
        }
        System.out.println("num = " + num);
    }
    //(int n):当前有一个形参
    public void count1(int n){
        int num = 0;
        for (int i = 1; i <= n ; i++) {
            num += i;
        }
        System.out.println("num = " + num);
    }

    /**
     * 1、int:表示方法执行后,返回一个int值
     * 2、return res;:表示把res的值返回
     */
    public int count2(int num1,int num2){
        int res = num1 + num2;
        return res;
    }
}

二、方法调用机制

 三、方法的妙用

不使用方法遍历三次数组:

public class Method2 {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {1,3,4,6};
        for (int i = 0; i <arr.length ; i++) {
            System.out.println("arr[i] = " + arr[i]);
        }
        System.out.println("--------------");
        for (int i = 0; i <arr.length ; i++) {
            System.out.println("arr[i] = " + arr[i]);
        }
        System.out.println("--------------");
        for (int i = 0; i <arr.length ; i++) {
            System.out.println("arr[i] = " + arr[i]);
        }
    }
}

代码冗余,可读性差,维护麻烦。

使用方法来进行遍历:

public class Method2 {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = {1,3,4,6};
        MyTools myTools = new MyTools();
        for (int i = 0; i < 3 ; i++) {
            System.out.println("-------");
            myTools.printArr(arr);//使用方法遍历三次
        }
    }
}
class MyTools{
    public void printArr(int[] arr){
        for (int i = 0; i <arr.length ; i++) {
            System.out.println("arr[i] = " + arr[i]);
        }
    }
}

1、提高了代码的复用性

2、将实现的细节封装起来,供其他用户调用就行。

四、方法注意事项

4.1、访问修饰符控制方法使用范围)

当不写访问修饰符时使用默认修饰符,主要有四种(public,protected,默认,private)

4.2、返回数据类型

1、一个方法最多有一个返回值,当要返回多个结果,使用数组。

2、返回类型可以为任意类型,包括基本类型或引用类型(数组,对象)

示例代码:

public class Method3 {
    public static void main(String[] args) {
        AA aa = new AA();
        int[] arr = aa.getArr(2, 3);
        System.out.println("两数之和:" +arr[0]);
        System.out.println("两数之差:" +arr[1]);
    }
}
class AA{
    public int[] getArr(int num1,int num2){
        //创建数组
        int[] arr = new int[2];
        arr[0] = num1 + num2;
        arr[1] = num1 - num2;
        return arr;
    }
}

3、方法要求有返回数据类型,方法体中最后的执行语句必须为return值,并且要求返回值类型必须和return的值类型一致或兼容。

示例代码:

 public double a(){
        int a = 1;
        return a; //这里会进行自动类型转换
    }

4、方法是void,方法体中可以没有return语句 或者 只写return。

示例代码:

public void b(){
        return; //这里不能返回数据类型
    }

4.3、方法名

1、遵循驼峰命名法,最好见名知意。

4.4、形参列表

1、一个方法可以有零个参数,也可以有多个参数,中间用逗号隔开。

2、参数类型可以是任意类型,包含基本类型或引用类型。

3、调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数。

4、方法定义时的参数为形式参数又称形参,方法调用时传入的参数又称实际参数又称实参,实参和形参的类型要一致或兼容即个数、顺序必须一致。

4.5、方法体

完成功能的具体语句,可以是输入、输出、变量、运算、分支、循环、方法调用,但不允许方法里面再定义方法。

示例代码:

public void c(){
        public void d(){ //编译就报错
            
        }
    }

4.6、方法的调用

1、同一个类中的方法调用,直接调用就行。

示例代码:

public class Method4 {
    public static void main(String[] args) {
        A a = new A();
        a.a2();
    }
}
class A{
    public void a1(){
        System.out.println("a1方法被调用");
    }
    public void a2(){
        //在本类中直接调用
        a1();
        System.out.println("a2方法执行");
    }
}

2、跨类中的方法A类调用B类的方法,需要通过对象名调用。

示例代码:

public class Method4 {
    public static void main(String[] args) {
        B b = new B();
        b.b1();

    }
}
class A{
    public void a1(){
        System.out.println("a1方法被调用");
    }
}
class B{
    public void b1(){
        //先创建B对象,再调用方法
        A a = new A();
        a.a1();
        System.out.println("b1方法调用");
    }
}

五、成员方法传参机制

5.1、基本数据类型传参

基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参。

示例代码:

public class Method7 {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        EE ee = new EE();
        ee.swap(a,b);
        System.out.println("main方法中的值a=\t" + a + "b=\t" + b);//a=1,b=2
    }
}
class EE{
    public void swap(int a,int b){
        System.out.println("a和b交换前的值a=\t"+ a +"b=\t" + b);//a=1,b=2
        //完成a和b的值交换
        int tmp =a;
        a = b;
        b = tmp;
        System.out.println("a和b交换后的值a=\t"+ a +"b=\t" + b);//a=2,b=1
    }
}

5.2、引用类型传参

 引用数据类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参。

示例代码:

public class Method8 {
    public static void main(String[] args) {
        Persons persons = new Persons();
        persons.name = "tom";
        persons.age = 45;
        UpdatePerson updatePerson = new UpdatePerson();
        updatePerson.Update(persons);
        System.out.println("main方法中的年龄为:" + persons.age);
    }
}
class Persons{
    String name;
    int age;
}
class UpdatePerson{
    public void Update(Persons persons){
        persons.age = 100;//修改对象属性
    }
}

 六、方法练习

6.1、编写一个类,有一个方法判断一个数是奇数还是偶数,返回Boolean。

示例代码:

public class Method5 {
    public static void main(String[] args) {
        CC cc = new CC();
        boolean oud = cc.isOud(5);
        if (oud == true){
        System.out.println("这是一个奇数");
    }else {
        System.out.println("这是一个偶数");
    }
}
}
class CC{
    public boolean isOud(int num){
//        if (num % 2 != 0){
//            return true;
//        } else {
//            return false;
//        }
        //使用三元运算符
        //return num % 2 != 0 ? true : false;
        return num % 2 != 0;
    }
}

6.2、根据行、列、字符打印对应行数和列数的字符。

示例代码:

public class Method6 {
    public static void main(String[] args) {
        DD dd = new DD();
        dd.printChar(4,4,'#');
    }
}
class DD{
    public void printChar(int num1,int num2,char c){
        for (int i = 1; i <=num1 ; i++) {
            for (int j = 1; j <=num2 ; j++) {
                System.out.print(c);
            }
            System.out.println();
        }
    }
}

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭鸭老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值