闭关Java第五天
Posted 寇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭关Java第五天相关的知识,希望对你有一定的参考价值。
数组的定义
- 数组是相同类型的有序集合
- 数组描述的是相同类型的若干个数据,按照一定的先后次序组合而成的
- 每一个数据都被称为数据元素,可以通过下标来访问他们
Java内存分析
- 堆:存放new对象和数组,可以被所有的线程共享,不会存放别的对象引用
- 栈: 存放基本变量类型(会包含这个基本类型的具体数值)引用对象的变量(会存放这个引用在堆里面的具体地址)
- 方法区:可以被所有线程共享,包含了所有的class类和static类
数组的初始化
- 静态初始化
- 动态初始化
- 数组的默认初始化
数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中每个元素也被隐式初始化了
数组的四个特点
- 数组一经定义长度就是不可改变的
- 其中的元素必须是相同类型的,不允许出现混合类型
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型
- 数组的变量是引用类型,数组本身就是对象,数组保存在堆中的
数组的边界
- 下标的合法区间为0~length-1,如果越界会报错
二维数组
int a[][]=new int[2][5];
解析:以上的二维数组可以看成二行五列的数组
Arrays类
-
数组的工具类java.util.Arrays
-
由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用
-
查看JDK帮助文档
-
Arrays类中的方法都是static修饰的静态方法,可以直接用类名进行调用
-
具有以下几种常用的功能
- 给数组赋值 通过fill方法
- 给数组排序 通过sort方法,按照升序(从小到大)
- 比较数组:通过equals方法比较数组中元素是否相等。
- 查找数组元素:通过binarySearch方法能对排序好的数组进行二分法查找法操作
冒泡排序
总共有八大排序,冒泡排序无疑是最有名的
我们看到的嵌套循环,应该立马可以算出这个算法的时间复杂度O(n2)
稀疏数组
当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组
-
稀疏数组的处理方式是:
记录数组一共几行几列,有多少个不同值
把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
面向对象&面向过程
- 面向过程思想
步骤清晰,第一步做什么第二步做什么
面对过程适合处理一些简单的问题
- 面向对象思想
物以类聚,分类的思维模式
对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们要使用面对对象的思路来分析整个系统,但是具体到围观操作,仍然需要面对过程的思路去处理
什么是面向对象
-
面向对象编程(oop)
-
面向对象编程的本质是:以类的方式组织代码,以对象的组织数据
-
抽象
三大特征
- 封装
- 继承
- 多态
方法的定义
- 修饰词
- 返回值类型
- 方法名 驼峰原则,见名知意
- break和return的区别
- 参数列表
- 异常抛出
创建与初始化对象
-
使用new关键字创建对象
-
使用new关键字创建的时候,除了会分配内存空间外还会进行默认初始化以及对类中构造器的调用
-
类中的构造器也被称为构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下两种特点
-
- 必须和类的名字相同
- 必须没有返回值类型,也不能写void
- 构造器必须要掌握
构造器的核心作用
- 使用new关键字,本身就是在调用构造器
- 构造器用来初始化值
封装
- 该露的露,该藏的藏,我们程序设计追求的是“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合指的是仅暴露少量的方法给外部使用(类似于电视机)
- 封装(数据的隐藏)
- 属性私有get/set
封装的意义
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 提高系统的可维护性
继承
-
继承的本质是对某一批类的抽象
-
extends的意思是”拓展“。子类是父类的拓展
-
Java中只有单继承,没有多继承,一个儿子只能有一个爸爸
子类继承父类的所有方法!前提是public
优先级:
public >protected >default >private
快捷键:ctrl+h:打开继承表
java中都默认继承Object
super注意点:
- super调用父类的构造方法,必须在构造的方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
Vs this:
代表的对象不同
this:指的是本身调用的对象
super:指的是父类对象的应用
前提:
this:没有继承也可以使用,super就不行
构造方法:
this():本类的构造
super():父类的构造
方法的重写:
静态方法和非静态的方法差距很大
//非静态的才可以重写
重写:需要有继承关系,子类继承父类的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符:范围可以扩大,但是不能缩小
- 抛出的异常:可以被缩小,但不能被扩大
为什么要重写:
- 父类的功能,子类不一定需要,或者不一定满足
- alt +insert : override;
多态
- 动态编译:类型
以上是关于闭关Java第五天的主要内容,如果未能解决你的问题,请参考以下文章