- 视频+资料(工程源码、笔记)【链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs】
- Java基础--学习笔记(零起点打开java世界的大门)--博客汇总表
目 录
01_基本类型包装类
5.1、基本类型包装类概述
02_Integer
5.2、Integer类的概述和使用
03_int和String的相互转换
5.3、int和String的相互转换
04_字符串中数据排序
案例:字符串中数据排序
05_自动装箱和拆箱
5.4、自动装箱和拆箱
06_Date
6.1、Date类概述和构造方法
07_Date常用方法
6.2、Date类的常用方法
08_SimpleDateFormat
6.3、SimpleDateFormat类概述
6.4、SimpleDateFormat构造方法
6.5、SimpleDateFormat格式化和解析日期
09_日期工具类
案例:日期工具类
10_Calendar
6.6、Calendar类概述
11_Calendar常用方法
6.7、Calendar的常用方法
12_二月天
案例:二月天
13_异常
1.1、异常概述
14_JVM的默认处理方案
1.2、JVM的默认处理方案
15_异常处理之try...catch
1.3、异常处理
1.4、异常处理之try...catch...
16_Throwable的成员方法
1.5、Throwable的成员方法
1、getMessage() 返回Throwable的详细消息字符串
2、toString() 返回此可抛出的简短描述
3、printStackTrace() 把异常的错误信息输出在控制台
17_编译时异常和运行时异常的区别
1.6、编译时异常和运行时异常的区别
1、运行时异常
2、编译时异常
18_异常处理之throws
1.7、异常处理之throws
19_自定义异常
1.8、自定义异常
1.9、throws和throw的区别
打印的是“100",而不是地址信息。说明: lnteger重写了toString()方法。
不是数字组成的字符串,会出现“NumberFormatException”的问题。
int转换为String
- 方式一:直接在数字后加一个空字符串 【String s1 = number + "";】
- 方式二:通过String类静态方法valueOf() 【String s2 = String.valueOf(number);】
String转换为int
- 方式一:先将字符串数字转成Integer,再调用valueOf()方法【Integer i = Integer.valueOf(s); int x = i.intValue();】
- 方式二:通过Integer静态方法parseInt()进行转换 【int y = Integer.parseInt(s);】
package com.itheima_03; import java.util.Arrays; public class IntegerTest { public static void main(String[] args) { //定义一个字符串 String s = "91 27 46 38 50"; //把字符串中的数字数据存储到一个int类型的数组中 String[] strArray = s.split(" "); for(int i=0; i
package com.itheima_04; /* 装箱:把基本数据类型转换为对应的包装类类型 拆箱:把包装类类型转换为对应的基本数据类型 */ public class IntegerDemo { public static void main(String[] args) { // 装箱:把基本数据类型转换为对应的包装类类型 Integer i = Integer.valueOf(100); // 装箱 Integer ii = 100; // 自动装箱 底层:Integer.valueOf(100); // 拆箱:把包装类类型转换为对应的基本数据类型 ii += 200; // ii = ii + 200; // ii = ii.intValue() + 200; // 自动装箱:基本数据类型自动赋值给引用类型Integer // // ii.intValue():拆箱 引用类型变为基本类型 // ii = i + 200; // 内部隐含自动拆箱、自动装箱操作 System.out.println(ii); Integer iii = null; // iii += 100; // iii先调用intValue()方法 NullPointerException // 引用数据类型,在使用之前,最好先做是否为null的判断 if (iii != null) { iii += 100; } } }
图示的Date类,在java.sql包下,将学习的Date类在java.util包下。
在搜索框中输入类名的时候,在一般情况下,只有一个包下有这个类,但是也会存在 有多个包下有这个类。
Date构造方法
Calendar 为特定瞬间(某一时刻)与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象,该方法返回一个Calendar 对象。
其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance()
使用“static”修饰的日历字段,可以通过类名直接访问。
抽象类,不能直接创建对象(实例化)。构造方法,可以用于子类访问父类数据的初始化。
成员方法,大部分都没有使用“static”修饰,需要通过对象来使用。
java.util.GregorianCalendar[time=1596087518361,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=6,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=212,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=38,SECOND=38,MILLISECOND=361,ZONE_OFFSET=28800000,DST_OFFSET=0]
ERROR:一个Error是的子类Throwable表示严重的问题,合理的应用程序不应该试图捕获。
程序出现ERROR情况,一般来说Java程序是无能为力的,比如说:硬件层面的问题、内存资源不足。针对ERROE问题,一般不处理。
检查异常:编译期间就必须处理的异常,否则程序不能通过编译。
RuntimeException及其子类是未经检查的异常 。编译期间,不需要检查,出现问题后,需要修改代码。
如果程序出现了问题,我们没有做任何处理,最终JVM 会做默认的处理,处理方式有如下两个步骤:
- 把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
- 程序停止执行
为什么要学习自己处理异常?Java虚拟机的默认处理方案,会让程序在出现问题的地方直接结束。而在程序开发中,程序某一个部分出问题了,不应该影响后续程序的执行,所以要自己处理异常。
如果程序出现了问题,我们需要自己来处理,有两种方案:
- try ... catch ...
- throws
异常类名 要与 异常对象 相匹配,变量名(对象名),接收对象。
- 程序从 try 里面的代码开始执行
- 出现异常,就会跳转到对应的 catch 里面去执行
- 执行完毕之后,程序还可以继续往下执行
Java虚拟机的默认处理方式:
package com.itheima_02; public class ExceptionDemo01 { public static void main(String[] args) { System.out.println("开始"); method(); System.out.println("结束"); } public static void method() { try { int[] arr = {1, 2, 3}; System.out.println(arr[3]); // 此处出现问题,会产生异常类对象 相当于 new ArrayIndexOutOfBoundsException(); // 把“new ArrayIndexOutOfBoundsException();”交给Java的运行时系统 // 运行时系统就到catch中 找匹配的异常对象,找到匹配的异常对象后,执行{}中的内容 System.out.println("这里能够访问到吗?不能!"); } catch (ArrayIndexOutOfBoundsException e) { // 出现异常后,应该给出一个页面进行提示 System.out.println("你访问的数组索引不存在,请回去修改为正确的索引"); e.printStackTrace(); // e是对象,调用方法 System.out.println("---"); } } }
Throwable是所有错误和异常的祖宗类,只要属于这个体系的,都可以使用它的成员方法。
在构造方法中,对detailMessage进行赋值。
e.printStackTrace() 信息最全,用的最多!
Java中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常。
所有的RuntimeException类及其子类 被称为运行时异常,其他的异常都是编译时异常。
编译时异常
- 都是Exception类及其子类。
- 必须显示处理,否则程序就会发生错误,无法通过编译。
运行时异常
- 都是RuntimeException类及其子类。
- 无需显示处理,也可以和编译时异常一样处理。
运行时异常(非受检异常):编译的时候不报错;运行报错 --> 返回修改代码。
运行时异常(非受检异常):做不做try{}catch(){}处理都一样,不需要显示处理,因为 运行时异常 需要修改代码。
编译时异常:有可能会出现异常!!!
public void 方法() throws 异常类名 { }
throws处理异常,没有输出“结束”,并不是真正地处理异常,仅仅是 抛出异常,如果想让程序往下执行,还是得用try...catch...
编译时异常:在编译期间就必须显示处理,否则程序会报错。
不管是 编译时异常,还是 运行时异常,都可以在方法后 通过throws抛出异常,但是这种抛出异常的方式,并没有做实际处理。
真正的处理还是得通过try...catch...实现。(程序继续向下执行!)
假如异常处理不了,可以抛出去,让调用者进行处理。