javaSE总结.docx
- 文档编号:10635389
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:28
- 大小:308.32KB
javaSE总结.docx
《javaSE总结.docx》由会员分享,可在线阅读,更多相关《javaSE总结.docx(28页珍藏版)》请在冰豆网上搜索。
javaSE总结
(1)Java语言,掌握面向对象设计和面向对象思维模式
计算机语言的发展过程
第一代计算机语言:
机器语言
第二代计算机语言:
汇编语言
第三代计算机语言:
高级语言
面向过程的:
c、pascal、fortran等
面向对象(OOP):
c++、Java、c#
Java的特点:
1.简单-Java设计人员删除了C++中许多复杂的功能,如指针操纵和运算符重载等
2.面向对象-在Java中任何东西都是对象。
因此,重点集中在数据、应用程序中操作对象的方法以及过程上
3.健壮性-Java在编译和解释时都会检查代码
4.安全性-Java提供了用于执行程序的受控环境,以及多层次的安全控制
5.分布式-Java可用于开发能够在多个平台、操作系统和图形用户界面之间移植的应用程序,RMI(Java远程方法调用)
6.多线程-Java程序使用称为“多线程”的进程同时处理多项任务
7.跨平台-Java是平台无关的语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行
Java语言的平台划分
1.JavaSEJ2se
Java平台标准版JavaPlatformStandardEdition
2.JavaMEkJava
Java平台微型版JavaPlatformMicroEdition
3.JavaEE
Java平台企业版JavaPlatformEnterpriseEdition
Java虚拟机及Java的跨平台特性
Java虚拟机:
JVM(JavaVirtualMachine)
概念:
可运行Java字节码的虚拟计算机系统,它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信
1.在真实机器中用软件模拟实现的一种想象机器
2.Java虚拟机代码被存储在.class文件中
3.可以实现“一次编译,到处运行”的跨平台性
4.虚拟机本身不跨平台
JDK:
JavaDevelopmentKit(Java开发工具包)开发时使用(程序员使用)
JRE:
JavaRuntimeEnvironment(Java运行环境)运行时使用(客户用)
类,对象简介
1.类是一个模板,是一种类型,“物以类聚”
2.对象是类的一个具体实现
例如:
汽车模型和生产出来的汽车
猫和我家的那只猫
标识符的定义:
变量、类、接口、方法等的名称
命名规则:
1.由数字、字母、下划线(_)、美元符号($)组成
2.字母、下划线(_)或美元符号($)开始
3.区分大小写,无长度限制
4.标识符不能是关键字
标识符的约定(命名规则):
1.可读性强,见名知意
2.好的名称
Customer、email、orderNumber
3.差的名称
AClass、bVar、cMethod
关键字
java语言中有特殊意义的单词,称为关键字
关键字不能再定义为标识符
注意
所有关键字都小写
gotoconst也是Java关键字
truefalse不是Java关键字
字面量的定义:
直接使用的一些常量,一般是赋值给变量或者直接输出
例如:
字符‘a’
字符串“”
整型123
浮点型3.14
布尔型true/false
变量的作用域只在所属的块结构中有意义
数据的表示法
十进制
123=1x10*10+2*10+3*1=123
二进制
1011=1*2*2*2+0*2*2+1*2+1*1=11
八进制
712=7*8*8+1*8+2*1=458
十六进制
5FA=5*16*16+15*16+10*1=1530
数据类型分类
转换规则
boolean不能转换
整型、字符型、浮点型可以相互转换
1.容量小的自动转换为容量大的
byte,short,char->int->long->float->double
2.容量大的转换为容量小的需要强制转换,可能造成精度的降低或者溢出
break是结束整个循环,而continue是结束本次循环(跳过下一步)
字符串
定义:
1.字符串是一个字符序列,例如:
“Hello”,字符串
2.不是一个基本数据类型,是一个引用类型(类)
3.字符串是一个不可变类型(Immutable)
4.一经创建不可修改
常用方法
1.取字符串的长度length()
2.取某个索引位置上的字符:
charAt(intindex);
3.子字符串:
substring(0,4);(包含前面的索引,不包含后面的索引)
4.字符串连接:
“+”
解析字符串工具类StringTokenizer:
StringTokenizer是一个解析字符串的工具类,根据指定的分隔符
StringBuffer是一个线程安全的可变字符序列,主要操作是append和insert方法
StringBuilder:
是线程不安全的
面向过程的
程序被认为是在一个数据集合上进行的一系列操作
面向过程是在方法(函数)层次上重用代码
面向对象编程(ObjectOrientedProgramming)
实质是把数据(属性)和处理这些数据的过程(方法)合并为一个单独的“对象”――一个具有确定特性的自完备的实体
面向对象是在对象层面上重用,更高级、更抽象
我要吃饺子
面向过程:
我买菜、我和面、我调馅儿、我包饺子、我煮饺子
面向对象:
我--->餐馆
面向对象编程的特征
1.封装
指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性
封装允许类的客户不必关心类的工作机理就可以使用它。
就象驾驶员不必了解发动机的工作原理就可以驾驶汽车一样,类的客户在使用一个类时也不必了解它是如何工作的,而只需了解它的功能即可
所有对数据的访问和操作都必须通过特定的方法,否则便无法使用,从而达到数据隐藏的目的
2.继承
继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存,而新功能也得以扩展。
这有利于减少重复编码,提高软件的开发效率
3.多态
多态性描述的是同一个消息可以根据发送消息对象的不同采用多种不同的行为方式
前提:
面向对象中的多态
三个条件:
子类继承父类,子类覆盖父类,父类指向子类
面向对象编程:
1.重用性
2.扩展性
3.易于维护
4.面向对象编程更符合人类的思维习惯,容易理解
方法重载
当类中的方法名相同,参数类型或者数量不同时,称为方法的重载(overload)
例如:
publicvoidprintln(inti);
publicvoidprintln(charc);
publicvoidprintln(Strings);
注意:
不能通过返回值类型来完成方法重载;当参数列表不同时,可以改变返回值类型
注意:
静态方法可以被继承(严格来说应该叫隐藏),但不能被重写。
因此静态方法不存在多态。
构造方法
特点:
1.是一个特殊的方法
2.与类同名
3.没有返回值
4.可以重载
5.作用:
初始化
当一个类我们没有写构造方法时,JDK编译器会生成一个空构造
this关键字
意义:
1.用在方法里:
代表调用该方法的当前对象
2.用在构造方法里:
该构造器所创建的新对象
3.用法:
(1)在类本身的方法或构造器中引用该类的实例变量和方法
(2)将当前对象作为参数传递给其它方法或构造器
(3)用来调用其他的重载的构造器,必须是构造方法中的第一条语句
static关键字
1.放在变量前面
称为静态变量,或者类变量
为该类的公共变量
对所有对象来说只要一份
2.放在方法前面
称为静态方法,或者类方法
在调用该方法时,不会将对象的引用传递给它
静态方法不在是真的某个对象的调用,所以static方法不能访问非static成员
3.可以通过对象引用或者类名(不需要实例化)访问static成员
//静态方法(类方法)不能调用成员变量和成员方法
//静态方法只能调用静态变量
package
1.区分命名空间:
相同包里不能有同名类
2.显示在文件系统中是目录(文件夹)
3.命名规则是域名逆序
import
1.java.lang包中的类不需要导入
2.其他包中的类需要导入
3.自定义类不在同一个包里需要导入
访问控制
在Java中,可以在类的属性以及类的方法前面加上一个修饰符(modifier),来对类进行一些访问上的控制
类(非内部类)的修饰符只有两种:
public和default
对于class的访问修饰符只有:
public和default
public修饰的类可以被访问
default类只能在本包中被访问
修饰符
同一个类中
同一个包中
子类中
全局
private
Yes
default
Yes
Yes
protected
Yes
Yes
Yes
public
Yes
Yes
Yes
Yes
Java使用extends来实现继承的
通过继承,子类自动拥有父类的所有属性和方法
父类也称为:
基类,超类
Java只支持单根继承
Java通过接口实现多重继承的语义
方法覆盖,也称方法重写(override/overWrite)
1.定义:
子类可以重写父类里的同名方法
2.规则:
子类的访问范围必须大于等于父类的访问范围
super
1.意义:
父类的一个引用
2.用法:
使用super可以调用父类的构造方法
使用super可以明确指定调用父类的成员(方法和属性)
继承中的构造
1.规则
构造方法不能被继承
方法和属性可以被继承
子类的构造方法自动调用父类的默认构造方法
当父类没有默认的构造方法时,子类必须显示调用父类的构造方法
抽象方法
1.概念:
一些方法只是被声明,而没有实现
2.前面用abstract关键字修饰
注意:
被声明为abstract之后,不能被声明为private、static、final
抽象类
1.概念:
在一个类里面有一个或者多个抽象方法
2.注意
抽象类不能被实例化
抽象类只能是超类
继承抽象类的子类,必须实现抽象方法,或者本身也是抽象类
final的用法
1.在类前面:
阻止继承
2.在方法前面:
阻止方法覆盖
3.在属性前面:
常量
Object类
1.一切类的基类
2.所有类具有Object类中定义的方法
3.根据API文档提示重写类的toString()方法
接口:
是一种特殊的抽象类,在其中只能定义常量和方法
注意
1.接口只有方法的定义,而没有方法的实现
2.接口像一个“管理者”,只告诉你做什么,而不管怎么做
3.接口中的属性默认是publicstaticfinal的,也只能是这样
4.接口中的方法默认是publicabstract的,也只能是这样
接口的实现
1.使用implements关键字实现接口
2.一个类实现接口必须实现接口中的所有方法
3.一个类可以实现多个接口
4.接口可以实现多态
5.是设计系统的灵魂
引用类型的类型转换
1.向上转换(upcasting)
子类对象可以直接当作父类对象使用,无需强制转换
2.向下转换(downcasting)
父类对象当作子类对象使用,需要强制类型转换,可能抛出异常
异常的概念
1.异常是Java在运行期出现的错误,如:
空指针(NullPointerException)、数组越界等
2.设计良好的程序应该在异常发生时提供处理这些错误的方法,使得3.程序不会因为异常的发生而阻隔或产生不可预见的结果
4.Java异常提供了处理运行期错误的机制,Java异常是面向对象的,5.当异常发生时自动产生一个异常对象,再由catch方法来捕获处理
异常的分类
Throwable:
所有异常类的父类
Error:
JVM异常,用户无法处理的异常
Exception:
Java异常类的父类
RuntimeException:
运行时异常,也称作uncheckedexception,不必捕获异常
其它的异常:
除了RuntimeException以外其它的异常称为checkedexception,必须捕获的异常
异常块结构
try{
//可能出现异常的代码
}catch(Exception1e){
……
}
catch(Exception2e){
……
}
finally{
……
}
1.try代码段包含可能产生异常的代码
2.try代码段后跟有一个或多个catch代码段
3.每个catch代码段声明其能处理的一种特定类型的异常并提供处理的方法
4.当异常发生时,程序会中止当前的流程,根据获取异常的类型去执行相应的catch代码段
5.finally段的代码无论是否发生异常都会执行
注意事项
1.try、catch、finally三个语句块均不能单独使用,三者可以组成(try...catch...finally)、(try...catch)、(try...finally)三种结构,catch语句可以有一个或多个,finally语句最多一个。
2.try、catch、finally三个代码块中变量的作用域为代码块内部,分别独立而不能相互访问。
如果要在三个块中都可以访问,则需要将变量定义到这些块的外面。
3.多个catch块时候,只会匹配其中一个异常类并执行catch块代码,而不会再执行别的catch块,并且匹配catch语句的顺序是由上到下
4.基类异常的捕获语句不能写在子类捕获语句的前面
异常类的相关方法:
getMessage()、printStackTrace()等
关键字
throws和throw
使用throw关键字,在方法体中抛出异常对象
使用throws关键字,在方法声明中抛出异常
自定义异常:
定义一个类并继承Exception
规则:
重写方法需要抛出与原方法所抛出异常类型一致或不抛出,(此规则不包括非检测异常)
集合框架简介
集合也称容器,是装载一组对象的容器,
例如:
客户列表、订单列表
学习集合框架的总体思路
如何添加元素
如何获得元素
如何删除元素
如何遍历元素
List
继承Collection接口,存储的数据对象有序可重复
Set
继承Collection接口,存储的数据对象无序不重复
Map
是一组成对的键-值对象,即所持有的是key-value对。
Map中不能有重复的key,可以有重复的值
Iterator对象的remove方法在迭代过程中删除元素的//唯一安全的方法,通过查看API文档说明
List接口
特性:
继承Collection,允许重复,以元素安插的次序来放置元素,不会重新排列
List接口实现类
1.ArrayList
ArrayList类封装了一个动态再分配的Object[]数组
2.LinkedList
LinkedList类添加了一些处理列表两端元素的方法
方法
LinkedList()
LinkedList(Collectionc)
voidaddFirst(Objecto)
voidaddLast(Objecto)
ObjectgetFirst()
ObjectgetLast()
ObjectremoveFirst()
ObjectremoveLast()
Collections类
类java.util.Collections提供了一些静态方法实现了基于List容器的一些常用算法
voidsort(List)对List容器内的元素排序
voidshuffle(List)随机排序
voidreverse(List)反转
voidfill(List,Object)用特定对象重写整个List容器
Comparable接口
所有可以排序的类都实现了java.lang.Comparable接口,这个接口只有一个方法:
publicintcompareTo(Objectobj)
Set接口
特性
继承Collection,但不允许重复,无序的
Set接口没有引入新方法,所以Set就是一个Collection,只不过其行为不同
HashSet
创建您自己的要添加到HashSet的类时,别忘了覆盖hashCode()和equals()
当两个对象的equals方法返回true时,这两个对象的hashCode应该相等
对象中用作equals比较标准的属性,都应该用来计算hashCode值
ArrayList读快改慢
LinkedList读慢改快
HashSet两者之间
Map接口
特征:
是一组成对的键-值对象,即所持有的是key-value对。
Map中不能有重复的key,拥有自己的内部排列机制
什么是泛型
一种类型占位符,或称之为类型参数
主要用于集合类中,减少类型转换带来的复杂度,提高程序运行的效率
文件和目录
在Java语言里,文件(File)代表的是文件和目录
使用文件类File可以完成如下任务:
1.创建新文件对象
File(Fileparent,Stringchild)
File(Stringpathname)
File(Stringparent,Stringchild)
2.新建文件
publicbooleancreateNewFile()throwsIOException
3.新建目录
publicbooleanmkdir()
publicbooleanmkdirs()
使用文件类File可以完成如下任务:
1.删除文件
publicbooleandelete()
2.获得文件信息
StringgetName()
StringgetPath()
StringgetAbsolutePath()
StringgetParent()
3.重命名
booleanrenameTo(FilenewName)
4.测试文件
publicbooleancanRead()
publicbooleancanWrite()
publicbooleanexists()
publicbooleanisFile()
publicbooleanisDirectory()
publicbooleanisHidden()
流的分类
按流的方向:
输入流;输出流
按处理数据单位不同:
字节流:
8位一个字节
字符流:
16位两个字节
按功能划分:
节点流:
处理流
字节流
字符流
输入流
InputStream
Reader
输出流
OutputStream
Writer
什么是进程
进程是操作系统中正在执行的不同的应用程序,例如:
我们可以同时打开Word和记事本
什么是线程
线程是一个应用程序进程中不同的执行路径,例如:
我们的WEB服务器,能够为多个用户同时提供请求服务
进程是不活泼的。
进程从来不执行任何东西,它只是线程的容器。
线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。
Java中的多线程是通过java.lang.Thread类来实现的
主线程
概念:
即使Java程序没有显示的来声明一个线程,Java也会有一个线程存在该线程叫做主线程;可以调用Thread.currentThread()来获得当前线程。
线程的创建方法
有两种方法来创建线程
1.实现Runnable接口
Runnable中有一个方法run用来定义线程执行代码
publicvoidrun();
2.继承Thread类
MyThreadextendsThread
需要覆盖run方法
1.线程的启动
线程的启动需要调用Thread的start方法,不能直接调用run方法,如果直接调用run方法相当于方法调用
2.线程的终止
当run方法返回,线程终止,一旦线程终止后不能再次启动
线程的终止可以调用线程的interrupt方法,但该方法不是最佳方法,最好是设置一个标记来控制线程的终止
线程控制的基本方法
方法
功能
isAlive()
判断线程是否活着
getPriority
获得线程优先级
setPriority
设置线程优先级
sleep
使线程睡眠
join
合并线程
yield
让出CPU,
wait
等待
notify/notifyAll
通知/通知所有
Sleep:
让当前线程睡眠
Join:
合并线程
Yield:
让出cpu,给其它线程的执行机会
线程的优先级越高占用CPU时间越长
为什么需要线程同步:
一个银行账号在同一时间不能接受多个线程的访问,因为这样会造成混乱
线程的同步:
synchronized
wait/notify/notifyAll
wait()方法:
此方法导致当前线程将其自身放置在对象的等待集中,然后放弃此对象上的所有同步要求。
Synchronized:
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。
另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
四、第三个例子同样适用其它同步代码块。
也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。
结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
网络的分类
按照网络规模和范围可以简单划分为:
局域网(LAN,LocalAreaNetwork)
都市网(MAN,MetropolisAreaNetwork)
广域网(WAN,WideAreaNetwork)
按照网络拓扑结构可以分为:
星型网络、总线网络、环线网络、树型网络、星型环线网络等
按照传输介质划分:
双绞线、同轴电缆、光导纤维等
OSI:
开放系统互连(OpenSystemInterconnection),采用分层的结构化技术。
分层的理由:
将网络简化
模块化的设计网络
OSI参考模型(OSI/RM,OpenSystemInterconnection/ReferenceModel)共分为7层,最高层为用户层,最底层为物理层
TCP/IP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaSE 总结