Java学习笔记3

方法

又可以称为函数/过程

语法

    返回值类型  方法名(参数列表){方法体}

    返回值类型 该方法必须返回一个这个类型的对象

    当一个方法不需要返回值那么返回值类型就定义为void

    null值 void中不能return null

void中return可以直接写表示方法结束

public static int max(int a, int b) {

        int max = a > b ? a : b;

        //return返回数据

        return max;

    }

        //得到最大值

        //调用本类中已经定义好的方法

public static void printMaxA(int a, int b) {

        int result = max(a, b);

        //打印

        System.out.println(result);

    }

    形参:定义方法时,参数列表的参数名

    实参:调用方法时,实际传入的参数

//上代码中

public static void printMaxA(int a, int b) 

此处int a,int b就是形参没有具体数值

        int result = max(a, b)

此处a,b为实参调用时是一定会有具体数值。

重载

    重载:在一个类中,方法名相同,参数列表不同即为重载

    参数列表要素

    1.参数类型不同

public static void max(byte a, byte b) {

    }

    2.参数的个数不同

public static void max(int a, int b, int c) {

    }

    3.参数的顺序不同

public static void max(int a, byte b) {

    }

    public static void max(byte a, int b) {

}

    可变参数,类型后面跟三个点...

    声明 sum(int... a){}

    使用  将可变参数当作数组使用

    注意点:

    1.参数列表一个方法中最多只有一个可变参数

    2.可变参数必须在参数列表的最后一个

    错误示范public static int sum(int a,int... b,int c){}

    3.可变参数数量可变,类型不可变

    4.调用可变参数方法,可用数组代替

    5.可变参数可以不传

递归,方法自身调用用自身

    //最经典阶乘例如 !99    

public static int jieCheng(int num) {

        if (num == 1) {

            return 1;

        }

        return num * jieCheng(num - 1);

    }

    public static void main(String[] args) {

        System.out.println(jieCheng(99));

    }

}

冒泡排序

前后两个相邻元素比较

如果前面的元素大,就交换位置

 数组越界的可能
 

public static void maopaopaixv(int[] arr) {

        for (int j = 0; j < arr.length - 1; j++) {

            for (int i = 0; i < arr.length - 1 - j; i++) {

                //前后两个相邻元素比较

                //如果前面的元素大,就交换位置

                //数组越界的可能

                if (arr[i] > arr[i + 1]) {

                    int temp = arr[i];

                    arr[i] = arr[i + 1];

                    arr[i + 1] = temp;

                }

            }

        }

        System.out.println(Arrays.toString(arr));

    }



    public static void main(String[] args) {

        int[] arr = {7, 4, 89, 2, 6, 123, 8, 796, 56, 11, 1};

        maopaopaixv(arr);

}

    //定义构造方法

    //1.没有返回值类型

    //2.方法名和类名一样

    //3.如果一个类没有定义任意的构造方法,系统会给予一个默认的构造方法。

    //4.类中一旦自定义了任意构造方法,系统给定默认构造方法就消失了。

    Staff() {  

 }

局部变量:在方法体或者代码块中声明的变量

全局变量:在类中定义的变量

在局部变量和全局变量重名的情况下,可以使用this关键字标注全局变量

通过构造方法设置属性
   

 Staff(String name,String code, String sex,double salary) {

        this.name = name;

        this.code = code;

        this.sex = sex;

        this.salary = salary;

    }

   

     String code;

     String sex;

     String name;
 
     double salary;

    //类中的方法可以直接调用本类中的属性    

public void work() {

        System.out.println(name + "正在工作");

    }

调用类实例

public static void main(String[] args) {

        //实例化对象 开辟内存空间

        Staff staff = new Staff();

        //设置对象的属性  类中声明了哪些属性,对象中就有哪些属性

        staff.code="TG000001";

        staff.name= "张三";

        staff.sex= "男";

        staff.salary=15000;





        Staff staffA = new Staff();

        staffA.code="TG000000";

        staffA.name= "李四";

        staffA.sex= "男";

        staffA.salary=10000;



        //调用对象的方法

        staff.work();

        staffA.work();



    }

封装,继承,多态

封装

封装  隐藏类中细节,不能让其他类随意访问

    //通过四个访问权限修饰符来达到封装的效果

    //public         protected               default            private

    //公共的    受保护的(家族性的)    默认(本包下的)  私有的(只能在本类中访问)

继承

//继承    一个类(子类)可以继承另外一个类(父类),子类可以拥有父类中定义好的属性和方法   A(子类) extends B(父类)

    //不是所有的属性和方法都能访问到  只有public protected和本包下的父类default修饰的属性和方法可以访问到

    //1.代码重用

    //2.多态实现的基础

    //注意:

    //1.一个子类只能有一个直接父类

//2.Java支持多重继承 

public static void main(String[] args) {

        BigPlane bp = new BigPlane("1011");

        bp.code = "100001";

        bp.fly();



        Plane p = new BigPlane("1011");

        //调用法看对象

        //调用属性看变量的声明

        p.fly();

    }

}



class Plane {

    public Plane(String code) {

        this.code = code;

    }



    protected String code;//子类以及本包下的类可以访问到

    String color;



    public void fly() {

        System.out.println("看,天上有个大飞机");

    }

}



class BigPlane extends Plane {

    //子类继承父类

    //重写

    //子类对父类中继承过来的方法进行重新定义:方法重写

    //可以使用@Override注解来验证方法是否是重写的方法

    //注意:返回值,方法名,参数列表不能发生变化

    //重写的方法的访问权限只能更开放不能更闭塞





    //子父类间的构造方法

    public BigPlane(String code) {

        //子类的构造方法中首行必须调用父类的构造方法

        //默认调用父类的无参构造方法

        //父类中没有默认的无参构造方法,子类的构造方法中必须明文说明调用父类哪一个构造方法

        //子类构造方法中使用super关键字调用父类的构造方法

        super(code);

    }

    @Override

    public void fly() {

        System.out.println("看,天上有个更大的飞ffff机");

    }

多态

多态:调用方法时可能会出现多种结果

多态分类:

    静态多态:重载造成,在类编译时就可以确定调用的具体是哪一个方法

    动态多态:重写造成,只有在执行到该行代码,才能确定执行的是哪个类中的方法

public static Parent getObj(int a){

        if(a==1){

            return new SonA();

        }else if(a==2){

            return new SonB();

        }else{

            return new Parent();

        }

    }



    public static void main(String[] args) {

        int num = 1;

        Parent p = getObj(num);//p这个变量可能指向任意一个子类的对象

        p.method();

    }

}

class Parent{

    public void method(){

        System.out.println("parent");

    }

}

class SonA extends Parent{

    public void method(){

        System.out.println("SonA");

    }

}

class SonB extends Parent{

    public void method(){

        System.out.println("SonB");

    }

  • 21
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值