数组
-
数组对象本身是在堆中的
-
有序,相同类型数据
数组的使用
Arrays类
-
java.util.Arrays
-
常用
-
fill
-
sort
-
equals
-
binarySearch
-
稀疏数组
-
行号,列号,不同的值
面向对象
Java的核心思想:OOP(Object-Oriented Programming,OOP)
-
分类,一类物具有一些相同的方法或功能
-
以类的方法组织代码,以对象的组织(封装)数据
-
抽象
Java三大特征
-
封装
-
继承
-
多态
方法的调用
-
静态方法(static)
-
可以直接使用类名调用
-
和类一起加载
-
-
非静态方法(无static) 实例化对象才可以调用
类
类是一种抽象的数据类型,不能代表某一个具体事务
对象是抽象概念的具体实例
-
类实例化后会返回一个自己的对象
使用new关键字创建---->分配内存空间 + 默认的初始化 + 类中构造器的调用(构造方法)
构造器
-
一个类即使什么都不写,也会存在一个构造器
-
构造方法与类名相同
-
不能有返回值
-
实例化初始值(this.属性 = 初始值)
-
有参构造和无参构造(一旦定义了有参构造,无参构造就必须显示定义)
-
alt + insert 快速构造(IDEA)
简单的内存分析
封装
高内聚,低耦合
-
对属性私有使用,保证了高内聚
-
提供一些public的 get,set方法获得或设置这些属性值
封装提高了程序的可维护性,也避免了外界直接改变程序关键的数据
方法重载
相同名称,不同参数
继承
对某一批类的抽象,java只有单继承,extends
-
子类是对父类的拓展
-
Ctrl+H可以展示目前该类的父类和子类(IDEA)
-
java中所有的类都默认继承object类
-
私有的东西无法被继承
super
-
super用于调用父类中的构造方法
-
super必须在子类的方法或构造中
-
调用父类的构造器必须在子类构造器的第一行
-
super和this不能同时调用构造方法
方法重写
-
方法名必须相同
-
参数列表必须相同
-
返回类型必须相同
-
非静态方法的调用才可以重写
-
修饰符范围可以扩大 public>Protected>Default>private,但是不能缩小
-
抛出的异常 范围也是可以被缩小,不能被扩大
多态
动态编译(可扩展性)
-
父类型的引用可以指向子类对象(Father f1 = new Son();):
public class Application { public static void main(String[] args) { //一个对象的实际类型是确定的 //可以指向的引用类型就不确定了,父类的引用可以指向子类 Student s1 = new Student(); Person s2 = new Student(); Object s3 = new Student(); //对象能执行那些方法,主要看对象左边的类型,和右边关系不大 //父类型可以指向子类,但是不能调用子类独有的方法 } }
-
多态是方法的多态
-
前提是父类和子类之间的多态
-
方法重写过了才有意义
-
instanceof(类型转换)
静态
静态变量和静态方法
-
静态方法不能调用非静态方法,反之可以
-
静态变量可以用类名直接提取(jvm实现)
静态代码块和匿名代码块
-
匿名代码块
-
不能主动调用
-
-
静态代码块
-
加载即执行(永久只执行一次)
-
加载顺序:静态代码块(只执行一次)-->匿名代码块-->构造方法
静态导入包
抽象类
-
abstract 修饰的类
-
抽象类只能靠子类去实现
-
抽象类里面可以写普通方法(抽象方法必须在抽象类中)
-
抽象的抽象:约束
public abstract class Action { public static void main(String[] args) { } //约束,有人帮我们实现 //抽象方法,只有方法名字,没有实现方法 //抽象类的所有方法,继承了他的子类都必须要实现他的方法,除非子类也是抽象类 //接口可以多继承 public abstract void doSomething(); }
接口
-
接口就是规范,定义的是一组规则
-
接口的本质是契约
-
public interface UserService { public abstract void add(String name); }
-
类可以实现接口
-
实现了接口的类,必须要重写接口中的方法
-
public class UserServiceImpl implements UserService,Timer{ @Override public void add(String name) { } @Override public void Change() { } }
-
-
约束作用
-
定义一些方法,让不同的人实现
-
方法都是public abstract
-
public static final
-
不能被实例化(没有构造方法)
-
可以实现多个接口
内部类
-
外部类
-
内部类
-
静态内部类(无法直接访问非静态的属性)
-
局部内部类
-
匿名内部类
-
一个java类只有一个public class
异常
error 和 Exception
-
error
-
由java虚拟机抛出
-
无内存资源时,OutOfMemoryError,此时JVM选择线程终止
-
-
Exception
-
由程序逻辑错误引起
-
抛出异常和捕获异常
-
异常处理
-
try catch finally
-
throw/throws(在方法中用)
-
-
自定义异常类
-
package com.wang.OOP; public class MyException extends Exception{ private int detail; public MyException(int a){ this.detail = a; } //异常的打印信息 public String toString(){ return "MyException{"+"detail="+detail+'}'; } }