1.封装∶
1)类:封装的是对象的属性和行为
2)方法:封装的是具体的业务逻辑功能实现3)访问控制修饰符:封装的是具体的访问权限
继承:
1)作用:代码复用
2)超类:所有派生类所共有的属性和行为
接口:部分派生类所共有的属性和行为派生类:派生类所特有的属性和行为3)单一继承、多接口实现,具有传递性
多态:
1)行为的多态:所有抽象方法都是多态的对象的多态:所有对象都是多态的
2)向上造型、强制类型转换、instanceof
3)多态的表现形式:
3.1)行为多态,通过方法的重写来实现的 3.2)对象多态,通过向上造型来实现的
堆:
1.1)存储new出来的对象(包括实例变量) 1.2)垃圾:没有任何引用所指向的对象 垃圾回收器(GC)不定时到内存中清扫垃圾,
回收过程是透明的(看不到的),不一定一发现垃圾就立刻回收,通过调用system.gc()建议虚拟机尽快调度GC来回收垃圾
1.3)内存泄漏:不再使用的内存还没有被及时的回收,严重的会导致系统的崩溃
建议:不再使用的内存应及时将引用设置为null
1.4)实例变量的生命周期:
创建对象时存储在堆中,对象被回收时一并被回收
栈:
2.1)存储正在调用方法中的所有局部变量(包括方法的参数)
2.2)调用方法时,会在栈中为该方法分配一块对应的栈帧,栈帧中存储方法中的局部变量(包括方法的参数),方法调用结束时,栈帧自动被清除,局部变量一并被清除
2.3)局部变量的生命周期:
调用方法时存储在栈中,方法调用结束时与栈帧一并被清除
方法区:
3.1)存储.class字节码文件(包括静态变量、方法) 3.2)方法只有一份,通过this来区分具体的调用对象
多态:
1)意义:
1.1)同一类型的引用,指向不同的对象时,有不同的实现---行为的多态:cut(),step(),getImage()...
1.2)同一个对象,被造型为不同的类型时,有不同的功能----对象的多态:我,你,水...
2)向上造型/自动类型转换:
2.1)超类型的引用指向派生类的对象
2.2)能造型成为的数据类型有:超类+所实现的接口2.3)能点出来什么,看引用的类型
3)强制类型转换,成功的条件只有如下两种:
3.1)引用所指向的对象,就是该类型
3.2)引用所指向的对象,实现了该接口或继承了该类
4)强转时若不符合如上条件,则发生ClassCastException类型转换异常建议:强转之前先通过instanceof来判断引用的对象是否是该类型
接口:
1)是一种数据类型(引用类型) implements 实现
2)由interface定义
3)只能包含常量和抽象方法
4)接口不能被实例化
5)接口是需要被实现/继承的,实现/派生类:必须重写接口中的所有抽象方法
6)一个类可以实现多个接口,用逗号分隔若又继承又实现时,应先继承后实现
7)接口可以继承接口
抽象方法:
1)由abstract修饰
2)只有方法的定义,没有具体的实现(连{}都没有)
抽象类:
1)由abstract修饰
2)包含抽象方法的类必须是抽象类 3)抽象类不能被实例化
4)抽象类是需要被继承的,派生类:
4.1)重写所有抽象方法---------变不完整为完整
4.2)也声明为抽象类-----------不常用
抽象类的意义:
封装派生类共有的属性和行为--------代码复用 为所有派生类提供统一的类型--------向上造型
可以包含抽象方法,为所有派生类提供统一的入口(造型之后能点出来)
派生类的具体实现不同,但入口是一致的
static final常量:应用率高
1)必须声明司时初始化
2)由类名点来访问,不能被改变
3)建议:常量名建议所有字母都大写,多个单词用_分隔
4)编译器在编译时将常量直接替换为具体的值,效率高
5)何时用:数据永远不变,并且经常使用
final:
1)修饰变量:变量不能被改变
2)修饰方法:方法不能被重写 3)修饰类:类不能被继承
访问控制修饰符:-
1)public:公开的,任何类
2 )private:私有的,本类
3 )protected :受保护的,本类、派生类、同包类 4)默认的:什么也不写,本类、同包类
重写与重载的区别:
1)重写(override) :
1.1)发生在父子类中,方法名称相同,参数列表相同,方法体不同
1.2)遵循"运行期绑定",看对象的类型来调用方法
2)重载(overload) :
2.1)发生在同一类中,方法名称相同,参数列表不同,方法体不同
2.2)遵循"编译期绑定",看参数/引用的类型来绑定调用方法
继承∶
1)作用:代码复用
2)通过extends来实现继承
3)超类:所有派生类所共有的属性和行为派生类:派生类所特有的属性和行为
4)派生类继承超类后,派生类具有:派生类的+超类的
5)一个超类可以有多个派生类,一个派生类只能有一个超类-------单一继承
6)继承具有传递性I
方法:函数,过程 封装一段特定的业务逻辑功能,尽可能独立,只干一件事。可以反复调用多次,减少代码重复,有益于代码复用
数组:一种数据类型(引用类型) 相同数据类型元素的集合
continue: 跳过循环体中剩余语句,进行下一次循环
break //跳出循环 在某种特定条件下,提前结束循环
while ,do while, for
嵌套循环
switch...case
if语句
算数运算符 +,- ,* , / ,%,++,--
% :取模/取余 余数为0即为整除
++ 自增1 -- 自减1 单独使用在前在后都一样
关系运算符 >,<, >= , <= ,== , != 结果为boolean true false
扩展赋值自带强转
基本数据类型: byte, short,int,long,float,double,boolean,char
int 整型 4字节 32位 -21个多亿 到21个多亿
整数直接量默认为int类型,但是不能超范围,超出取值范围会报错
两个整数相除,结果还是整数,小数位无条件舍去
整数运算时 若超出范围测发生溢出(溢出不是错误,但是需要避免)
long 长整型 8字节
长整型变量在数字后加L或l 运算时可能溢出 在第一个数字后加L
double 浮点型 8字节
浮点型直接量默认double类型,使用float 在后面加F或f
double 或float 类型参与运算 时 会产生计算误差
boolean 布尔型 true false 1字节
char 字符型 2字节
采用Unicode 字符集编码格式,一个字符对应一个码
表现形式是字符char 但本质上是int (0-65535)
字符型直接量必须放在单引号中,并且只能由一个
特殊符号需要 \ 来转义
Unicode 统一码 定长(16位)字符集
数据类型转换:
数据类型从小到大
byte--》short --》 int --》long --》float --》double
char--》
两种方式: 自动、隐式类型转换:小类型到大类型
强制类型转换:大类型到小类型 强转可能发生溢出,强转可能丢失精度
两点规则: 整数直接量可以直接赋值给byte short char 但不能超出其范围
byte short char 参与运算时 先将其自动转换为int 在进行运算
1G=1024 兆 1M=1024(千字节) 1kb=1024字节 1B=8bit(位)
1G=1024*1024*1024 字节---1073741824字节
变量: 声明,初始化,使用,
命名:只能包含字母数字,_和$ 不能以数字开头 严格区分大小写,不能使用关键字
允许中文命名,但不建议,建议英文的见名知意,驼峰命名法
JVM:JAVA虚拟机 加载.class文件 并运行.class
JRE:java 运行环境 除了包含JVM 外还包含运行java程序所必需的环境 JRE=JVM+java系统类库(小零件)
JDK: java开发工具包,除了包含JRE以外包含开发java程序所必须的命令工具
JDK=JRE+编译,运行等命令工具
运行Java程序的最小环境 JRE
开发Java程序的最小环境 JDK