JAVA概述
1、jdk,java development kit,
2、jre,java runtime environment,
3、配置环境变量
1>永久配置方法
2>临时配置方法
CLASSPATH 是什么,他的作用
path环境变量
4、javac命令和java命令做什么的
javac:
java:
二、语法基础
1、标识符
a.数字不可开头
b.不可使用关键字
2、变量的作用域和生存期
a.变量的作用域
b.生命周期
3、数据类型
基本数据类型
4、运算符号
a.逻辑运算符
& && | || ^ !
b.位运算符
>>> >> << <<< ^ | &
5、重载的定义
a.重载
b.重写
6、java的内存管理
a.Java内存管理:深入java内存管理区域
b.运行时数据区域
c.程序计数器
d.java虚拟机栈
e.本地方法栈
f.Java堆
g.方法区
h.运行时常量池
7、访问对象
三、面向对象
1、类
a.匿名对象使用场景
b.类中是否必须定义主函数
c.成员变量和局部变量的区别
d.构造函数的定义、特点
e.构造代码块和构造函数的区别
f.创建一个对象,内存中做了什么?Person person = new Person();
g.封装的定义,好处,原则
this代表什么
static的使用
1>static变量的使用
2>静态方法
3>static代码块
4>static和final一块使用表示什么
成员变量和静态变量的区别
①
②
③
④
h.继承
成员变量
成员函数
构造函数
final的特点
①
②
③
④
抽象类的特点
①
②
③
④
三、接口
1.用interface定义
2.常见的成员:全局变量,抽象方法
interface inter{
public static final int x=3;
public abstract void show();
}
3.接口不能直接实例化,只有被实现了所有抽象方法后才能被实例化
4.类与类之间存在继承关系,类与接口存在实现关系
继承:extends 实现:implements
.、接口和类不同点:接口可以被多个实现,多次继承。eg.Work work = new Studying();
6.一个类继承另一个雷的同时,还可以实现U盾讴歌接口,避免了单继承的局限性
7.java的多继承
java类是单继承的。ClassAA extends ClassA
接口可以多继承。 InterfaceABC extends InterfaceA,InterfaceB,InterfaceC
8.抽象类与接口区别
①抽象了哦只能被单继承,接口需要被多实现,且可被多实现
②抽象类可以定义非抽象方法,子类直接继承。接口的抽象方法需要子类实现
③抽象类是is a的关系,接口是like a的关系
④抽象类的成员修饰符可以自定义,接口的成员修饰符自定义,都是public
9.多态
函数本身具备多态性,是一种事物的不同体现
eg:Animal a = new Cate();
优点:提高程序扩展性。继承父类的方法,可以通过子类实例重写即可得到新方法
缺点:父类引用子类的对象,只能访问父类中具备的方法,无法访问子类
前提:①有关系,比如继承or实现
②通常有覆盖操作(重写)
10、java.lang.Object方法
Object所有类的直接或者间接父类,java认为所有对象都具备一些基本的共性内容,这些内容可以不断的向上抽取,最终抽取到最顶层的类中,这个类定义的就是所有对象都具备的功能
具体:
Boolean equals(Object obj):
比较两个对象的地址是否相等
String toString();
将对象转变成字符串。返回组成形式:类名@哈希值,可重写
Class getClass();
获取对象运行时所属的字节码对象
int hashCode()
返回哈希码值。支持此方法为了提高哈希表的性能,将对象的内部地址转换成一个整数实现
四、异常
Throw and Throws
try catch finally的使用
五、多线程
1.返回当前的线程名称:Thread.currentThread().getName();
2.线程要运行的代码都统一存放在了run方法中
3.线程要运行需要通过制定start方法开启(启动后多一条执行路径)
start方法 1>启动线程 2>jvm调用了run方法
4.Thread方法中run和start的区别
start()用于启动线程,真正实现了多线程运行,无需等待run方法体代码执行完毕继续执行下面的代码。通过start()方法启动一个线程,这个线程此时处于一个就绪状态,未运行。
一旦cpu时间片到了,就开始执行run()方法,这个方法run()称为县城体,它包含这要执行这个线程的内容,run方法执行结束此线程终止
run()方法是累的一个普通方法,直接调用,程序只有主线程一个线程,其程序执行路径只有一条,需要按照顺序执行。这样就没有达到写线程的目的
总结:start()方法最本质功能是从CPU中申请一个新的线程来执行run()方法中的代码
5.创建线程的方式:
a.继承Thread由子类复写run方法
定义类继承Thread类
目的是复写run方法,将要让线程运行的代码存储到run方法中
通过线程Thread类的子类对象,创建线程对象
调用线程start()方法,开启线程,执行run()
b.实现一个Runnable接口
定义类实现Runnable接口
覆盖接口汇总的run方法,用于封装线程要运行的代码
通过Thread类创建线程对象
将实现了Runnable接口的子类对象作为实际参数传给Thread类中的构造函数,让线程对象明确要运行的run方法所属的对象
调用Thtread对象的start()方法,开启线程,并运行Runnable接口子类中的run方法。
eg.
Ticket t = new Ticket();
Thread t1 = new Thread(t);
将t作为Thread的构造函数实际参数传入,完成线程对象和t之间的关联,明确要运行的代码run方法。调用t1.start()即可运行
6.为什么要有Runable接口的出现
提示:单继承,多实现
7。synchronized关键字(一)
a.当两个并发线程访问同一个对象object中的synchronized(this)代码块时,一个时间内只能由一个线程得到执行,另一个线程需要等待当前线程执行完这个代码块以后才能执行。
b.当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问非synchronize的(this)同步代码块
c.当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其他synchronized(this)同步代码块的访问江北阻塞
e.以上规则对其他锁案例同样适用
8.synchronized关键字(二)
a.包含了两种用法:synchronized方法和synchronized块
①synchronized方法
控制对类成员变量的访问,每个类对应一把锁,每个方法必须获得调用该方法的实力才能执行,否则所属线程阻塞。
缺点:声明大的方法时,效率极低。
②通过synchronized关键字声明synchronized块,语法
synchronized(syncObject){
允许访问控制的代码
}
代码必须获得对象的锁才能执行,可针对任意代码块,任意制定上锁的对象,较为灵活
③当一个线程访问一个synchronized(this)同步代码块是,其他线程对object找那个的同步代码块江北阻塞
思当一个线程访问object的一个synchronized(this)同步代码块时,他就获得了这个object的对象锁,其他线程针对该object的对象所用同步代码就会被阻塞。
⑤以上规则对其他对象锁同样适用
b.解决安全问题的原理:
只要将操作共享数据的语句在某一时段让一个线程执行完成,在执行过程中,其他线程不能来执行就可以解决这个问题。
c.如何保障共享数据的线程安全
方法一:使用同步代码块
好处:解决了线程安全问题
弊端:降低了性能,因为判断锁需要消耗资源,产生了死锁
方法二:对共享资源的方法定义同步。使用同步函数
将关键字定义在函数上,让函数具备同步性
使用的synchronized(this)里定义需要进行同步的某一部分代码块,通过验证,函数都有自己的对象this.eg。(This.方法名)
d.当同步函数被static修饰,这时候同步用哪个锁?
static函数修饰的对象,在加载内存时就已经完成了封装,这个对象就是该类的字节码文件对象,所以加载时,只有一个对象存在,static静态同步函数使用的就是这个对象
e.同步代码块和同步函数的区别
同步代码块可以锁任意对象
同步函数锁是this,针对本类的字节码文件对象 xxx.class
类中只有一个同步,可以使用同步函数,如果是多个同步,必须使用同步代码块来确定不同的锁
9.线程基础知识----------重点记忆,理解
a.wait notify notifyAll
b.wait 和 sleep
c.线程的停止stop
e.拓展
interrupt();
setPriority(int newPriority)
getPriority();
toString()
Thread.yield()
join
f.lock的出现
10.集合框架--------------重点记忆且理解
11.反射技术
1、jdk,java development kit,
2、jre,java runtime environment,
3、配置环境变量
1>永久配置方法
2>临时配置方法
CLASSPATH 是什么,他的作用
path环境变量
4、javac命令和java命令做什么的
javac:
java:
二、语法基础
1、标识符
a.数字不可开头
b.不可使用关键字
2、变量的作用域和生存期
a.变量的作用域
b.生命周期
3、数据类型
基本数据类型
4、运算符号
a.逻辑运算符
& && | || ^ !
b.位运算符
>>> >> << <<< ^ | &
5、重载的定义
a.重载
b.重写
6、java的内存管理
a.Java内存管理:深入java内存管理区域
b.运行时数据区域
c.程序计数器
d.java虚拟机栈
e.本地方法栈
f.Java堆
g.方法区
h.运行时常量池
7、访问对象
三、面向对象
1、类
a.匿名对象使用场景
b.类中是否必须定义主函数
c.成员变量和局部变量的区别
d.构造函数的定义、特点
e.构造代码块和构造函数的区别
f.创建一个对象,内存中做了什么?Person person = new Person();
g.封装的定义,好处,原则
this代表什么
static的使用
1>static变量的使用
2>静态方法
3>static代码块
4>static和final一块使用表示什么
成员变量和静态变量的区别
①
②
③
④
h.继承
成员变量
成员函数
构造函数
final的特点
①
②
③
④
抽象类的特点
①
②
③
④
三、接口
1.用interface定义
2.常见的成员:全局变量,抽象方法
interface inter{
public static final int x=3;
public abstract void show();
}
3.接口不能直接实例化,只有被实现了所有抽象方法后才能被实例化
4.类与类之间存在继承关系,类与接口存在实现关系
继承:extends 实现:implements
.、接口和类不同点:接口可以被多个实现,多次继承。eg.Work work = new Studying();
6.一个类继承另一个雷的同时,还可以实现U盾讴歌接口,避免了单继承的局限性
7.java的多继承
java类是单继承的。ClassAA extends ClassA
接口可以多继承。 InterfaceABC extends InterfaceA,InterfaceB,InterfaceC
8.抽象类与接口区别
①抽象了哦只能被单继承,接口需要被多实现,且可被多实现
②抽象类可以定义非抽象方法,子类直接继承。接口的抽象方法需要子类实现
③抽象类是is a的关系,接口是like a的关系
④抽象类的成员修饰符可以自定义,接口的成员修饰符自定义,都是public
9.多态
函数本身具备多态性,是一种事物的不同体现
eg:Animal a = new Cate();
优点:提高程序扩展性。继承父类的方法,可以通过子类实例重写即可得到新方法
缺点:父类引用子类的对象,只能访问父类中具备的方法,无法访问子类
前提:①有关系,比如继承or实现
②通常有覆盖操作(重写)
10、java.lang.Object方法
Object所有类的直接或者间接父类,java认为所有对象都具备一些基本的共性内容,这些内容可以不断的向上抽取,最终抽取到最顶层的类中,这个类定义的就是所有对象都具备的功能
具体:
Boolean equals(Object obj):
比较两个对象的地址是否相等
String toString();
将对象转变成字符串。返回组成形式:类名@哈希值,可重写
Class getClass();
获取对象运行时所属的字节码对象
int hashCode()
返回哈希码值。支持此方法为了提高哈希表的性能,将对象的内部地址转换成一个整数实现
四、异常
Throw and Throws
try catch finally的使用
五、多线程
1.返回当前的线程名称:Thread.currentThread().getName();
2.线程要运行的代码都统一存放在了run方法中
3.线程要运行需要通过制定start方法开启(启动后多一条执行路径)
start方法 1>启动线程 2>jvm调用了run方法
4.Thread方法中run和start的区别
start()用于启动线程,真正实现了多线程运行,无需等待run方法体代码执行完毕继续执行下面的代码。通过start()方法启动一个线程,这个线程此时处于一个就绪状态,未运行。
一旦cpu时间片到了,就开始执行run()方法,这个方法run()称为县城体,它包含这要执行这个线程的内容,run方法执行结束此线程终止
run()方法是累的一个普通方法,直接调用,程序只有主线程一个线程,其程序执行路径只有一条,需要按照顺序执行。这样就没有达到写线程的目的
总结:start()方法最本质功能是从CPU中申请一个新的线程来执行run()方法中的代码
5.创建线程的方式:
a.继承Thread由子类复写run方法
定义类继承Thread类
目的是复写run方法,将要让线程运行的代码存储到run方法中
通过线程Thread类的子类对象,创建线程对象
调用线程start()方法,开启线程,执行run()
b.实现一个Runnable接口
定义类实现Runnable接口
覆盖接口汇总的run方法,用于封装线程要运行的代码
通过Thread类创建线程对象
将实现了Runnable接口的子类对象作为实际参数传给Thread类中的构造函数,让线程对象明确要运行的run方法所属的对象
调用Thtread对象的start()方法,开启线程,并运行Runnable接口子类中的run方法。
eg.
Ticket t = new Ticket();
Thread t1 = new Thread(t);
将t作为Thread的构造函数实际参数传入,完成线程对象和t之间的关联,明确要运行的代码run方法。调用t1.start()即可运行
6.为什么要有Runable接口的出现
提示:单继承,多实现
7。synchronized关键字(一)
a.当两个并发线程访问同一个对象object中的synchronized(this)代码块时,一个时间内只能由一个线程得到执行,另一个线程需要等待当前线程执行完这个代码块以后才能执行。
b.当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问非synchronize的(this)同步代码块
c.当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其他synchronized(this)同步代码块的访问江北阻塞
e.以上规则对其他锁案例同样适用
8.synchronized关键字(二)
a.包含了两种用法:synchronized方法和synchronized块
①synchronized方法
控制对类成员变量的访问,每个类对应一把锁,每个方法必须获得调用该方法的实力才能执行,否则所属线程阻塞。
缺点:声明大的方法时,效率极低。
②通过synchronized关键字声明synchronized块,语法
synchronized(syncObject){
允许访问控制的代码
}
代码必须获得对象的锁才能执行,可针对任意代码块,任意制定上锁的对象,较为灵活
③当一个线程访问一个synchronized(this)同步代码块是,其他线程对object找那个的同步代码块江北阻塞
思当一个线程访问object的一个synchronized(this)同步代码块时,他就获得了这个object的对象锁,其他线程针对该object的对象所用同步代码就会被阻塞。
⑤以上规则对其他对象锁同样适用
b.解决安全问题的原理:
只要将操作共享数据的语句在某一时段让一个线程执行完成,在执行过程中,其他线程不能来执行就可以解决这个问题。
c.如何保障共享数据的线程安全
方法一:使用同步代码块
好处:解决了线程安全问题
弊端:降低了性能,因为判断锁需要消耗资源,产生了死锁
方法二:对共享资源的方法定义同步。使用同步函数
将关键字定义在函数上,让函数具备同步性
使用的synchronized(this)里定义需要进行同步的某一部分代码块,通过验证,函数都有自己的对象this.eg。(This.方法名)
d.当同步函数被static修饰,这时候同步用哪个锁?
static函数修饰的对象,在加载内存时就已经完成了封装,这个对象就是该类的字节码文件对象,所以加载时,只有一个对象存在,static静态同步函数使用的就是这个对象
e.同步代码块和同步函数的区别
同步代码块可以锁任意对象
同步函数锁是this,针对本类的字节码文件对象 xxx.class
类中只有一个同步,可以使用同步函数,如果是多个同步,必须使用同步代码块来确定不同的锁
9.线程基础知识----------重点记忆,理解
a.wait notify notifyAll
b.wait 和 sleep
c.线程的停止stop
e.拓展
interrupt();
setPriority(int newPriority)
getPriority();
toString()
Thread.yield()
join
f.lock的出现
10.集合框架--------------重点记忆且理解
11.反射技术