*****************************Java 基础************************************
1.java是高级的编译语言,继承了c,c++优点,c的高效性,c++面向对象特性。
2.jvm --> 5部件:字节码指令集,寄存器,stack,heap,方法域
3.五大存储区域:
堆:对象、临时变量
栈:知道生命周期的变量
静态存储区域:静态变量、静态块、静态方法
常量存储区域:常量、final修饰的东西
非RAM存储:硬盘
流存储:管道存储
4.对象:描述一个事物,可以是具体的,可以是抽象的。
5.属性:指的是对象的特点。
6.方法:指的是对象的功能。
7.类:是创建对象的模板。类有普通类、抽象类、内部类、匿名类
8.全局变量:全局范围可以用
9.局部变量:局部范围可以用
10.方法:修饰符+返回值+方法名字+参数列表+方法体
11.方法重载:名字相同,参数列表不同
12.八种基本数据类型:short int long float double char byte boolean
短整型,整型,长整型,单精度,双精度,字符型,字节,布尔
13.程序控制语句:if,if else,for,while,do while;,while do,switch
14.数组:3种定义方法:
String[] str = new String[10];定义不初始化
String[] str = {"dd","ss",aa};定义并初始化
String[] str = new String[]{"dd","ss",aa};定义并初始化
15.二维数组
16.this:指向本类
17.final:定义类这不能被继承,定义方法则不能被重写,定义变量则不能第二次赋值,不能用来修饰构造方法。
18.static:修饰变量、方法。修饰变量时只能修饰全局变量。使得数据等到共享。在同一个里调用静态方法不用实例化对象。调用别的类的静态方法或者变量时需要在静态方法、变量前面加上类的索引,这样jvm才知道加载那个类的静态方法和变量。
原理:在jvm加载类的时候同时加载静态关键字修饰的(方法、变量、块)到内存的静态存储区域。
19.单例模式:当这个对象经常给使用的时候,为了节省资源开销把对象进行共享和控制。
1.私有静态对象变量(共享一个对象)
2.静态的对象类型方法(提供对象的实例)
3.私有化构造器(防止别的类来创建对象)
20.构造器:名字和类名相同,没有返回返回值的方法。用于初始化操作。当一个类不写构造 方法时候,jvm会自动调用本类的无参构造方法,如果写了构造方法则jvm只是调用写的构造方法。
21.jvm加载顺序
1.分配内存空间
2.初始化静态变量
3.加载静态块
4.加载静态方法
5.引用静态变量赋值
6.初始化普通变量
7.构造器
8.加载普通方法
9.引用普通变量赋值
*****************************面向对象************************************
1、封装(不写修饰符就是default权限)
原理:基于操作系统文件目录存储结构。
作用:代码重用、方便管理、更新、维护、拓展、权限控制。
作用:public和default可以修饰类、接口。
作用:这四个修饰符可以修饰全局变量,不可以修饰局部变量(除了default)。
作用:这四个修饰符可以修饰类普通的方法。抽象类的抽象方法
作用:public、protected、default才能修饰抽象方法。因为抽象方法在抽象类里面,被继承了就要重写,而私有不能被访问,所以矛盾,所以private不可以修饰。
作用:public、default才能修饰接口的方法。(规定的)
------------------------------------------------------------------------
作用域 当前类 同一包内 子孙类 其他包
------------------------------------------------------------------------
public √ √ √ √
------------------------------------------------------------------------
protected √ √ √ ×
------------------------------------------------------------------------
default √ √ × ×
------------------------------------------------------------------------
private √ × × ×
------------------------------------------------------------------------
2、继承:是对象之间的层次关系(父类、子类)。需要用到extends关键字。一个类只能有一个父类。
继承的作用:是子类可以直接调用父类的方法,可以重写拓展父类的方法属性。 方法的重写:子类和父类的方法相同(名字、参数列表和返回类型都相同、是否有static修饰也一样)子类的权限不能比父类的小,抛出异常不能比父类大
3、super关键字:是指父类。"super()"语句(即是父类构造函数)必须是子类的构造函数中的第一个执行语句。super可以调用父类的方法和使用父类属性(如super.方法、super.属性)。super()总是引用子类最接近的超类的构造函数。
4、多态:是面向对象的一个特征,可以说是变化多端的。
多态形式1:父类对象指向子类的引用(Father f = new Child()这样是自动向上自动转型的)作用:范围得到拓展。
多态形式2:子类对象指向父类的引用(Child c = (Child)f这样是强制向下转型的,需要知道是子类对象才强制转型,要不然就抛出异常。通常用instanceof判断某对象是否是某对象的实例,如:boolean b = f instanceof Child)
5、abstract:由abstract修饰的 类是抽象类。
抽象类不能实例化,抽象类可以有普通的方法可以有抽象方法。
抽象方法只能存在抽象类里面,一般是私有的。
抽象类的抽象方法必须由子类去重写。
抽象类的普通方法一般认为是共公用的。
6、interface:接口是接口与类不一样。接口里面默认是抽象方法而且只能有抽象方法。
接口作用是:定义规则。让不同厂商去实现它。
接口不能被实例化。接口可以多继承接口,不能继承类。
7、implements:是类用来实现接口的。类可以实现多个接口。实现就是重写接口里面的方法,而且重写后的方法要用public来修饰。(规定的)
8、String池:本身含有了一些字符了。如果没有某字符串,才创建个字符串。这样一来就可以多个变量去引用某个字符串了。
8、“==”:变量是基本类型时候是做算术运算,变量是对象类型时候是比较地址(即是引用变量存放的对象的地址字符串)。
9、throw:表示要抛出异常,有可能抛出的异常。写在方法体里的最后一行。需要捕获。弱没有捕获就要抛出。如果都没有捕获那么最终由jvm捕获。
10、throws:表示往上抛出异常。
11、try catch:可以捕抓异常同时按照我们想要的方法去处理。同时还可以让程序继续运行下去。
12、内部类:就是在一个类里面定义的一个类。而且可以嵌套。内部类是外部类的一个成员,对外部是封闭的。
在外部类调用内部类,必须要先获得内对象。
在内部类可以调用外部类的属性、方法。
一般对于一个方法处理的事情很大的话,可以把该方法要实现的功能用内部类来代替处理。
作用:内部类是的类可以存储更多、更复杂、功能更多。有利于类的拓展、代码重用。还可以实现类的多继承效果。
13、成员内部类:把同一类型的类封装在类里面。
作用:内部类可以直接调用外部类的属性和方法。
作用:外部类可以直接创建内部类。如果不是外部类,需要通过外部类的实例来获得内部类的对象。
14、静态内部类:内部类里面不能有static静态的声明,静态内部类除外。
15、Error和Exception都继承了Throwable。
16、匿名内部类:是继承了指定类型的对象(已经存在的类型)。在一个类的里面运行。
作用:用于某些特殊情况,临时需要。