JavaSE之方法及面向对象

方法及面向对象

一、参数和返回值使用的时机

  • 参数:当想将一个方法中的数据传递到另外一个方法中,那么被调用方法需要定义参数,调用时传递想要传递过去的数据
  • 返回值:调用方法时,想要此方法的结果,去参与其他操作,那么被调用的方法需要将自己的结果返回

二、方法的注意事项

1.方法不调用不执行,main方法是jvm调用的
2.方法之间是平级关系,不能互相嵌套
3.方法的执行顺序只和调用顺序有关
4.[void]不能和[return 结果]共存,但是[void]能和[return]共存
  (1)void:代表方法无返回值
  (2)return 结果:代表有返回值 -> 先将结果返回,然后结束方法
  (3)return:仅仅代表结束方法   
      
5.一个方法中只能有一个返回值,不能连续写多个return
6.调用方法的时候,如果没有此方法会报错  

特殊情况
public static String getMath(int n){
if (n==1){
return “n的值为1”;
}else if (n>1) {
return “n的数值大于1”;
}else {
return “n的数值小于1”;
}
}
使用else if的情况必须要有else 否则虚拟机会认为else if和if两个条件判断都不同过 导致报错提示没有返回值

三、方法调用练习

需求:
键盘录入一个整数,将整数传递到另外一个方法中,在此方法中判断这个整数的奇偶性
如果是偶数,方法返回"偶数" 否则返回"奇数"
方法名:要 参数:要 返回值:要

   public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int n = scanner.nextInt();
        String math = getMath(n);
        System.out.println(math);
    }
    public static String getMath(int n)
    {
        if(n%2==0)
        {
            return "偶数";
        }
        else
        {
            return "奇数";
        }
    } 

需求 : 求出1-100的和,并将结果返回
方法名:要 参数:不要 返回值:要

public static  int getSum(){
        int sum = 0;
        for(int i = 0 ;i<=100;i++){
            sum += i;
        }
        return sum;
    }

需求:
定义一个方法,给这个方法传几,就让这个方法循环打印几次"我是一个有经验的JAVA开发工程师"
方法名:要 参数:要 返回值:不要

public static void print(int n){
        for(int i = 0;i<n;i++){
            System.out.println("我是一个有经验的JAVA开发工程师");
        }
    }

需求:
在main方法中定义一个数组,将数组传递到方法中,在此方法中遍历数组

    public static void printArray(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }

四、方法的重载

1、方法概述

1.概述:
方法名相同,参数列表不同的方法,叫做重载方法
2.什么叫做参数列表不同:
(1)参数个数不同
(2)参数类型不同
(3)参数类型的顺序不同
3.和什么无关:
(1)和返回值无关
(2)和参数名无关

2、代码示例

public class Day06OverLoad {

        public static void main(String[] args) {
            sum(10, 20);
            sum(10, 20, 30);
            sum(10, 20, 30, 40);
        }

        public static void sum(int a, int b) {
            int sum = a + b;
            System.out.println("sum = " + sum);
        }

        public static void sum(int a, int b, int c) {
            int sum = a + b + c;
            System.out.println("sum = " + sum);
        }

        public static void sum(int a, int b, int c, int d) {
            int sum = a + b + c + d;
            System.out.println("sum = " + sum);
        }
}

什么时候定义重载方法:功能一样,但是实现细节不一样

五、面向对象

1、面向对象介绍

1.面向对象是什么:是Java语言的核心编程思想 自己的事情别人(对象)做
2.使用面向对象思想编程:为了让事情变的简单(为了少写代码)
3.什么时候用面向对象思想编程:
在一个类中想使用别的类中实现好的功能时,就需要使用面向对象思想编程
4.怎么使用面向对象思想编程:
(1)new对象,点方法
(2)类名直接点方法名

2、实体类和对象

(1)类的概念

1.java中的类:
a.实体类:描述的万物的分类,比如:人类,动物类,手机类
b.测试类:测试代码是否能跑通的类,就是带main方法的类

2.实体类:一类事物的抽象表示形式
3.实体类中的成员:
属性:这个分类都有啥 即成员变量
(1)定义位置:类中方法外
(2)定义格式:数据类型 变量名
(3)成员变量有默认值:
整数:0
小数:0.0
字符:‘\u0000’
布尔:false
引用:null
(4)作用范围:整个类

行为:这个分类的作用
4.代码示例

public class Day06Class {
    String name;
    String age;

    public void eat(){
        System.out.println("吃饭");
    }

    public void sleep(){
        System.out.println("睡觉");
    }

    public void work(){
        System.out.println("工作");
    }
}
(2)对象

1.对象:一类事物的具体体现
2.使用:
(1)导包: import 包名.类名
如果两个类在同一个包下,想要使用对方的成员无需导包
如果两个类不在同一个包下,想要使用对方的成员需要导包

(2)创建对象:想要使用哪个类中的成员,就new哪个类的对象
类名 对象名 = new 类名()

(3)调用成员(成员变量,成员方法):想要使用哪个类的成员,就用哪个类的对象去点哪个成员
对象名.成员变量名 = 值
对象名.方法名()
3.代码示例:

public class Day06Class_Train {
  
    public static void main(String[] args) {
        Day06Class day06Class = new Day06Class();
        day06Class.name = "张三";
        day06Class.age = "18";
        day06Class.eat();
        day06Class.sleep();
        day06Class.work();
    }
}
(3)匿名对象的使用

1.匿名对象:new对象的时候没有等号左半边部分,只有new的部分
2.使用:
new 类名().成员
3.注意:
如果涉及到为属性赋值,千万不要用匿名对象(匿名对象属于一次性使用的对象)
4.代码示例:

new Day06Class().eat();

六、成员变量和局部变量的区别

1.定义位置不同(掌握)
(1)成员变量:类中方法外
(2)局部变量:方法内部以及参数位置
2.作用范围不同:(掌握)
(1)成员变量:作用于整个类
(2)局部变量:只作用于自己方法内部
3.初始化值不同:(掌握)
(1)成员变量:是有默认值的
(2)局部变量:没有默认值,必须初始化之后才能使用
4.内存位置不同:(了解)
(1)成员变量:在堆中
(2)局部变量:在栈中
5.生命周期不同:(了解)
(1)成员变量:随着对象的创建而创建,随着对象的消失而消失
(2)局部变量:随着方法的调用而创建,随着方法调用完毕而消失
6.代码示例:

public class Person {
    //成员变量
    String name;
    public void eat(){
        int i = 10;//局部变量
        System.out.println(name);
        System.out.println(i);
    }
    public void drink(){
        System.out.println(name);
        //System.out.println(i);
    }
}

七、

1.定义一个类MyData,代表生日,类中定义三个属性,分别为 year month day,并为三个属性赋值
``W`
public class MyData {
String year;
String month;
String day;

public static void main(String[] args) {
    MyData myData = new MyData();
    myData.year = "2020";
    myData.month = "01";
    myData.day = "01";
    System.out.println(myData.year + "-" + myData.month + "-" + myData.day);
}

}

2.定义一个公民类Citizen,类中定义三个属性,分别为cardId(String),name(String),MyData(MyData),并为三个属性赋值

注意:如果属性为自定义的类型,赋值是需要new对象赋值,不然直接调用时会出现空指针异常

public class Citizen {
String cardId;
String name;
MyData myData;

public static  void main(String[] args)
{
    Citizen citizen = new Citizen();
    citizen.cardId = "110101199001011234";
    citizen.name = "张三";
    citizen.myData = new MyData();
    citizen.myData.year = "1990";
    citizen.myData.month = "01";
    citizen.myData.day = "01";
    System.out.println(citizen.cardId);
    System.out.println(citizen.name);
    System.out.println(citizen.myData.year + "-" + citizen.myData.month + "-" + citizen.myData);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值