Java复习第三篇

第一章、异常与异常处理
1-1、Java异常简介
 在程序中,异常可能由程序员没有预料到的各种情况产生,也可能由超出了程序员可控范围的环境因素产生,如用户的坏数据,试图打开一个根本不存在的文件等。在Java中,这种程序运行时可能出现的一些错误称为异常。异常是一个在程序执行期间发生的事件,它中断了正在执行的程序的正常指令流。

1-2、Java中使用try...catch..finally实现
(1)try-catch语句块

(2)finlly语句块

        完整的异常处理语句一定要包含finally语句,无论程序中有无发生异常,并且无论之前的try-catch语句块是否顺利执行完毕,都会执行finally语句。但是,在以下种特殊情况下,finally块不会被执行:

        ·在finally语句块中发生了异常。

        ·在前面的代码中使用了System.exit()退出程序。

        ·程序所在的线程死亡。

        ·关闭CPU。

1-4、练习题
下列关于 try-catch-finally 语句的描述中,错误的是(A )

A、try 语句可以独立存在

B、catch 块跟在 try 语句后面,它可以是一个或多个

C、catch 块有一个参数,该参数是某种异常类的对象

D、多重 catch 语句中,异常类型必须子类在前父类在后

1-5、Java中的异常抛出以及自定义异常
1,Java中的异常抛出

2,自定义异常

class自定义异常类 extends 异常类型{}

1-6、练习题
自定义异常类的父类可以是(C )

A、Error

B、VirtuaMachineError

C、Exception

D、Thread

1-7、Java中的异常链
1、异常链:有时候我们会捕获一个异常后再抛出另一个异常 顾名思义就是将异常发生的原因一个传一个串起来,即把底层的异常信息传给上层,这样逐层抛出。

1-8、练习题
下列关于异常的描述中,错误的是( D)

A、Exception 的父类是 Throwable

B、使用 try-catch-finally 语句捕获并处理异常

C、可以使用 throw 语句抛出异常

D、捕获到的异常只能用当前方法中处理,不能用其他方法处理

1-9、经验总结


第二章、认识Java中的字符串
2-1、什么是Java中的字符串
在程序开发中字符串无处不在,如用户登陆时输入的用户名、密码等使用的就是字符串。其实,在前面的章节中我们就已经使用了字符串,例如我们在控制台中输出的 "Hello World" 、 "imooc" 、"爱慕课"等。

在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。

创建 String 对象的方法:

2-2、Java中字符串的不变性
String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如下所示:

运行结果:

结合上面的代码,关于字符串小伙伴们必须需要了解滴:

1、 通过 String s1="爱慕课"; 声明了一个字符串对象, s1 存放了到字符串对象的引用,在内存中的存放引用关系如下图所示:

然后通过 s1="欢迎来到:"+s1; 改变了字符串 s1 ,其实质是创建了新的字符串对象,变量 s1 指向了新创建的字符串对象,如下图所示:

2、 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder(后面章节中会讲到)。

3、 每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法(前面条件运算符章节讲过哦~~)

2-3、Java中String类的常用方法1
String 类提供了许多用来处理字符串的方法,例如,获取字符串长度、对字符串进行截取、将字符串转换为大写或小写、字符串分割等,下面我们就来领略它的强大之处吧。

String 类的常用方法:

友情提示:

1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1

2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1

3. 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符

针对如此繁杂的方法,推荐大家一个学习技巧:好记性不如烂笔头!多看的同时一定要多敲哦~~

2-4、Java中的String类常用方法2
“==” 和 equals() 有什么区别

==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

equals(): 比较存储在两个字符串对象中的内容是否一致

PS:字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。所以我们看到上面的程序运行结果中,每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。

2-5、认识Java中的StringBuilder类
认识 Java 中的 StringBuilder 类

在Java中,除了可以使用 String 类来存储字符串,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串,那么它们之间有什么区别呢?

String 类具有是不可变性。如

从运行结果中我们可以看到,程序运行时会额外创建一个对象,保存 "helloworld"。当频繁操作字符串时,就会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。

那么如何定义 StringBuilder 类的对象呢? 我们来看下面的代码:

运行结果: imooc  

2-6、Java中的StringBuilder类的常用方法
StringBuilder 类提供了很多方法来操作字符串:

例如:在下面的示例代码中,创建了 StringBuilder 对象,用来存储字符串,并对其做了追加和插入操作。这些操作修改了 str 对象的值,而没有创建新的对象,这就是 StringBuilder 和 String 最大的区别。

2-7、练习题
下列关于字符串的叙述中错误的是(B )

A、字符串是对象

B、String 对象存储字符串的效率比 StringBuilder 高

C、字符串具有不变性

D、String 类提供了许多用来操作字符串的方法:连接、提取、查询等

第三章、Java中必须了解的常用类
3-1、Java中的包装类


包装类主要提供了两大类方法:

1. 将本类型和其他基本类型进行转换的方法

2. 将字符串和本类型及包装类互相转换的方法

我们将在后面的小节逐步讲解,表着急哦~~

3-2、Java中基本类型和包装类之间的转换


3-3、练习题
关于基本类型转换下面说法错误的是( C)

A、Integer 类型可以自动转化为 int 基本类型

B、int 类型对应的包装类是 java.lang.Integer

C、int 类型可以自动转化为 Long 类型

D、long 类型可以自动转化为 Long 类型

3-4、Java中基本类型和字符串之间的转换
在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。

其中,基本类型转换为字符串有三种方法:

1. 使用包装类的 toString() 方法

2. 使用String类的 valueOf() 方法

3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

再来看,将字符串转换成基本类型有两种方法:

1. 调用包装类的 parseXxx 静态方法

2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱

PS:其他基本类型与字符串的相互转化这里不再一一列出,方法都类似

3-5、练习题
下列关于基本类型包装类的叙述中错误的是( B)

A、每一个基本数据类型,都对应一个包装类

B、基本类型也可调用方法

C、包装类都在 java.lang 包中

D、包装类提供了在不同类型间进行转换的方法

3-6、使用 Date 和 SimpleDateFormat 类表示时间
在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类。这个类最主要的作用就是获取当前时间,我们来看下 Date 类的使用:

使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下:

其中, Wed 代表 Wednesday (星期三), Jun 代表 June (六月), 11 代表 11 号, CST 代表 China Standard Time (中国标准时间,也就是北京时间,东八区)。

从上面的输出结果中,我们发现,默认的时间格式不是很友好,与我们日常看到的日期格式不太一样,如果想要按指定的格式进行显示,如 2014-06-11 09:22:30 ,那该怎么做呢?

此时就到了 java.text 包中的 SimpleDateFormat 类大显身手的时候了!!可以使用 SimpleDateFormat 来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。

1. 使用 format() 方法将日期转换为指定格式的文本

代码中的 “yyyy-MM-dd HH:mm:ss” 为预定义字符串, yyyy 表示四位年, MM 表示两位月份, dd 表示两位日期, HH 表示小时(使用24小时制), mm 表示分钟, ss 表示秒,这样就指定了转换的目标格式,最后调用 format() 方法将时间转换为指定的格式的字符串。

运行结果: 2014-06-11  09:55:48   

2. 使用 parse() 方法将文本转换为日期

代码中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式,调用 parse() 方法将文本转换为日期。

运行结果: 

一定要注意哦:

1、 调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理

2、 使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text 包

3-7、Calendar 类的应用
Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理。

java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

那么如何使用 Calendar 获取年、月、日、时间等信息呢?我们来看下面的代码:

其中,调用 Calendar 类的 getInstance() 方法获取一个实例,然后通过调用 get() 方法获取日期时间信息,参数为需要获得的字段的值, Calendar.Year 等为 Calendar 类中定义的静态常量。

运行结果: 

Calendar 类提供了 getTime() 方法,用来获取 Date 对象,完成 Calendar 和 Date 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位。如下所示:

运行结果:

3-8、使用 Math 类操作数据
Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round();

常用的方法:

通过案例我们来认识一下他们的使用吧!!

运行结果:

第四章、Java中的集合框架(上)
4-1、Java中的集合框架概述
1、集合的概念:现实生活中:很多的事物凑在一起,数学中的集合:具有共同属性的事物的总体,Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象。

2、集合的作用

在类的内部,对数据进行组织;简单而快捷的搜索大量的条目;有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或删除有关元素;有的集合接口,提供了映射关系,可以通过关键字key去快速查找到对应的唯一对象,而这个关键字可以是任意类型。

4-2、Collection接口&List接口简介


4-3、学生选课--创建学生类和课程类
4-4、学生选课--添加课程1
4-5、学生选课--添加课程2
4-6、学生选课--课程查询
4-7、学生选课--课程修改
4-8、学生选课--课程删除
4-9、学生选课--应用泛型管理课程1
4-10、学生选课--应用泛型管理课程2
4-11、学生选课--通过Set集合管理课程
第五章、Java中的集合框架(中)
5-1、Map和HashMap


5-2、学生选课--使用Map添加学生
5-3、学生选课--使用Map删除学生
5-4、学生选课--使用Map修改学生
第六章、Java中的集合框架(下)
6-1、学生选课--判断List中课程是否存在
6-2、学生选课--判断Set中课程是否存在
6-3、学生选课--判断List中课程的位置
6-4、学生选课--判断 Map...
6-5、应用Collections.sort()...


6-6、学生选课--尝试对学生序列排序
6-7、Comparable&Comparator简介

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值