菜鸟学习Java(2)

Java总结二

方法

方法是什么?

  • 实现一个具体的需要需要一个逻辑过程, 方法就是将这个实现过程做一个整体的封装, 方便以后直接调用

什么时候要用方法?

  • 当你有段代码可能会经常用到, 而你不想重复一直写的时候

方法解决了什么问题?

  • 重复代码
  • 提高了可维护性

Java中怎么定义方法

  • 无参数、无返回值

  • 无参数、有返回值

  • 有参数、无返回值

  • 有参数、有返回值

  • 方法通用定义语法

    • public static 返回值类型 方法名称(参数列表) {

    方法体;
    }

  • 返回值

    • 有返回值

      • 指定类型

        • 八大基本类型
        • 任意的引用类型
    • 没有返回值

      • void
  • 参数

    • 形参

      • 意指 形式参数

        • 为了占位, 表示方法对外声明,我需要什么什么参数
      • 形参 是在方法定义中存在

    • 实参

      • 意指 实际参数

        • 在方法调用时,实际传入进来的,带有真实值的参数
      • 实参 实在方法调用中存在

    • 可变参数

      • 定义的语法

        • 数据类型… 形参名称
      • 需要注意的事项

          1. 一个方法中最多只能出现一个可变参数
          1. 方法中如果有多个参数,可变参数必须放到最后
      • 它的本质是什么?

        • 可变参数底层就是通过数组来实现的

        • 在方法中可以当成数组来使用

        • 在调用的时候非常方便

          • 不传参数
          • 传一个参数
          • 传n个参数
          • 传个数组

方法重载

  • 什么是方法重载

    • if(名字一样 && (形参类型不一样 || 形参个数不一样)) {
      是方法重载
      }
  • 方法重载解决了什么问题?

      1. 可以有效减少方法名的数量
      • 对于方法定义者来说, 不用挠头了
      • 对于方法调用者来说, 不用喝六个核桃(可以少记很多方法)

类和对象

类的概念

  • 具有相同特征和行为的事物的抽象(类就是什么类型)

对象的概念

  • 万物皆对象(事物就是对象)

类的定义

  • 属性

    • 对象具有的各项功能
  • 方法

    • 对象可以执行的操作

对象的使用

  • 对象的创建

    • 类名 对象名 = new 类名();
  • 对象的操作

    • 属性

        • 对象名.属性名 = 值;
        • 数据类型 变量名 = 对象名.属性名;
    • 方法

      • 调用

        • 对象名.方法名();

          • 如果方法有参数,在小括号内写上实参。如果方法有返回值,可以用变量接收返回值。
  • 对象和类的关系

    • 类是对对象的抽象,类用于描述对象,是对象的数据类型,定义有哪些属性、行为。
    • 对象是类的具体体现,是类的实例方法

对象在内存中的存储结构

  • 对象名 -> 栈

  • 对象本身 -> 堆

  • 不同的对象名指向同一个内存空间

    • 任何一个变量都可以修改对象的内容

OOP 和 POP的区别和适用场景

  • 面向过程(POP):以功能为中心
  • 面向对象(OOP):以事物(对象)为中心

面向对象特性

封装

  • 目的

    • 为了将类中的属性保护起来
  • 封装的步骤

      1. 将类中的属性变成私有(private)
      1. 对外提供成对的读写方法(geter/setter)
      • 读方法

        • 非boolean类型

          • get属性名(首字母大写)
        • boolean类型

          • is属性名(首字母大写)
      • 写方法

        • 非boolean类型
        • boolean类型
  • 关键字

    • private

        1. getter、setter封装了实例的私有属性。
        1. 方法封装了功能的实现细节。
        1. 类封装了属性和方法。
    • this

      • this修饰的变量用于指代实例变量。,调用方法的对象
  • 构造方法

    • 构造方法是一种特殊的方法

    • 作用: 用来创建(new)对象

    • 构造方法的定义语法

      • public 类型(参数列表) {

}

  • Java中每一个类都有一个默认的无参构造方法

  • 构造方法重载

  • 构造方法的注意事项

    • 一但定义了构造方法,就会覆盖系统默认添加的公开无参构造方法
  • 构造方法的调用

    • 在new对象时,就会隐式调用构造方法

继承

  • 什么是Java中的继承

    • 继承是描述类A is 类B这么个关系
  • Java中的继承特点

    • 单继承

      • 子类只能继承一个父类
      • 多个子类类可以都继承同一个父类
  • 什么东西可以被子类继承?

    • 实例变量

      • 包括私有实例变量(但是不能访问)
    • 实例方法

      • 包括私有实例方法(也不能调用)
    • 构造方法

      • 父类的构造方法只能在子类的构造方法中调用

        • super()
      • 父类的构造方法不能在子类new对象时直接调用

    • 静态方法

    • 静态属性

  • super

    • super的用途

      • 用于访问父类中的方法和属性
    • super和this的区别

      • this是对象,访问本类中的实例变量、方法
      • super是关键字,访问父类中的实例变量、方法(非私有)
  • 方法重写

    • 什么是方法重写

      • 在继承关系里,父类的实现满足不了子类的需求,子类可以重新实现父类中定义的方法
    • 方法重写的要求

      • 方法重写的两个方法返回值、方法名、参数列表必须完全一致
    • 方法重写和方法重载的区别

      • 方法重载:在同一个类中,如果多个方法具有相同的方法名,但是参数个数或者参数类型不同(或都不同),这称为方法的重载。
      • 方法重写:在继承关系里,父类的实现满足不了子类的需求,子类可以重新实现父类中定义的方法,这是方法重写。

多态

  • 多态的概念

    • 指的是对象的多态性,同一对象在不同时刻表现出来的不同形态。
  • 多态的要求

      1. 必须具体继承或者实现关系
      1. 必须存在方法重写
      1. 让父类引用指向具体的子类对象
  • 多态的访问特点

    • 访问变量

      • 编译时、运行时看左边,
    • 访问方法

      • 编译时看左边,运行时看右边,
  • 使用场景

      1. 方法参数多态化
      1. 数组元素多态化
      1. 方法返回值多态化
  • 多态的优势和缺点

    • 好处:提高了程序的扩展性,容易设计出通用的代码
    • 弊端:屏蔽了子类独有的功能,但可以强转类型

数组

二维数组

  • 格式::数据类型 [] [] 数组名

  • 初始化

    • 动态初始化:数据类型[] [] 数组名 = new 数据类型[第一维元素个数] [第二维元素个数];
    • 静态初始化:数据类型[] [] 数组名 = new 数据类型[] []{ {值1,值2,值3…} ,{值1,值2,值3…} ,…};
  • 二维数组遍历

    for(int i = 0; i < arr.length; i++) {
    for(int j = 0; j < arr[i].length; j++){
    System.out.print(arr[i][j] + " ");}}

    
    

数组的操作

  • 1、数组求值、平均数

  • 2、查找数组元素

  • 3、折半查找

  • 4、数组排序

  • 5、冒泡排序、选择排序

  • 6.打印数组,数组的遍历

    • for(int i =0;i<array.length;i++){ System.out.print(array[i]+" "); };
      

数组的特点

  • 数组中的元素具有相同的数据类型。
  • 数组的容量是确定的。—创建数组的时候确定其容量。

数组的格式

  • 动态初始化格式:
    数据类型[] 变量名 = new 数据类型[数组长度];

  • 静态初始化格式:

    int[] ages = new int[]{3, 4, 4, 3, 2, 4, 3, 4, 3, 3};
    

数组的内存分配

  • 栈区:用于存放局部变量的内存区域。
  • 堆区:存放对象的区域
  • 定义的数组赋值给新数组,两个数组在堆区的存放地址相同

数组注意事项

  • 数组下标越界

    • 下标的值超出了下标的取值范围
  • 空指针异常

    • 数组指向了一个空地址

数组的遍历

  • for(int i = 0; i < arr.length; i++) { 
    System.out.println(arr[i]);}
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值