**前排提示,本知识点总结面向基于拥有一定C++基础的人,对于C++中重复的知识点一般以跳过为主,没有相关知识的建议另外补一补。
不出意外的话将在16号之前完成相关总结。
还是肝一点14号就写完吧。 **
由于是在个人word上写完直接复制过来的,格式上可能存在一些问题,过段后会腾出时间来优化一下排版。
~~ ~~
~~ ~~
第一章 Java概述
Java优点——跨平台,简单,面向对象,高效,多线程,资源免费,动态性,健壮、安全
SE——标准版 EE——企业版 ME——微型版
JDK(Java开发工具包)包含 JRE(Java运行时环境)包含 JVM(Java虚拟机), SDK(开发工具包)。
跨平台工作——编译器生成.class文件,再由虚拟机转成对应机器语言。
Java垃圾回收机制的特点——内存优化,动态回收,回收的不确定性,占用系统开销。
配置环境变量——JAVA_HOME= C:\Program Files\Java\jdk1.8.0_05
PATH=%JAVA_HOME%\bin
CLASSPATH=.;%JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib
tools.jar
程序编写——注意main函数写法:public static void main (String []args)
注释 单行注释://
多行:/*
*
/
文档:/*
*
*/
第二章 Java语言基础
Java默认采用UTF-16字符集
标识符——即我们平常所说的变量名
关于标识符的几个规则:
变量:基本与C++相同,
值得一提的是——Java用final关键字定义常量
——Int的长度为32位,16位的整型为short
几种引用类型——数组,类(class),接口,枚举(enum)。
堆,栈的区别——可以这样简单理解,堆用于动态分配(new),栈则反之;由于堆需在运行时动态分配内存,运行速度较慢,栈则相对较快。
值得一提的是——对象的引用是存放在栈中的。
——利用new能在堆中生成多个值相同但地址不同的String变量,而直接赋值生成的String变量会地址将会指向栈中的同一位置。
类型转换:
由低向高进行的自动类型转换——
强制类型转换——基本与C++相同。
操作符——几元操作符就是同时操作几个操作数,三元操作符可以以“ ? :”为例,其他基本与C++相同。
流程控制——分组,循环,转移(break,return等),基本同C++
数组:
几种初始化方法:int a[];
int a[] = {1, 2};
int a[] = new int[]{1, 2};(静态初始化方法)
int a[] = new int[2];(动态初始化方法)
使用new初始化数组后,数组会获得默认初值(一般为0,引用为null)
Foreach遍历方法——for(int e : a){ }
二维数组——基本同C++
第三组 面向对象基础
面向对象,即以事物对象为中心来思考、分析问题,并根据事物的本质特征将其抽象为系统中的对象,作为系统的基本构成单位。
定义:
对象——要进行研究分析的东西。
类——对象的抽象,由特征(变量,或者说属性)、行为(方法)组成
类之间的关系——与、或。
消息——其使对象之间进行通信。
方法——类的行为实现(这不是上面提过了?)
面向对象特征:
唯一性——即生成的每个对象都是唯一的,拥有自己的标识。
分类性——将具有一致属性和行为的对象抽象成类,只反映与应用有关的重要性质。
继承性——即能继承父类的属性与方法。
多态性——即相同的操作、过程可作用于多种类型的对象上并获得不同的结果。
类的声明、使用
参数传递:
提一下引用传递——由于Java中的引用类型为数组、类、枚举,不同于C++,Java中只要形参为引用类型就是引用传递(因为这三个东西本质上就是地址)。
构造方法——如果写的类没有构造方法,程序会自动提供一个缺省构造方法(class a = new class()这种不带参的),如果有的话这种方法将不在存在,想用需再写一个。
方法重载:三个原则
可变参数——使用实例
public static int add(int a, int… b) {
int sum = a; // 可变参数b被当成数组进行处理
for (int e : b) {
sum += e;
}
return sum;
}
使用注意事项:
包:
Java引入包(package)的机制,提供了类的多层命名空间,解决类的命名冲突、类文件管理等问题。
定义包——package mypackage;
注意:
访问控制符:private 缺省 protect public
Private——仅允许同类成员进行访问。
缺省——允许同一包中的其他类成员访问。
Protect——允许不同包中的子类进行访问。
Public——基本全都能用。
静态成员——类的静态变量和静态方法,在内存中只有一份,供所有对象共用,起到全局的作用。
对象数组——对象的数组化使用方法,使用方法与一般数组相差不大。
第四章 核心类
基本数据数据类型的封装类:
Byte——byte,Short——short,Integer——int ,Long——long
Character——char,Float——float,Double——double
Boolean——boolean
封装类可以直接进行赋值,如: Integer num = 10;
基本变量使用封装类的parseXxx方法对字符串进行转化为,如:
int num = Integer.parseInt(“132”);
相反,String类使用封装类的toString()方法或自身类的valueOf()方法来进行类型转换,如:String s2 = Integer.toString(100);
装箱:基本数据类型转换为对应封装类,
方法——int I = 1; Integer obj = I;(自动装箱)
装箱后数据由栈到堆。
拆箱:将封装类转换为对应基本数据类型
方法——Integer obj = 10; int I = obj;(自动拆箱)
拆箱后数据由堆到栈。
基本类型与其对应封装类之间能够自动进行转换,其本质是Java的自动装箱和拆箱过程。
以下介绍几种常见核心类及其常用方法。
Object类——所有类的顶级父类(即它的方法所有类都可以调用)
equals()方法——用于比较两个对象的内容是否相同
toString()方法——值得一提的是,在使用System.out.println()方法时,会自动调用toString方法,也就是说,如果你自己重写了toString()方法,在println()的时候会输出你重写的内容。
例:
public String toString() {
return this.bookName + “,¥” + this.price + “,” + this.publisher + “,ISBN:” + this.isbn;
}
测试类Demo:
Book b1=new Book(“《Java SE 8应用开发》”,98,“科学出版社”,“978-1-211-66889-8”);
System.out.println(b1);
最后结果将会输出——《Java SE 8应用开发》,¥98.0,科学出版社,ISBN:978-1-211-66889-8。
字符串类——String StringBuffer StringBuilder(引用类型)
String创建的字符串不可变,即为其赋新值的时候,会另寻一块空间存放新值,原值不会消失。
StringBuffer创建的对象可变,可使用append()、insert()、setCharAt()等方法进行改变,其引用地址不会发生变化。
StringBuilder相比StringBuffer没有实现线程安全,性能较好。(?不是很理解)
常用方法:
char charAt(int index)——获取指定位置字符
boolean endWith(String s)——判断是否以s结尾
int indexOf(String s)——s第一次出现的位置
int length——字符串长度
String subString(int begin, int end)——获取从begin到end的字符串
另外两个类就不提了,这种基本翻手册用的类要考的话就离谱,下面要提到的大多类也是如此。
Scanner类
注意读取字符串用next()方法,其他类型用nextXxx()方法。
注意!next()方法遇到空格时停止读取,想要读取整行需要使用nextLine()方法,但nextLine()因为是遇到换行符就停住读取的,使用时要小心(就像是C++中的cin 和 getline),这里有一个比较经典的例子—— https://blog.csdn.net/superme_yong/article/details/80543995.
创建对象——Scanner sc = new Scanner(System.in);
Math类
abs(double a)
ceil(double a)向上取整
floor(double a)向下取整
round(double a)四舍五入
random()返回[0,1)的随机数
第五章 类之间的关系
类之间的六种关系——继承、实现、依赖、关联、聚合、组成。
继承——每个类只能有一个父类,但可以有多个子类
实现——类实现接口的方法
依赖——在一个类的方法中操作另外一个类的对象,这种情况称之为第一个类依赖于第二个类。
关联——在一个类中使用另外一个类的对象作为该类的成员变量,这种情况称之为关联关系。(比依赖关系更紧密)
聚合——表现为一个类(整体)由多个其他类的对象(部分)作为该类的成员变量,其生命周期是分离的。
组成——比聚合关系要求更高的一种关联关系,其生命周期是一致的。
方法重写的几大规则(子类改造父类中的方法):
super关键字的用途——在子类的构造方法中调用父类的构造方法;在子类方法中访问父类的属性或方法。
final关键字——修饰方法时表示该方法不可被重写,修饰类时表示该类不可被继承。
第六章 抽象类与接口
抽象类的定义——普通类访问符后(public)加abstract
抽象类、抽象方法的定义规则:
abstract关键字放在class前,指明该类是抽象类;
abstract关键字放在方法的返回类型前,指明该方法是抽象方法,抽象方法没有方法体;
抽象类不能被实例化 即无法使用new关键字直接创建抽象类的实例,即使抽象类中不包含抽象方法也不行;
一个抽象类中可以含有多个抽象方法,也可以含有已实现的方法;
抽象类可以包含成员变量以及构造方法,但不能通过构造方法创建实例,可在子类创建实例时调用;
定义抽象类有三种情况:直接定义一个抽象类;或继承一个抽象类,但没有完全实现父类包含的抽象方法;或实现一个接口,但没有完全实现接口中包含的抽象方法。
接口——允许一个类多个继承
语法上的几个注意点:
接口间的继承:
interface InterfaceC extends InterfaceA, InterfaceB { ……}
类继承接口:
public class InterfaceExtends implements InterfaceC, InterfaceD{……}
接口是完全抽象的——只有方法但没有具体实现过程;与之相比,抽象类可以实现自己的方法。抽象类体现的是一种模版式设计。抽象类可以被当成系统实现过程中的中间产品.
接口和抽象类都不能被实例化,需要被其他类实现或继承;
接口和抽象类的类型变量都可以指向其实现类或子类的实例对象;
接口和抽象类都可以包含抽象方法,实现接口或继承抽象类时都必须实现这些抽象方法
instanceof关键字
用法:引用类型变量 instanceof 引用类型
其将返回一个逻辑判断结果。
第七章 异常
异常的两种类别:
错误(Error)——一般指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或捕获,将导致应用程序中断;
异常(Exception)——因程序编码错误或外在因素导致的问题,这些问题能够被系统捕获并进行处理,从而避免应用程序非正常中断,例如:除以0、对负数开平方根、空指针访问等。
其中,异常又分为检查性异常(不解决无法通过编译)和非检查性异常(编译器不要求强制处置的异常)。
两种异常处理机制:使用try…catch捕获异常和使用throws声明抛出异常。
异常处理机制的优点:
异常处理代码和正常的业务代码分离,提高了程序的可读性,简化了程序的结构,保证了程序的健壮性;
将不同类型的异常进行分类,不同情况的异常对应不同的异常类,充分发挥类的可扩展性和可重用性的优势;
可以对程序产生的异常进行灵活处理,如果当前方法有能力处理异常,就使用try…catch捕获并处理;否则使用throws声明要抛出的异常,由该方法的上一级调用者来处理异常。
异常捕获的语法:
try {
//业务实现代码(可能发生异常)
…
}
catch (Exception e) {
e.printStackTrace();
}
catch (异常类2异常对象) {//异常类2的处理代码
}
…//可以有多个catch语句
catch (异常类n 异常对象) {//异常类n的处理代码
}
finally {//资源回收语句
}
thorw 与throws关键字
throw:
throw语句抛出的不是异常类,而是一个异常实例对象,并且每次只能抛出一个异常实例对象
例:throw new Exception(“请输入一个合法的年龄”);
throws:
throws抛出一个异常序列,其只能在定义方法时使用。
例:public void myFunction() throws IOException,Exception{ }
第八章 泛型与集合(仅做一般了解,故不在此展开)
第一章 HTML语言基础
HTML开始就全是新知识了,会额外增加一些重点标记。
编写HTML文件的注意事项:
HTML不区分大小写,而XHTML区分大小写;
HTML标签的属性与属性值;
HTML中的空格;
HTML中的注释;
标签可以嵌套使用。
HEAD元素——向浏览器提供了页面的基本信息
子元素:
title元素——用于在浏览器标题栏中显示标题
meta元素——向客户的浏览器传递信息和指令
标签主要分为两大类:
对页面的设置,通过http-equiv属性进行指定
对搜索引擎的设置,通过name属性进行指定
例:
文本元素:
标题标签
特殊字符——以 & 开头的实体引用,如 代表空格
文档结构元素:
段落标签
。当浏览器解析
标签时,通常在下一个段落之前插入一个新的空白行。
标签,可以在文本内容不结束的情况下需要对文本进行换行。
列表元素:
有序列表:
无序列表——前缀显示为符号的列表
定义列表——一种标题(dt)与描述(dd)成对出现的列表
例:
dib与span标签:
块级元素
标签属于行内块,用于指定行内元素
通过标签来选择特定的文本,以便赋予特殊的样式;
即span标签通常用于选定特定文本进行样式设置
URL简介:
URL包含3个关键部分:协议、主机地址和文件路径
绝对路径——文件存放的完整路径
如:http://www.itshixun.com/movie/index.html
相对路径——更为简洁的路径访问
相对路径的访问方式有以下几种形式:
同一目录
子目录
父目录
根目录
图像标签——
alt属性的值将会在图片无法加载时作为替代出现。
超链接标签——链接内容
标签的title属性用于给链接添加标题,当鼠标悬停在超链接之上时,会提供该链接的更多相关信息。
例:列表示例
文本连接与锚点连接
通过设置标签的id来设置锚点
例:锚点位置
链接到锚点
图片链接与图片热区链接:
图片链接——在标签前后设置标签
例:
图片热区标签——同一个图片中不同的部分链接到不同的目标位置
通过标签定义映射,再使用标签设置独立链接
例:
超链接的target属性—— 指定新窗口的打开方式
例:打开目标链接(在新窗口中打开)
第二章 表格(重点)
表格
表格的组成——
常用属性: 属性 取值 描述 align left、center、right 设置表格相对周围元素的对齐方式 bgcolor rgb(x,x,x)、#xxxxxx、colorName 设置表格的背景颜色 border 像素 设置表格边框的宽度 cellpadding 像素或百分比 设置单元格与其内容之间的距离 cellspacing 像素或百分比 设置单元格之间的距离 height 像素或百分比 设置表格的高度 width 像素或百分比 设置表格的宽度 rules none、groups、rows、cols、all 设置表格中的表格线显示方式,默认是all frame void、above、below、hsides、vsides、lhs、rhs、box、border 设置表格的外部边框的显示方式 |
---|
例:
姓名 | 电话 |
单元格标签——td(数据),th(标题)
属性:
属性 描述
align 设置单元格内容的水平对齐方式:left、center、right、justify
valign 设置单元格内容的垂直对齐方式:top、middle、bottom、baseline
rowspan 设置单元格跨越的行数
colspan 设置单元格跨越的列数
width 设置单元格的宽度
height 设置单元格的高度
bgcolor 设置单元格的背景颜色
重点关注align, rowspan, colspan属性
行标签——tr
常用属性:
属性 描述
align 设置单元格内容水平对齐方式:left、center、right、justify
bgcolor 设置单元格的背景颜色
bordercolor 设置行内单元格的边框颜色
第三章 表单(重点)
Form表单是HTML的一个重要部分,负责采集和提交用户输入的信息。
表单标签——一个包含表单元素的区域
如: