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

来源:互联网 发布:剑灵saber捏脸数据 编辑:程序博客网 时间:2024/05/17 01:46

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.数组内存图
数组内存图
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("手机可以发短信");        }    }

创建一个手机对象内存图:
手机对象内存图


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

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());        }}
0 0
原创粉丝点击