Java学习笔记重点整合2Word格式文档下载.docx
- 文档编号:20046647
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:20
- 大小:418.11KB
Java学习笔记重点整合2Word格式文档下载.docx
《Java学习笔记重点整合2Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Java学习笔记重点整合2Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
FristThreadft=newFristThread();
//启动线程
//ft.run()千万不能这样写,start()继承于Thread
ft.start();
main-->
(部分)运行结果:
从以上结果我们可以看出两个线程同时在执行,一个是主方法线程,一个是ft.start()线程,谁抢到CPU谁就执行,否则进入就绪,这样一直交替,直到运行完毕。
第37集
1、实现线程的第二种方法
2、控制线程的常用函数
实现线程的第二种方法(实现Runnable接口)
总述:
JDK提供一个实现Runnable接口的类作为线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标对象传递给这个线程实例(线程对象的引用),由该目标对象提供线程体。
分述:
实现Runnable接口的类必须使用Thread类的实例才能创建线程。
通过Runnable接口创建线程分为两步。
(1)将实现Runnable接口的类实例化。
(2)建立一个Thread对象,并将第
(1)步实例化的对象作为参数传入Thread类的构造方法。
classRunnableImplimplementsRunnable{
for(inti=0;
Runnable-->
//生成一个Runnable接口实现类的对象(该对象提供线程体
给Thread线程)
RunnableImplri=newRunnableImpl();
//生成一个Thread对象,并将Runnable接口实现类的对象
//作为参数传递给该Thread对象
Threadt=newThread(ri);
//通知Thread对象,执行start方法
t.start();
}
(部分)执行结果:
线程的简单控制方法
中断线程
1、Thread.sleep()线程进入休眠
2、Thread.Yield()线程让出CUP,并重新争夺CPU的使用
设置线程的优先级
1、getPriority()取得优先级(最大或者最小优先级等)
2、setPriority()设置优先级
第38集
1、多线程数据安全
2、同步线程的方法
同步线程实例:
classMyThreadimplementsRunnable{
inti=100;
while(true){
//this指调用这个方法(函数)的对象。
synchronized(this){//这是一个同步代码块(它是锁住一个对象,不是锁住一个代码块)
//Thread.curretThread()是Thread的静态方法
//Thread.curretThread()可以返回当前执行的线程以及线程的名字
System.out.println(Thread.currentThread().getName()
+i);
i--;
Thread.yield();
if(i<
0){
break;
}
}
说明:
1、如果没有同步代码块将有可能出现运行错误
2、有了同步代码块一个线程即使抢占CPU也无法执行代码块的构造函数的方法体只能等待正在执行的线程执行完毕才能重新争夺CPU执行。
MyThreadmyThread=newMyThread();
//生成两个Thread对象,但是这两个Thread对象共用
//同一个线程体
Threadt1=newThread(myThread);
Threadt2=newThread(myThread);
//每一个线程都有名字,可以通过Thread对象的setName()方法
//设置线程名字,也可以使用getName方法获取线程的名字;
t1.setName("
线程a"
);
t2.setName("
线程b"
//分别启动两个线程
t1.start();
t2.start();
第39集
深入synchronizad关键字
1.1同步代码块可以具体指锁住的是哪一个对象
2.1而同步方法锁住的就是this(调用这个方法【函数】的对象)。
第40集
1、数组的类型
2、数组的定义方法
3、数组的操作方法
一维数组的定义方法:
实例
//数组的静态声明法
//intarr[]={5,2,3,6,0};
//数组的动态声明法
intarr[]=newint[10];
System.out.println("
arr数组的长度是"
+arr.length);
arr[3]=10;
arr.length;
System.out.println(arr[i]);
二维数组的定义方法:
classTest01{
publicstaticvoidmain(Stringargs[]){
//二维数组的静态声明法
intarr[][]={{1,2,3},{4,5,6},{7,8}};
//二维数组的动态声明法
//intarr[]][]=newint[3][5];
i++){
for(intj=0;
j<
arr[i].length;
j++){
System.out.println(arr[i][j]);
第41集
1、什么是类集框架
2、集合的中类
3、类集框架的基础结构
什么是类集框架
1、类集框架是一组类和接口;
2、位于java.util包当中(JDK提供);
3、主要用于存储和管理对象;
4、主要分为三大类:
集合、列表和映射:
什么是集合(Set)
集合中的对象不按特定的方式排序,并且没有重复对象;
什么是列表(List)
集合中对象按照索引位置排序,可以有重复的对象
1
2
3
4
5
6
什么是映射(Map)
集合中的每一个元素包含一个键对象和一个值对象,键不可以重复,值可以重复。
key1
Value1
Key2
Value2
Key3
Value3
Key4
Value4
Key5
Value5
类集框架主体结构
实例说明:
//导入包
importjava.util.List;
//导入List实现类子接口
importjava.util.ArrayList;
publicclassTest{
ArrayList<
String>
arrayList=newArrayList<
();
//调用add()方法,向列表添加数据(对象)
//<
是定义ArrayList的泛型
arrayList.add("
a"
b"
c"
//调用get()方法取出列表的数据(对象)
//arrayList.size()是代表列表的长度
arrayList.size();
Strings=arrayList.get(i);
System.out.println(s);
第42集
1、Collection和Iterator接口
2、Set与HashSet的使用方法
Collection接口
(一)
booleanadd(Objecto)
向集合当中加入一个对象
voidclear()
删除集合当中的所有对象
blooeanisEmpty()
判断集合是否为空
remove(Objecto)
从集合中删除一个对象的引用
intsize()
返回集合中元素的数目
实例1:
//HashSet<
hashSet=newHashSet<
//Set<
set=hashSet;
Set<
set=newHashSet<
booleanb1=set.isEmpty();
System.out.println(b1);
set.add("
d"
booleanb2=set.isEmpty();
System.out.println(b2);
inti=set.size();
clear之前的set对象的长度是"
set.clear();
//set.remove("
intj=set.size();
clear之后的set对象的长度是"
+j);
实例2:
importjava.util.Set;
importjava.util.HashSet;
importjava.util.Iterator;
//Iterator迭代器
//Iterator<
--Collection<
--Set<
--HashSet
//HashSet中的方法有1、hasNext()判断迭代器中还有没有下一个对象
//2、next()取出当前迭代器中元素,并返回迭代器中的下一个对象
//调用Set对象的Iterator方法,会生成一个迭代器对象,
//该对象用于遍历整个Set
Iterator<
it=set.iterator();
while(it.hasNext()){
Strings=it.next();
System.out.println(s);
}
第43集
1、Map与HashMap的使用方法
2、JDK帮助文档的使用方法
映射实例:
importjava.util.Map;
importjava.util.HashMap;
HashMap<
String,String>
hashMap=newHashMap<
Map<
map=hashMap;
第一个String表示键的类型,第二个表示值的类型
map.put("
1"
"
2"
3"
4"
e"
//e覆盖了c
inti=map.size();
System.out.println(i);
Strings=map.get("
System.out.println(s);
第44集(理解)
1、equals函数在什么地方
2、equals函数的作用
3、复写equals函数的方法
“==”操作符的作用
作用是:
判断两个引用是否指向堆内存的同一个地址
Useru1=newUser();
Useru2=newUser();
Useru3=u1
classUser{
Stringname;
intage;
publicstaticvoidmain(String[]args){
Useru1=newUser();
Useru2=newUser();
Useru3=u1;
booleanb1=u1==u2;
booleanb2=u1==u3;
运行结果:
什么是对象的内容相等
通常情况下:
对象内容相等需要符合两个条件
1、对象的类型相同(可以使用instanceof操作符进行比较):
2、两个对象的成员变量的值完全相同;
//这里的equals()方法是复写Object里面方法
publicbooleanequals(Objectobj){
if(this==obj){
returntrue;
booleanb=objinstanceofUser;
if(b){
Useru=(User)obj;
if(this.age==u.age&
&
this.name.equals(u.name)){
returntrue;
else{
returnfalse;
else{
returnfalse;
u1.name="
zhangsan"
;
u1.age=12;
u2.name="
lisi"
u2.age=12;
u3.name="
u3.age=12;
System.out.println(u1.equals(u2));
System.out.println(u1.equals(u3));
第45集
1、hashCode()的作用
2、hashCode()的实现方法
3、toString()的作用
4、toString()的实现方法
什么是Hash算法(了解)
实质:
输入一个任意长度的数据,通过Hsah算法,得到一个唯一的散列值。
HashCode()复写原则:
如果两个对象用equals相比是相等得,那么这两个对象调用HashCode()所返回的Hash值也应该是相等的
Hash算法的特点
publicUser(){
this.name=name;
this.age=age;
PublicUser
publicinthashCode(){
intresult=17;
result=31*result+age;
result=31*result+name.hashCede();
returnresult;
}
Importjava.util.*;
Useru=newUser("
12);
User,String>
map=newHashMap<
map.put(u,"
abc"
Strings=map.get(newUser("
12));
Java当中的toString()函数
一下的代码运行的结果是什么;
System.out.println(“abc”);
那么下面的这两行代码呢:
Useru=newUser();
Sysrem.out.println(u);
publicUser(Stringname,intage){
publicStringtoString(){
Stringresult="
age:
+age+"
+"
name:
+name;
importjava.util.*;
System.out.println(u);
第48集
Eclipse部分使用快捷键
1、Alt+/代码助手功能
2、Ctrl+D删除一行代码
3、Ctrl+Z撤销操作(Undo)
4、Ctrl+Y恢复操作(Redo)
5、菜单里Source快捷生成构造方法(函数)、equals方法、hashCode方法、toString方法等。
6、注释生成:
1)注释一行代码:
选中内容+Ctrl+/(也可以选中多行代码进行分别注释)
2)注释多行代码:
选中内容+Ctrl+Shift+/
解除注释多行代码:
选中内容+Ctrl+Shift+\(这是反斜杠)
7、Ctrl+Alt+复制当前光标所在的一行代码(使用英特尔集成显卡及驱动的除外)。
第49集
代码的重构
1、重构可以改善软件的设计
2、重构可以让软件更加容易理解
3、重构可以协助寻找bugs
4、重构可以提升开发速度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 学习 笔记 重点 整合