查看: 2769|回复: 0

[PHP实例] 《Java入门第三季》总结

发表于 2018-3-13 08:00:11

------java异常简介------
异常:有异于常态,和正常情况不一样,有错误出现。阻止当前方法或作用域,称
之为异常
Throwable
-Error:--VirtualMachineError(虚拟机错误)、--ThreadDeath(线程死锁)
-Exception:编码、环境、用户操作输入出现问题
--RuntimeException(非检查异常)
---空指针异常
---数组下标越界异常
---类型转换异常
---算术异常
--检查异常
---文件异常
---SQL异常

------java使用try...catch...finally实现异常处理------
try-catch以及try-catch-finally

语法:
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}
出现异常后的过程:程序终止执行-程序的控制权将移交给catch块中的异常处理程
序-继续执行try-catch语句后的代码。
注意:当try会抛出很多种类型的异常时,使用多重catch块语法

多重catch块语法:
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}catch(Exception2 e){
//处理Exception2的代码块
}...(n个catch块)...{
}
注意:catch顺序应该先子类后父类

try-catch-finally语法:
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}catch(Exception2 e){
//处理Exception2的代码块
}...(n个catch块)...{
}finally{
//最终将要执行的一些代码
}

------java中的异常抛出以及自定义异常------
throw-将产生的异常抛出(动作)
throws-声明将要抛出何种类型的异常(声明)
public void 方法名(参数列表)
throws 异常列表{
//调用会抛出异常的方法或者:
throw new Exception();
}

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

}

------java中的异常总结------
1处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
2在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
3对于不确定的代码,也可以加上try-catch,处理潜在的异常
4尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出
5具体如何处理异常,要根据不同的业务需求和异常类型去觉定
6尽量添加finally语句块去释放占用的资源

------java中的字符串------
创建String对象的方法:
String s1="imooc";//创建一个字符串对象imooc,名为s1
String s2=new String();//创建一个空字符串对象,名为s2
String s3=new String("imooc");//创建一个字符串对象imooc,名为s3

------java中字符串的不变形------
String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。
多次出现的字符常量,java编译程序只创建一个
1、 通过 String s1="爱慕课"; 声明了一个字符串对象, s1 存放了到字符串对象的引用,然后通过 s1="欢迎来到:"+s1; 改变了字符串 s1 ,其实质是创建了新的字符串对象,变量 s1 指向了新创建的字符串对象
2、 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder
3、 每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法

------java中String类的常用方法1------
图片描述
用法
运行结果

字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符

------认识java中的StringBuilder类------
当频繁操作字符串时,就会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。
语法:
StringBuilder str1=new StringBuilder();//创建一个空的StringBuilder对象
StringBuilder str2=new StringBuilder(“imoooc”);//创建一个字符串”imooc”
System.out.println(str2);
运行结果:
Imooc

------Java 中的 StringBuilder 类的常用方法------

图片描述
------java中的包装类------
为了让基本数据类型也具备对象的特性, 比如基本类型不能调用方法、功能简单。Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。
图片描述
包装类主要提供了两大类方法:

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

将字符串和本类型及包装类互相转换的方法
基本类型和包装类之间的对应关系:
图片描述
图片描述

------java中基本类型和包装类之间的转换------
在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱
Int i=10;//定义一个int基本类型值
Integer x=new Integer(i);//手动装箱
Integer y=I;//自动装箱

拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱
Integer i=new Integer(8);//定义一个Integer包装类对象,值为8
Int m=j.intValue();//手动拆箱为int类型
Int n=j;//自动拆箱为int类型

------java中基本类型和字符串之间的转换------
基本类型转换为字符串有三种方法:

使用包装类的 toString() 方法 使用String类的 valueOf() 方法 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串
Int c=10;
String str1=Integer.toString(c);//方法一
String str2=String.valueOf(c);//方法二
String str3=c+” ”;//方法三

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

调用包装类的 parseXxx 静态方法 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱
String str=”8”;
int d=Integer.parseInt(str);//方法一
int e=Integer.valueOf(str);//方法二

------使用Date和SimpleDateFormat类表示时间------
java.util包中的Date类,获取当前时间
Date d=new Date();//使用默认的构造方法创建Date对象
System.out.println(d);//
显示的结果:
Web Jun 11 09:22:30 CST 2014
这样的显示不太友好,可以使用java.text包中的SimpleDateFormat类来对入去时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。
1使用format()方法将日期转换为指定格式的文本
//创建Date对象,表示当前时间
Date d=new Date();
//创建SimpleDateFormat对象,指定目标格式
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
//调用format()方法,格式化时间,转换为指定格式字符串
String today=sdf.format(d);
//输出转换后的字符串
System.out.println(today);
运行结果:2108-03-05 14:57:32

2使用parse()方法将文本转换为日期
//创建日期格式的字符串
String day=”2014年02月14日 10:30:25”;
//创建SimpleDateFormat对象,指定字符串的日期格式
SimpleDateFormat df=new SimpleDateformat(“yyyy年MM月dd日 HH:mm:ss”);
//调用parse()方法,将字符串转换为日期
Date date=df.parse(day);
//输出转换后的时间
System.out.println(“当前时间:”+date);
运行结果:
当前时间:Fri Feb 14 10:30:25 CST 2014

注意:
1、 调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理
2、 使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text 包

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

java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();
图片描述
Calendar.Year 等为 Calendar 类中定义的静态常量。
运行结果:
当前时间:2018-3-5 15:46:22

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

------使用Math类操作数据------
Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round();
常用方法:
图片描述
要随机产生[0,99)之间的随机整数的话就
int y =(int)(Math.random()*99);

------java中的集合框架概述------
Java中的集合类:是一种工具类,就像是容器,储存任意数量的具有共同属性的对象

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

与数组的对比
1数组的长度固定,集合长度可变
2数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象

Java中的集合
Collection:List(序列){ArrayList(数组序列),LinkedList(链表)}, Queue(队列){LinkedList(链表)} ,Set(集){HashSet(哈希集)}
Map(以这种方式存储 Entry(键值对)):{HashMap(哈希表)}

------Collection接口&List接口简介------
Collection接口
1是List、Set和Queue接口的父接口
2定义了可用于操作List、Set和Queue的方法——增删改查

List接口及其实现类——ArrayList
1List是元素有序并且可以重复的集合,被称为序列
2List可以精确的控制每个元素的插入位置,或删除某个位置元素
3ArrayList——数组序列,是List的一个重要实现类
4ArrayList底层是由数组实现的

------应用泛型管理课程1------
集合中的元素,可以是任意类型的对象(对象的引用)
如果把某个对象放入集合,则会忽略他的类型,而把他当做object处理
泛型则是规定了某个集合只可以存放特定类型的对象
会在编译期间进行类型检查
可以直接按指定类型获取集合元素

------应用泛型管理课程2-----
1泛型集合中的限定类型不能使用基本数据类型
2可以通过使用包装类限定允许存入的基本数据类型

------通过set集合管理课程------
Set接口及其实现类——HashSet
1Set是元素无序并且不可以重复的集合,被称为集
2HashSet——哈希集,是Set的一个重要实现类

------Map和HashMap------
Map接口:
1Map提供了一种映射关系,其中的元素是以键值对(Key-value)的形式存储的,能够实现根据key快速查找value
2Map中的键值对以Entry类型的对象实例形式存在
3键(key值)不可重复,value值可以
4每个键最多只能映射到一个值
5Map接口提供了分别返回key值集合,value值集合以及Entry(键值对)集合的方法
6Map支持泛型,形式如:Map

HashMap类:
1HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现
2HashMap中的Entry对象是无序排列
3key值和value值都可以为null,但一个HashMap只能有一个key值为null映射(key值不可重复)



回复

使用道具 举报