JAVA基础知识点总结.docx
- 文档编号:12278003
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:22
- 大小:27.59KB
JAVA基础知识点总结.docx
《JAVA基础知识点总结.docx》由会员分享,可在线阅读,更多相关《JAVA基础知识点总结.docx(22页珍藏版)》请在冰豆网上搜索。
JAVA基础知识点总结
Java语言的几个主要特点
平台无关性:
能运行于不同的平台上
安全性:
去掉了指针操作,内存由操作系统分配
面向对象:
利用类使程序更加利于维护
分布式:
可以使用网络文件和使用本机文件一样容易
健壮性:
检查程序编译和运行的错误
Java的三大核心机制
虚拟机机制:
利用虚拟机解释字节码执行java程序实现跨平台
垃圾收集机制:
自动内存回收
代码安全性机制:
加载代码后校验代码后再执行代码
Java文件的类型有两种:
扩展名为java的文件:
是Java源文件,属于编译之前的纯文本文件,存储java源代码。
扩展名为class的文件:
是Java类文件,属于编译之后的二进制文件,存储字节码。
Java的编译运行原理
首先编写java源文件,然后编译成class类文件,然后通过虚拟机解释成机器码到硬件执行。
Java是编译型语言还是解释型的语言
既不是完全编译型,也不是完全解释型,是半编译半解释的。
main方法是程序的入口方法,是由虚拟机自动调用的。
语句必须用分号结束但是代码块{}可以用分号结束,也可以不用分号结束
Java中注释,各自的功能有三种:
单行注释//:
加在行首只能注释一行
多行注释/**/:
注释多行,但不能嵌套使用
文档注释/***/:
用于生成HTML形式的文档,需要配合javadoc命令实现
Java语言的数据类型是强类型,意味着每一个变量都必须明确声明数据类型。
Java语言中数据类型的划分
分成基本类型和引用类型两大类。
基本类型:
有8种,只能存储单一的值,不以对象的形式存在
引用类型:
除了基本类型之外其他的都是引用类型,能够存储复杂数据类型,以对象的形式存在
基本类型8种类型
布尔类型:
boolean占1字节
字符类型:
char占2字节
整型:
byte占1字节short占2字节int占4字节long占8字节
浮点型:
float占4字节double占8字节
常见的转义字符
转义序列
名称
\b
退格
\t
制表
\n
换行
\r
回车
\”
双引号
\’
单引号
\\
反斜杠
常见的Unicode字符对应的编码
大写的A到Z是对应65到90,小写的a到z是对应97到122,字符0到9是对应48到57
标识符起名规则
1.应以字母、下划线、美元符开头
2.后跟字母、下划线、美元符或数字
3.不能用关键字和保留字
4.严格区分大小写
5.名称长度没有限制
在声明变量的时候加上final修饰符即为常量,表示这个变量只能被赋一次值。
如果是在一个表达式中,那++放后面表示先运算表达式,然后再进行自增运算,如果在一个表达式中,++放前面,则表示先进行自增运算然后在运算表达式。
--同样道理。
例如:
inti=10;
intj=i++;//先进行赋值运算然后再进行自增运算
j的结果是10
inti=10;
intj=++i;//先进行自增运算然后再进行赋值运算
j的结果是11
判断字符串内容相同用equals方法判断内容相同,==只能判断引用是否相同
if语句和循环语句的花括号当执行的语句只有一句的时候
可以省略
switch语句规则
表达式expr的返回值必须是下述几种类型之一:
int,byte,char,short或枚举常量;
case子句中的值必须是常量,且所有case子句中的值应是不同的,也必须是下述几种类型之一:
int,byte,char,short或枚举常量
default子句是任选的;
break语句用来在执行完一个case分支后使程序跳出switch语句块;
退出循环break和continue区别
break是退出整个循环
continue是退出当前循环继续下一次循环
声明数组创建数组的方法
以下声明都是合法的:
int[]a;
inta[];
String[]a;
以下创建数组对象都是合法的:
int[]a=newint[3];
int[]a={1,2,3};
int[]a=newint[]{1,2,3};
类和对象的区别
类:
对象的蓝图,生成对象的模板,是对一类事物的描述,是抽象的概念上的定义
对象:
对象是实际存在的该类事物的每个个体,因而也称为实例
类之间的3种关系
依赖关系(uses-a)
聚集关系(has-a)
继承关系(is-a)
一个java源文件可以写多个类吗但必须只能有一个公有类,并且文件名和公有类的类名相同。
类中有成员
有属性(数据域),方法,构造器(构造方法)
构造方法和普通方法的区别
构造方法没有返回值,方法名必须和类名相同,需要用new语句调用构造方法。
一个构造器调用另外一个构造器需要用this()语法调用另外一个重载构造器,需要注意的是调用语句必须是构造器中的第一句
实例成员和静态成员的区别
实例成员:
是属于对象实例的,用对象.成员名称语法调用
静态成员:
和对象实例无关,是属于类本身的,用类名.成员名称语法调用
静态初始化块statci{}的执行时机是在类被加载的时候,仅执行一次。
静态方法不可以直接调用同一个类中的非静态方法,静态方法不能直接调用一个非静态成员,需要用对象调用。
局部变量和全局变量的区别
区别
局部变量
全局变量
声明位置
方法或块内部
方法外类内部
访问权限修饰符
没有访问权限
有访问权限
默认值
没有默认值
有默认值
使用形式
直接使用
对象调用
作用域
在方法或语句块内部
整个类
生命周期
进入方法或语句块创建退出方法或语句块销毁
随着对象的创建而创建随着对象的销毁而销毁
私有成员能被子类继承但是由于访问权限的控制,在子类中不能直接使用父类的私有成员
java中是单继承,一个子类只能有一个父类
访问权限修饰符访问的范围
private:
私用只能在被类中被访问
default:
默认只能被同一个包中的类访问
protected:
受保护的只能被同一个包中的类和不同包中的子类访问
public:
公有可以被任何类访问
覆盖方法的规则
子类覆盖方法和父类被覆盖方法的方法返回类型,方法名称,参数列表必须相同
子类覆盖方法的访问权限必须大于等于父类的方法的访问权限
方法覆盖只能存在于子类和父类之间
子类覆盖方法不能比父类被覆盖方法抛出更多异常
参数列表是否相同从三方面看:
参数个数,类型和顺序,需要注意的是参数的名字不相同是无所谓的
覆盖方法的规则
方法名相同
方法的参数类型,个数,顺序至少有一项不同
方法的返回类型和修饰符均不受限制
this和super作用
this:
本身代表当前的对象引用,可以用this.成员名称调用当前对象的属性和方法,如果属性和局部变量重名,可以用this.属性名和局部变量区分开。
也可以用this()语法调用本类重载构造器。
super:
本事是一个特殊关键字,可以用super.成员名称调用从父类继承的属性和方法,也可以用super()语法调用父类构造器。
当子类构造器中没有任何显式构造器调用的时候,即既没有this()调用也没有super()调用的时候
多态对象特点
多态对象只能使用父类的成员,但如果多态对象使用了被子类覆盖的方法,则会动态绑定使用子类的成员,称为虚拟方法调用
引用类型之间的类型转换需要遵循规则
自动转换:
从子类到父类的类型可以自动转换
强制转换:
从父类到子类的类型要强制转换
无继承关系的类型转换是非法的
instanceof操作符作用
可以判断一个对象的类型是否是某一个类的类型或子类,也可以判断这个对象的类型是否是一个接口的实现类
toString方法在打印语句中传入引用类型的对象或者对象和字符串作连接时
默认的equals方法实现的是比较引用地址
覆盖equals方法和hashCode方法规则
必须保证当两个对象equals比较为true的时候,返回的hashCode相同,当比较为false的时候,返回的hashCode不同
java中包装类
有8个包装类,正好对应8种基本数据类型。
分别是:
BooleanByteShortIntegerLongCharacterFloatDouble
使用了final修饰符特点
final修饰符可以修饰类,方法,变量
final类为最终类,不能被子类继承
final方法为最终方法,不能被子类覆盖
final变量为常量,只能赋一次值
使用了abstract修饰符特点
abstract修饰符可以修饰类和方法
abstract类为抽象类,是不能创建对象的
abstract方法为抽象方法,只有方法的声明,没有具体的实现
需要注意的是:
有抽象方法的类一定是抽象类
抽象类不一定有抽象方法
抽象类也有构造器,但不能创建对象实例
abstract不能和private,static,final一起使用
泛型的主要特点是类型参数化,后期绑定数据类型
接口中的成员特点
数据域必须是(publicstaticfinal修饰)公有静态常量
方法必须是(publicabstract修饰)公有抽象
没有构造方法
接口和类的关系
接口和类之间是实现关系,一个类用implements语句实现了某接口,这个类被称为接口的实现类,一个类可以实现多个接口,一个类实现了某接口,必须覆盖这个接口中的所以方法,否则这个类必须是个抽象类
接口和接口的关系
接口和接口之间是继承关系,一个接口用extends继承另外一个接口,称为这个接口的子接口。
一个接口可以继承多个父接口
内部类定义
一个类声明在另一个类的里面,这个类就被称为内部类,而外面的类被称为外部类
实例内部类:
声明在方法外边没有static修饰符
静态内部类:
声明在方法外边有static修饰符
局部内部类:
声明在方法里边
在实例内部类中可以直接使用外部类的成员,不需要创建外部类的对象实例,但是如果在内部类中的成员名称屏蔽隐藏了外部类的成员(即外部类和内部类的成员名相同),则需要用“外部类名.this.成员名”访问外部类成员
获得一个类型的Class对象
方法1:
对象.getClass()
方法2:
类型名.class
方法3:
Class.forName()
字符串的常用方法
charAt方法:
可以返回指定位置的字符
substring方法:
可以截取子字符串
length方法:
返回字符串长度
indexOf方法:
查找子串的位置
lastIndexOf方法:
反向搜索字串的位置
replaceAll方法:
替换字符串
split方法:
分解字符串
toLowerCase,toUpperCase方法:
字符串大小写转换
StringBuffer类和String类区别
StringBuffer是可变类,String是不可变类
StringBuffer类和StringBuilder类区别
StringBuffer类是线程安全的,StringBuilder类是线程不安全的
Set集合和List集合区别
Set:
Collection的子接口,不记录元素的保存顺序,且不允许有重复元素
List:
Collection的子接口,记录元素的保存顺序,且允许有重复元素
ArrayList和LinkedList不同
ArrayList的内部实现是基于内部数组Object[],所以从概念上讲它更像数组
LinkedList的内部实现是基于一组连接的记录,所以它更象一个链表结构,所以它们在性能上有很大的差别。
ArrayList随机访问比较块,但插入和删除元素比较慢
LinkedList但插入和删除元素比较快,但随机访问比较慢
HashTable和HashMap不同
HashTable是线程安全的,HashMap是线程不安全的
Vector和ArrayList不同
Vector是线程安全的ArrayList是线程不安全的
流按照单位划分分成字节流和字符流。
按输入输出分成输入流和输出流
和文件流相关的类
FileInputStream文件输入字节流
FileOutputStream文件输出字节流
FileReader文件输入字符流
FileWriter文件输出字符流
文件流操作如果是纯文本文件应该用字符流如果是二进制文件应该用字节流
创建一个线程类的两种方式
继承Thread类
实现Runnable接口
线程体应该放在run方法方法里面
启动新的线程用start方法
一个线程方法只能start一次
线程主要状态
有四种,分别是:
新生状态,可运行状态,阻塞状态,死亡状态
HTTP:
客户端请求和回应标准协议,输入地址和端口号可从服务器上取得所需要网页信息
HTML元素概览
主窗体元素、字符风格控制元素、版面控制元素、标题元素、链接元素、表格元素、表单元素、框架元素
Javascript基本语法:
采用
也可将javascript代码单独定义成*.js文件,再导入相关页面
变量声明:
var,变量类型根据赋予具体内容来决定
Javascript中程序分三种结果:
顺序结构、分支结构、循环结构
函数:
functionfunctionName(parameter1,parameter2...){
[returnvalue];
}
数组:
vararr=newArray(3);
事件处理:
事件处理围绕函数展开,一旦发生事件后,会根据事件类型调用相应函数
使用正则表达式验证:
/正则表达式/.test(验证内容)
xml(extendedmarkuplanguage)——提供了一套跨平台,跨网络、跨程序的语言的数据描述方式,可实现数据交换,系统配置、内容管理等功能
与HTML区别,都由SGML(standardgeneralmarkuplanguage)发展而来,html中的元素都是固定的且以显示为主,xml中标记由用户自定义,主要以保存数据为主
所有的xml文件都由前导区与数据区2部分组成
前导:
version、encoding、standalone
数据区:
所有的数据区必须有一个根元素,一个根元素下存放多个子元素,但要求根元素必须有完结,每一个标记区分大小写;
xml定义的属性必须使用"";
[[CDATA[不解析内容]]>
xml解析:
利用程序按照元素定义名称取出对应内容
常用解析方式——SAX、DOM
DOM(DocumentObjectModel)
通过DOM接口应用程序可在任意时候访问xml文档的任何一部分数据,也称随机访问机制,DOM分析器把整个xml文档转化成DOM树放在内存中,因此DOM访问对机器性能要求较高;
DOM解析中4个核心接口
(1)Document:
代表整个xml文档,表示整棵树的根
(2)Node:
在DOM树中,每一个Node接口代表了DOM树中的一个节点
(3)NodeList:
表示一个节点的集合
(4)NamedNodeMap:
表示一组节点和其唯一名称对应的一一对应关系,主要用于属性节点的表示
DOM解析步骤:
DocumentBuilderFactory--》DocumentBuilder--》Document--》NodeList
SAX(SimpleAPIsforXML)
采用一种顺序的模式访问,一种快速读取XML数据的方式,使用SAX解析首先应编制一个SAX解析器,再直接定义一个类,并使该类继承DefaultHandler类
SAX采取部分读取方式,所以可处理大型文件
JSP基础语法
JSP注释
格式1:
//
格式2:
/* */
格式3:
<%--content--%>
显示注释:
--content-->
Scriptlet
(1)<%%>定义局部变量,编写语句
(2)<%!
%>定义全局变量、方法、类
(3)<%=%>输出一个变量或一个具体的常量,与out.println()比较,使用前一种可以达到HTML与Java代码分离作用
Page指令:
定义jsp页面相关属性
语法:
<%@page属性="内容"%>
pageEncoding与contentType设置编码区别:
pageEncoding指的是JSP文件本身编码,而contentType中的charset指的是服务器发送给客户端的编码
错误页的设置:
(1)指定错误出现时的跳转页,通过errorPage指定
(2)错误处理页必须有明确的标识,通过isErrorPage确定
数据库连接操作
page指令中使用import导入Java开发包,直接使用此属性将java.sql包导入
包含指令
将工具栏(导航栏)、页面头部、页面尾部分别做成一个文件,然后再需要的地方导入(包含)
(1)静态包含:
在JSP编译时插入一个包含文本或代码的文件(先包含后集中编译)
语法:
<%@includefile="url"%>
(2)动态包含:
可以自动区分被包含的页面是静态还是动态,静态页面则将内容包含进来,动态页面则先进行动态处理,在将结果包含进来
语法:
includepage="{要包含的路径|<%=表达式%>}"flush="true|false"> paramname="参数名称"value="参数内容"/> include> 区别: 一般推荐使用动态包含,避免重复变量问题,还可进行页面间参数传递 跳转指令 将一个用户请求从一个页面传递到另外一个页面 forwardpage="{要包含的路径|<%=表达式%>}"flush="true|false"> paramname="参数名称"value="参数内容"/> forward> JSP内置对象概览 pageContext—JSP的页面容器 request—得到用户的请求信息 response—服务器向客户端的回应信息 session—用来保存每一个用户的信息 application—表示所有用户共享的信息 4种属性范围 page: 只在一个页面中保存属性,跳转之后无效 request: 只在一次请求中保存,服务器跳转后依然有效 session: 在一次回话范围中保存,无论何种跳转都可以使用,但新开浏览器无法使用 application: 在整个服务器上保存,所有用户都可使用 接受请求参数: 单一参数——getParameter() 一组参数——getParameterValues() 地址重写方式传递 语法: 动态页面地址? 参数名称1=参数内容1&参数名称2=参数内容2&... 表单提交get与post区别: 使用get提交时提交内容会显示在地址栏之后;而使用post提交,提交内容不会显示在地址栏上,直接输入地址访问页面本身属于get提交方式,post只是应用在表单上的操作 显示全部头部信息 头信息: 请求和回应的同时也会包含的一些其他信息(如客户端的IP、Cookie、语言等),此额外信息称头信息 角色验证: 修改tomcat-users.xml文件、修改web.xml文件 在request中还可以取得客户端ip地址、访问路径信息、提交方式等 response对象 主要作用对客户端进行回应、将web服务器处理后的结果发回给客户端 (1)设置头信息: response.setHeader("refresh","2;URL=xxx.xxx"),在html中可实现同样功能 (2)页面跳转: response.sendRedirect("xxx.xxx") 区别服务器端跳转和客户端跳转: 服务器跳转,执行到跳转语句时立即跳转;客户端跳转则是在整个页面执行完之后才执行跳转 操作Cookie 浏览器所提供的一项技术,让服务器端的程序将一些只需保存在客户端或在客户端处理的数据放置在本地计算机中,不须通过网络的传输而提高了网页处理效率,减少服务器端负载;所有的cookie是由服务器端设置到客户端上去的 服务器为明确区分每一个客户端,会自动设置一个JSESSIONID用以表示用户唯一标识; 设置Cookie保存时间采用setMaxAge()方法 session对象 每一个session对象表示不同的访问用户 取得sessionid: session.getId() 可通过server.xml文件配置加入session保存操作 判断新用户session.isNew(),是通过cookie方式进行判断的 application对象 尽量使用this.getServletContext()来替代application对象 WEB安全性及config对象 存在于WEB-INF目录中的程序安全性最高,访问WEB-INF中的文件须在web.xml中进行映射配置 config对象 如果JSP文件想要通过初始化参数取得一些信息,则一定要在web.xml文件中完成映射 out对象 完成页面的输出操作,使用println()/print()输出信息 pageContext对象 表示一个页面的上下文,在标签编程中经常使用; JavaBean简介: 使用java语言开发放入一个可重用的组件,jsp开发中使用JavaBean减少重复代码,保持jsp代码开发简洁; web开发目录结构——WEB-INF/web.xml/classes/lib/tags/jsp/js/css/images; jsp中导入JavaBean——1.<%@pageimport="package"%> 2. useBeanid="实例化对象名称"scope="保持范围"class="包.类名称"/> 自动加载JavaBean—— \jsweb" reloadable="true"/> 设置属性: setProperty>——name: 对应 useBean>中声明的id属性,表示使用指定的JavaBean;property: 要操作的属性,“*”表示自动匹配 取得属性: getPropertyname="实例化对象名称(id)"property="属性名称"/> JavaBean保存范围 page: 保存在一页范围内,跳转后此JavaBean无效; request: 一个Javabean对象可以保存在一次服务器跳转的范围中 session: 在一个用户的操作范围中保存,重新打开浏览器时才会声明新的JavaBean; application: 在整个服务器上保存,服务器关闭时才会消失; smartUpload上传组件: smartUpload是由www.jspsmart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 基础 知识点 总结