一、
JDK(Java Development Kit) — Java开发工具包 — JRE+开发工具
开发java程序最小的环境为JDK,所以JDK是JAVA语言的核心
JRE(Java Runtime Environment) — Java运行时环境 — JVM+运行java程序所必需的环境
运行java程序最小的环境为JRE
JVM(Java Virtual Machine)—负责加载.class并运行.class文件
JVM(JAVA虚拟机)将JAVA代码转换为对应的操作系统可以理解的指令,不同的操作系统有不同虚拟机与之对应,同一段代码交给虚拟机之后,虚拟机再转化给操作系统
二、循环使用时机
- for:知道循环次数
- while/do while:当循环次数不确定时
- while:先判断,不符合规则,不执行代码
- do while:代码最少被执行一次,再去判断,符合规则,再次执行代码
三、1.局部变量
位置:定义在方法里或者局部代码块中
注意:必须手动初始化来分配内存.如:int i = 5;或者int i; i = 5;
作用域:也就是方法里或者局部代码块中,方法运行完内存就释放了
2.成员变量
位置:定义在类里方法外
注意:不用初始化,也会自动被初始化成默认值
作用域:整个类中,类消失了,变量才会释放
四 、(一)、方法
1.方法:被命名的代码块,方法可以含参数可以不含参数,可以提高代码的复用性
2.结构 由 修饰符-----返回值类型-----方法名------参数列表------方法体组成
3.方法的重载:是指在一个类中定义多个同名的方法,但是每个方法的参数列表不同(也就是指参数的个数和类型不同),程序在调用方法时,可以通过传递给他们的不同个数和类型的参数来决定具体调用哪个方法.
(二)、构造方法
是一种特殊的方法,它是一个与类同名且没有返回值类型的方法
构造方法的主要功能就是完成对象创建或者初始化
当类创建对象(实例化)时,就会自动调用构造方法
构造方法与普通方法一样也可以重载
- 特点:方法名与类名相同,且没有返回值类型
- 执行时机:创建对象时立即执行
- 默认会创建无参构造,但是,如果自定义了含参构造,默认的无参构造会被覆盖
五、数组
数组Array,标志是[ ] ,用于储存多个相同类型数据的集合
想要获取数组中的元素值,可以通过脚标(下标)来获取
数组下标是从0开始的,下标的最大值是数组的长度减1
六、面向对象
(一)、理解:生活中处处皆对象,我、你、他、电脑、汽车、方向盘、鲜花等等。
(二)、三大特征
- 封装: 把相关的数据封装成一个“类”组件
- 继承: 是子类自动共享父类属性和方法,这是类之间的一种关系
- 多态: 增强软件的灵活性和重用性
(三)、封装:封装是隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式,比如类和方法
好处:
- 提高安全性
- 提高重用性
封装:用private修饰 可以封装属性与封装方法
封装属性:private封装后用set,get方法来 设置与控制值
private封装方法后用,把封装方法调在成员方法,调用成员方法即可使用
(四)、继承
1.继承:是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并扩展新的能力
新类的定义可以增加新的数据或者新的功能,也可以使用父类的功能,但不能选择性的继承父类(超类/基类)
这种继承使得复用以前的代码非常容易,能够大大的缩短开发的周期,降低开发费用.
2.特点
使用extends关键字来表示继承关系
相当于子类把父类的功能复制了一份
Java只支持单继承
继承可以传递
父类的私有成员也会被继承,但由于是私有的不可见,所以子类不能使用父类的私有资源
继承多用于功能的修改,子类可以在拥有父类功能的同时,进行功能拓展
3.重写
继承以后,子类就拥有了父类的功能
在子类中,可以添加子类特有的功能,也可以修改父类的原有功能
子类中方法的签名与父类完全一样时,会发生覆盖/复写的现象
注意: 父类的私有方法不能被重写
重写的要求:两同两小一大
两同:方法名 参数列表 要完全一致
两小:子类返回值类型小于等于父类的返回值类型(注意此处说的是继承关系,不是值大小)
子类抛出异常小于等于父类方法抛出异常
一大:子类方法的修饰符权限要大于等于父类被重写方法的修饰符权限
4.super
可以通过这个关键字使用父类的内容,Super代表的是父类的一个引用对象
注意:在构造方法里,出现的调用位置必须是第一行
(五)、多态
多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。
- 多态的前提:继承、方法的重写
- 父类引用指向子类对象 结构 : 父类方法名 变量 = new 子类方法名();
- 多态中,编译看左边,运行看右边
(六)抽象类
Java中可以定义被abstract关键字修饰的方法,这种方法只有声明,没有方法体,叫做抽象方法.
Java中可以定义被abstract关键字修饰的类,被abstract关键字修饰的类叫做抽象类
abstract 可以修饰方法或者类
被abstarct修饰的类叫做抽象类,被abstract修饰的方法叫做抽象方法
抽象类中可以没有抽象方法
如果类中有抽象方法,那么该类必须定义为一个抽象类
子类继承了抽象类以后,要么还是一个抽象类,要么就把父类的所有抽象方法都重写
多用于多态中
抽象类不可以被实例化
******定义抽象类之后需要创建子类实现重写抽象方法才能实现抽象类的方法
(七)接口
与之前学习过的抽象类一样,接口( Interface )在Java中也是一种抽象类型,接口中的内容是抽象形成的需要实现的功能,接口更像是一种规则和一套标准.
通过interface关键字来定义接口
通过implements让子类来实现接口
接口中的方法全部都是抽象方法(JAVA8)
可以把接口理解成一个特殊的抽象类(但接口不是类!!!)
类描述的是一类事物的属性和方法,接口则是包含实现类要实现的方法
接口突破了java单继承的局限性
接口和类之间可以多实现,接口与接口之间可以多继承
接口是对外暴露的规则,是一套开发规范
接口提高了程序的功能拓展,降低了耦合性
七、权限修饰符
八、代码块
(一)、成员代码块
位置: 在类的内部,在方法的外部 ------ 类里方法外
作用: 用于抽取构造方法中的共性代码
执行时机: 每次调用构造方法前都会调用构造代码块
注意事项: 构造代码块优先于构造方法加载
(二)、局部代码块
位置: 在方法里面的代码块 ----- 方法里
作用: 通常用于控制变量的作用范围,出了花括号就失效
注意事项: 变量的作用范围越小越好,成员变量会存在线程安全的问题
(三)静态代码块:在类加载时就加载,并且只被加载一次,一般用于项目的初始化
(四)构造代码块:在创建对象时会自动调用,每次创建对象都会被调用,提取构造共性
执行顺序:静态代码块 --> 构造代码块 --> 构造方法 --> 局部代码块
九、
(一)、this与super的区别
1. This代表本类对象的引用
super代表父类对象的引用
2. this可以在两个变量名相同时,用于区分成员变量和局部变量
this 可以在本类的构造方法之间调用,位置必须是第一条语句,注意,不能相互调用,会死循环
3. super是建立了继承关系以后,子类如果想用父类的功能,可以通过super调用
如果重写后还想用父类的功能,需要使用super来调用
super在调用父类构造方法时,必须出现在子类构造方法的第一条语句,而且如果父类中没有提供无参构造,子类可以通过super来调用父类其他的含参构造
(二)、 重载Overload 与重写Override的区别
重载: 是指在一个类中的现象,是指一个类中有很多同名的方法,但是方法的参数列表不同
重写: 是指发生了继承关系以后(两个类),子类去修改父类原有的功能
语法规则:子类的方法签名(返回值类型 方法名(参数列表) )与父类一致
重写方法的修饰符: 子类权限 >= 父类的权限
重载的意义: 是为了方便外界对方法进行调用,什么样的参数程序都可以找到对应的方法来执行,体现的是程序的灵活性
重写的意义:是在不修改源码的前提下,进行功能的修改和拓展
十、static
static是java中的一个关键字用于修饰成员变量和成员方法
特点
1.可以修饰成员变量与成员方法
2.随着类的加载而加载,优先于对象加载
3.只加载一次,就会一直存在,不再开辟新空间, 直到类消失才一起消失
4.静态资源也叫做类资源,全局唯一,被全局所有对象共享
5.可以直接被类名调用
6.静态只能调用静态,非静态可以随意调用
7.static不能和this或者super共用,因为有static时可能还没有对象
十一、final
final是java提供的一个关键字表示最终的意思
final可以修饰类,方法,字段(属性)
特点
被final修饰的类,不能被继承
被final修饰的方法,不能被重写
被final修饰的字段是个常量,值不能被修改
常量的定义形式:final 数据类型 常量名 = 值
十二、异常
异常:异常是一些用来封装错误信息的对象
它由异常的类型、提示信息、报错的行号提示三部分组成
当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出
当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常
捕获方式
抛出方式:
对于不想现在处理或者处理不了的异常可以选择向上抛出
方式:在方法上设置异常的抛出管道,即:
在可能会会发生异常的方法上添加代码