Java学习笔记(三)--方法重载 数组 匿名对象

Java中方法的介绍

1.方法:就是完成特定功能的代码块。
2.格式:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
            方法体;
            return 返回值;
        }

-修饰符:目前就写public static
-返回值类型:用于限定返回值的数据类型
-方法名:方便我们调用方法
-参数类型:
–形式参数 接收实际参数的变量(定义时候的)
–实际参数 实际参与运算的变量(调用时候的)
-方法体:完成功能的代码。
-返回值:就是功能的返回结果。
-return 返回值:结束方法,把返回值带给调用者。
3.书写方法时做到两个明确:
-参数 参数的个数,以及类型
-返回值 有无返回值,以及结果的数据类型

4.方法的注意事项:
-方法不调用不执行
-:方法与方法是平级关系,不能嵌套定义
-方法定义的时候参数之间用逗号隔开
-方法调用的时候不用在传递数据类型
-如果方法有明确的返回值,一定要有return带回一个值

需求:写一个功能实现返回两个数的较大值。

public static int getMax(int a,int b){
    int c = (a>b)?a:b;
    return c;
}

需求:输出i行j列的星形。

public static void printStar(int row,int col){
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

方法重载

1.方法重载:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
2.方法重载特点
-与返回值类型无关,只看方法名和参数列表
-在调用时,虚拟机通过参数列表的不同来区分同名方法

需求:比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型。

public class FunctionOverload2 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(isEquals(a, b));

    }

    public static boolean isEquals(byte a,byte b){
        System.out.println("比较两个byte类型的数据是否相等");
        return a==b;
    }

    public static boolean isEquals(short a,short b){
        System.out.println("比较两个short类型的数据是否相等");
        return a==b;
    }


    public static boolean isEquals(int a,int b){
        System.out.println("比较两个int类型的数据是否相等");
        return a==b;
    }

    public static boolean isEquals(long a,long b){
        System.out.println("比较两个long类型的数据是否相等");
        return a==b;
    }


}

数组

1.数组:数组是存储同一种数据类型多个元素的集合
注意:数组既可以存储基本数据类型,也可以存储引用数据类型
2.数组的定义格式
-数据类型[] 数组名;
int[] arr;
-数据类型 数组名[];
int arr[];
3.数组初始化:
-动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
初始化时只指定数组长度,由系统为数组分配初始值。
格式:

数据类型[] 数组名 = new 数据类型[数组长度];

-:静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};

简化格式:

数据类型[] 数组名 = {元素1,元素2,…};

4.数组内存图
Java学习笔记(三)--方法重载 数组 匿名对象_第1张图片
5.数组操作常见的两个小问题
-ArrayIndexOutOfBoundsException:数组索引越界异常
–产生:你访问了不存在的索引。
–解决:修改你的访问索引。
-NullPointerException:空指针异常
–产生:引用已经不再指向堆内存
–解决:一般来说,只要是引用类型的变量,我们在使用前,都要先判断是否为null。
如果不为null,才继续使用。
需求:数组遍历:依次输出数组中的每一个元素。

    for(int x=0; x<数组名.length; x++) {
            System.out.println(数组名[x]);
        }

类与对象

1.类:是一组相关的属性和行为的抽象
2.对象:是该类事物的具体体现

        例如:
            对象:张三
            类:学生

3.类的组成:
-成员变量 类中方法外的变量
-成员方法 没有static修饰的方法
需求:编写一个学生类。

public class Student {

    //成员变量
    String name;
    int age;

    //成员方法
    public void sleep(){
        System.out.println("学生需要睡觉");
    }

    public void study(){
        System.out.println("学生需要学习");
    }
}

需求:编写一个手机类。

public class Phone{
        String brand;
        int price;
        public void call(){
            System.out.println("手机可以打电话");
        }
        public void sendMessage(){
            System.out.println("手机可以发短信");
        }
    }

4.类的使用:使用一个类,其实是使用该类的成员(变量和方法)。
我们要想想用一个类的成员,就必须创建该类的对象。
格式:

类名 对象名 = new 类名();

5.对象的使用:

        成员变量:
            对象名.变量;
        成员方法:
            对象名.方法名(...);

需求:写出手机类的测试类。

public class PhoneTest {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.brand = "vivo";
        p.price = 2000;
        p.color = "white";
        System.out.println(p.brand);
        System.out.println(p.price);

        //调用成员方法
        p.call();
        p.playGame();

    }
}

//定义一个手机类
class Phone{
        String brand;
        int price;
        String color;
        public void call(){
            System.out.println("手机可以打电话");
        }
        public void sendMessage(){
            System.out.println("手机可以发短信");
        }
    }


创建一个手机对象内存图:
Java学习笔记(三)--方法重载 数组 匿名对象_第2张图片


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

1.在类中的位置不同

        成员变量    类中方法外
        局部变量    方法内或者方法声明上

2.在内存中的位置不同

        成员变量    堆内存
        局部变量    栈内存     

3.生命周期不同

        成员变量    随着对象的存在而存在,随着对象的消失而消失
        局部变量    随着方法的调用而存在,随着方法的调用完毕而消失

4.:初始化值

        成员变量    有默认初始化值
        局部变量    没有默认初始化值

形式参数

数据类型:
-基本类型:4类8种。
基本类型实际参数传递的时候传递的是这个基本类型的具体的值。
-引用类型:类,接口,数组
引用类型进行参数传递的时候,传递的是该引用类型的实例对象说白了就是这个对象的地址值。


匿名对象

1.匿名对象:就是没有名字的对象,是对象一种简写形式。
2.应用场景:
-调用方法(对象调用方法仅仅一次的时候)
-作为实际参数传递

package com.edu_01;

class Student{
    public void show(){
        System.out.println("student的show方法");
    }
}

class StudentDemo{
    public void method(Student s){
    //需要的实际参数一定是Student类的对象的的地址值
        s.show();
    }
}

public class StudentTest {
    public static void main(String[] args) {
/*      //现在需要调用StudentDemo中的method()方法
        StudentDemo sd = new StudentDemo();
        //需要的实际参数一定是Student类的对象的的地址值
        Student s = new Student();
        sd.method(s);*/

        //想调用我现在需要调用StudentDemo中的method()方法
        //使用匿名对象调用方法,并传递参数
        new StudentDemo().method(new Student());    
    }

}

你可能感兴趣的:(JavaSE)