JDK的安装
1:下载,安装
2 :配置环境变量
a) path: ,;%Java_HOME%bin;
b)JAVA_HOME: JDK安装目录
c)classpath
3:JDK和JRE和JVM
JDK:JAVA开发工具包
JRE:运行环境
JVM:虚拟机
1:编译 :把java源文件编译成class字节码文件
2:运行java:运行calss文件。
标识符:给我们的类方法 变量起名 ;
1:以字母(采用Unicode字符集),下划线,¥开头;
2:其余部分可以使:字母(数字等,下划线)
3: 不能为关键字
变量:内存里内存块
1:局部变量
定义在方法内,或语句块内。
使用之前必须初始化!
2:成员变量(实例变量 field)定义在类里面 ,方法外面。从属于对象!
如果我们没有手动初始化成员变量,系统会自动初始化。初始化规则如下:
数字:0.0.0 布尔:false char:/0000 引用类型:null
3:静态变量(类变量)
定义在类里面 ,方法外面,使用static修饰。从属于类!
系统自动初始化
基本数据类型:
1:基本数据类型:
a)数字:
整数:byte (一个字节)short(两个字节) int(四个字节) long(8个字节)
浮点数:float (四个字节) double(8个字节 默认);
b)字符:char(2个字节 )
c)布尔:boolean(一位)
2:引用类型
a)数组
b)普通对象
c)接口不能new
3:表达式:
a)类型的自动提升:如果有long,结果就是long, 如果有double 结果就是double。
运算符:1:算术运算符
2:关系运算符 1 3:逻辑运算符
&& ||
4:控制语句
1:顺序结构
2:选择结构
a) if
b) if else
c) if else if .....
d)switch 多值选择 表达式:int 或 char short byte 枚举
3:循环结构
a)while 先判断后执行
b)for
c)do while 限制性后判断
break 强制终止整个循环
continue:结束本次循环,继续下一次!
5:面向对象基础:
1:对象的进化史
a) 基本数据类型阶段 数据少 无数据管理时代
b)数组 数据多了 ,将同类型的数据放到一起 弱管理
c) 结构体 数据多了 复杂了 将不同的类型数据放到一起 强管理
d) 对象 数据多了 类型复杂了 行为复杂了。将不通过类型的数据放到一起 超强管理时代
2:对象和类:
对象是具体的,类是抽象的。类也是一个模板,通过类的模板我们也可以new对象
定义类:public class (类名){
//属性
private 数据类型 属性名;//增加相应地getter、setter方法
//方法
//构造方法(构造器)
构造方法:
1:方法名必须跟类名保持一致
2:无返回类型
3:通过new来调用
4:无参构造器
a)如果我们没有手动定义构造器,系统会自动为我们添加一个无参构造器
b)如果我们自己定义了构造器,系统就不会为我们添加无参构造器
5:构造方法的第一句总是:super,即直接调用父类的构造方法
a)有继承关系的构造方法调用的顺序
6:方法的重载(Overload):
两同(同一个类,同一个方法名)三不同(参数列表不同,类型,个数,顺序)
形参名称不同构成重载吗?no
返回值类型不同构成重载吗?no
this:
普通方法中:调用本方法的对象
构造器方法中:正要初始化的对象
还可以用来调用其他的构造方法
static:用它修饰的变量和方法,就变成了静态变量和静态方法。从属于类,通过类名即可调用。实际储存于方法中
package:必须位于第一句。
包名: 域名倒着写
import:引入外部的类
statc import :导入类的静态属性
final:修饰变量:常量 命名规范:全部大写 多个单词之间通过下划线隔开
修饰方法:不能被继承
修饰类: 不能被继
}
面向对象三大特征:
封装:
通过 private default protected public 关键字实现属性或方法的封装,“高内聚, 低耦合”
继承:
通过:extends 两个好处:
1)代码重用
2) 通过继承实现对现实世界更加准确的建模
多态(polymorphism):
三个必要条件:继承 方法的重写 父类的引用只想子类对象。
类只有单继承
方法的重写Override:
=: 方法名保持一致
>=: 子类权限修饰符可以大于等于父类的
<=: 子类的返回值类型小于等于父类的类型。子类声明异常不能超过父类的类型
Object:
1:使我们所有类的根基
2:toString
3:equals、hashcode
4:wait、 notify、 notifyAll;
动态绑定、静态绑定
抽象类 abstract:
1:包含抽象方法的类,一定是抽象类;
2:抽象类不能被new
3:抽象类可以包含:普通方法、成员变量 构造方法
接口:
1:interface
2:类实现接口:implements 可以实现多个接口
3:接口可以多继承
4:接口定义了一组规范:实现现实世界中这样的逻辑:如果你是....必须是....
内存机制:
栈:
1:存放变量
2:不可以多个线程共享
3:空间连续,速度快
堆:
1:存放new出的对象
2:可以被多个线程共享
3:空间不连续 速度慢 但是灵活
方法区:
1:存放类的信息:代码、静态变量、字符串常量
垃圾回收机制(GC Garbage Collection):
1:程序员不能调用垃圾回收器。但是可以通过System.gc()建议回收、
2:finalliza:一般也不用去调用。
递归算法:
1:递归头:什么时候不调用自己
2:递归体:什么时候调用自己
异常机制:
1:try catch finally
2:声明抛出异常:throws
3: 手动抛出异常: throws\
4:自定义异常
a)extends Exception或者其他的子类
数组:
1:长度固定,不可变
2:所有元素的类型一致
3:元素的类型可以为任意元素
4:通过下标来引用相关元素。下标不能超过lenth-1
5:数组也是对象,数组的元素可以看做对象的成员变量,所以,成员变量自动初始化的规则也适用于数组元素。
6:多维数组:数组的元素是数组。
7:数组的三种初始化的方式:
a)动态初始化
b)静态初始化 int【】 a = {2,3,5};
c)默认初始化
8:Arrays类,包含了对输出元素的排序,查找。
9:算法:
a)冒泡排序
b)二分法
容器:
1:Collection
a)List(有序可重复)
ArrayList:底层用数组实现,线程不安全,效率高
Linkedlist:底层用双向链表实现。线程不安全,效率高
Vector:底层用数组实现,线程安全,效率低
b)Set(无序,不可重复) HashSet(内部的使用HasMap实现)
2:Map:
采用“Key-value”来储存我们的数据
a) HashMap线程不安全,效率高
b)HasTtable 线程安全,效率低
3:lterator
通过他,可以实现遍历元素中元素
4:泛型
5:Collection个 工具类
常用类:
1:包装类:
实现了基本数据类型和对象的互相转化,自动装箱,自动拆箱
2:String/StringBuilder/StringBuffer
StringBuilder:可变字符序列,线程不安全
StringBuffer:可变字符序列,线程安全
3:时间:
Date,DateFormat,Calendar
Date:使用毫秒数来表示我们的时间概念
DateFormat:实现Date对象跟String对象的相互转换(跟定指定格式相互转化)
Calender:日期类、实现了将人的日期的概念跟Date的相互转换
4:file
代表文件或者目录的一个抽象
5:Math
数学类
6:枚举
如果我们要定义一族常量,建议使用枚举
不要学习和使用枚举的高级特性
IO流:
1:InputStream
a) FileInputStream
b)ByteArrayInputStream
c)ObjectInputStream
d)DataInputStream
e)BufferedInputStream
2:OutputStream
a)FileoutPutStream
b)ByteArrayOutputStream
c)ObjectOutPutStream
d)DataOutputstream
e)PrinStream
f)BufferedOutPutStream
3:Reader
a)FileReader
b)InputStreamReader:转换流,将字节流转化成字符流
c)BufferedReader
4:Writer
a)File Wirter
b)Output Stream Writer:转化流:将字节流转换成字符流
c)BufferedWriter
多线程:
1:定义多线程类的两种方式
a)ExtendsThread
b)ImplementsRunnalbe
2:线程的状态
a)new
b)就绪状态(调用start方法后)
c)运行状态
d)阻塞状态
i: sleep:不会释放持有的线程锁
ii:join:等待另一个线程执行完成
iii:wait:会释放持有的对象锁
iiiv:synchronized。运行同步代码,但是没有多的指定对象的锁,于是进入指定对象的锁池等待
e)终止:
i:不建议使用,stop,destroy直接终止
ii:建议通过boolean变量,正常终止线程运行
3:线程的优先级:
a)1-10默认是5
b)优先级别低,并不是不被打调用
4:资源同步:
synchronized 修饰方法修饰方法块
5:死锁
建议不要同时持有多个对象的锁
网络编程:
1:InetAnddress:封装了IP和DNS,没有端口
2:InetSocketAddress:封装了IP和端口
3:URL:代表一个网络的资源
a)openStream
4:TCP通讯
a)特点:面向连接、安全、稳定
b)ServerSocket
c)Socket
5:UDP通信
a)特点:不面向连接。可能会丢失数据。发送数据效率不高
b)DatagramPacket:数据打包
c)DategramSocket:数据发送和接受
GUI编程(AWT,SWING,SWT):
1:组件
a)Component(普通组件,容器)
2:布局管理器
a) FlowLayout
b)BorderLayout
c)CardLayout
d)GridLayout
3:事件
a)事件对象
b)事件源对象,组件
c)监听器(一般采用匿名内部类来定义)
i:KeyListener KeyAdapter
WindowListener WindowAdapter
MouseListener Mouseadapter
4:菜单制作
a)MenuBar
b)Menu
c)Memultem
d)CheckBoxMenultem
e)MenuShorcut:定义菜单项的快捷键
多媒体编程:
1:字体 Font
2:Graphics
3:做音视频处理:JMF