黑马全套Java教程(七)
文章目录
- 27 Arrays
- 27.1 冒泡排序
- 27.2 Arrays类的概述和常用方法
- 28 基本类型包装类
- 28.1 基本类型包装类概述
- 28.2 Integer类的概述和使用
- 28.3 int和String的相互转换
- 28.4 自动装箱和拆箱
- 29 日期类
- 29.1 Date类概述和构造方法
- 29.2 SimpleDateFormat类概述
- 29.3 Calendar概述 和 常用方法
- 30 异常
- 30.1 异常概述
- 30.2 JVM的默认处理方案
- 30.3 异常处理
- try...catch...
- throws
- 30.4 Throwable的成员方法
- 30.5 编译时异常和运行时异常区别
- 30.6 自定义异常
黑马全套Java教程(一)
黑马全套Java教程(二)
黑马全套Java教程(三)
黑马全套Java教程(四)
黑马全套Java教程(五)
黑马全套Java教程(六)
本博客从视频d198开始,视频链接
27 Arrays
27.1 冒泡排序
package myArrays.Demo1;//冒泡排序
public class ArrayDemo {public static void main(String[] args) {//定义一个数组int[] arr = {24, 69, 80, 57, 13};System.out.println("排序前:" + arrayToString(arr));for (int j = 0; j < arr.length - 1; j++) {for (int i = 0; i < arr.length - 1 - j; i++) {if (arr[i] > arr[i + 1]) {int temp = arr[i];arr[i] = arr[i + 1];arr[i + 1] = temp;}}}System.out.println("排序后:" + arrayToString(arr));}public static String arrayToString(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);} else {sb.append(arr[i]).append(", ");}}sb.append("]");String s = sb.toString();return s;}
}
27.2 Arrays类的概述和常用方法
工具类的设计思想:
- 构造方法用private修饰
- 成员用public static修饰
package myArrays.Demo2;import java.util.Arrays;/*Arrays类包含用于操作数组的各种方法public static String (int[] a): 返回指定数组的内容和字符串表示形式public static voidsort(int[] a): 按照数字顺序排序指定的数组*/
public class ArrayDemo {public static void main(String[] args) {//定义一个数组int[] arr = {24, 69, 80, 57, 13};System.out.println("排序前:" + Arrays.toString(arr));Arrays.sort(arr);System.out.println("排序后:" + Arrays.toString(arr));}
}
28 基本类型包装类
28.1 基本类型包装类概述
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
常用的操作之一:用于基本数据类型与字符串之间的转换
package myInteger.Demo1;
/*基本类型包装类*/
public class InterDemo {public static void main(String[] args) {//需求:我要判断一个数据是否在int范围内?//public static final int Min_VALUE//public static final int MAX_VALUESystem.out.println(Integer.MIN_VALUE);System.out.println(Integer.MAX_VALUE);}
}
28.2 Integer类的概述和使用
Integer:包装一个对象中的原始类型int的值
package myInteger.Demo2;
/*构造方法:public Integer(int value):根据int值创建Integer对象(过时)public Integer(String s):根据String值创建Integer对象(过时)静态方法获取对象:public static Integer valueOf(int i):返回表示指定的int值的Integer实例public static Integer valueOf(String s):返回一个保存指定值的Integer对象 String*/
public class InterDemo {public static void main(String[] args) {//1Integer i1 = new Integer(100);System.out.println(i1);//2Integer i2 = new Integer("100");System.out.println(i2);//3Integer i3 = Integer.valueOf(100);System.out.println(i3);//4Integer i4 = Integer.valueOf("100");System.out.println(i4);}
}
28.3 int和String的相互转换
基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转换
package myInteger.Demo3;//int和String类型的相互转换
public class IntegerDemo {public static void main(String[] args) {//int---Stringint number = 100;//方式一String s1 = "" + number;System.out.println(s1);//方式二String s2 = String.valueOf(number);System.out.println(s2);System.out.println("--------------");//String---intString s = "100";//方式一//String---Integer----intInteger i = Integer.valueOf(s);int x = i.intValue();System.out.println(x);//方式二int y = Integer.parseInt(s);System.out.println(y);}
}
案例:字符串中数据排序
package myInteger.Demo4;import java.util.Arrays;public class Demo01 {public static void main(String[] args) {//1.定义字符串String s = "91 27 46 38 50";//2.字符串数字存储入数组String[] strArray = s.split(" ");String start = Arrays.toString(strArray);System.out.println(start);//3.int数组int[] arr = new int[strArray.length];for(int i=0;i< strArray.length ;i++){arr[i] = Integer.parseInt(strArray[i]);}Arrays.sort(arr);String result = Arrays.toString(arr);System.out.println(result);}
}
28.4 自动装箱和拆箱
装箱:把基本数据类型转换为对应的包装类类型
拆箱:把包装类类型转换为对应的基本数据类型
package myInteger.Demo5;import myInteger.Demo1.InterDemo;/*装箱:把基本数据类型转换为对应的包装类类型拆箱:把包装类类型转换为对应的基本数据类型*/
public class IntegerDemo {public static void main(String[] args) {//装箱Integer i = Integer.valueOf(100); //手动装箱Integer ii = 100; //自动装箱//拆箱ii = ii.intValue() + 200; //手动拆箱ii += 200; //自动System.out.println(ii);Integer iii = null;if(iii!=null) {iii += 300;}System.out.println(iii);}
}
29 日期类
29.1 Date类概述和构造方法
Date代表了一个特定的时间,精确到毫秒
package myDate.Demo1;import java.util.Date;/*
构造方法:public Date():分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒public Date(long date):分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数*/
public class DateDemo01 {public static void main(String[] args) {//1.Date d1 = new Date();System.out.println(d1);//2.long date = 1000*60*60;Date d2 = new Date(date);System.out.println(d2);}
}
常用方法:
package myDate.Demo1;import java.util.Date;/*public long getTime():获取的是日期对象从1970年1月1日 0时刻开始的毫秒值public void setTime(long time):设置时间,给的是毫秒值*/
public class DateDemo02 {public static void main(String[] args) {//创建日期对象Date d = new Date();//1.System.out.println(d); //当前时间System.out.println(d.getTime()); //获取某时间点到现在的毫秒值System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");System.out.println("------------------");//2.//long time = 1000*60*60;long time = System.currentTimeMillis(); //返回当前时间d.setTime(time);System.out.println(d);}
}
29.2 SimpleDateFormat类概述
构造方法:
格式化和解析日期:
package mySimpleDateFormat.Demo;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*构造方法:public SimpleDateFormat(): 构造一个SimpleDateFormat,使用默认模式和日期格式public SimpleDateFormat(String pattern): 构造一个SimpleDateFormat使用给定的模式和默认的日期格式格式化:从 Date 到 Stringpublic final String format(Date date): 将日期格式化成日期/时间字符串解析:从 String 到 Datepublic Date parse (String source):从给定字符串的开始解析文本以生成日期*/public class Demo1 {public static void main(String[] args) throws ParseException {//格式化: 从Date到StringDate d = new Date(); //获取当前时间
// SimpleDateFormat sdf = new SimpleDateFormat();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String s = sdf.format(d); //格式化成字符串System.out.println(s);//从String 到 DateString ss = "2048-08-09 11:11:11";SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date dd = sdf2.parse(ss);System.out.println(dd);}
}
案例:日期工具类
DateUtils.java
package mySimpleDateFormat.Demo2;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*工具类构造方法私有成员方法静态*/
public class DateUtils {private DateUtils(){} //构造方法私有/*把日期转为指定格式的字符串返回值类型:String参数:Date date, String format*/public static String dateToString(Date date, String format){SimpleDateFormat sdf = new SimpleDateFormat(format);String s = sdf.format(date);return s;}/*把字符串解析为指定格式的日期返回值:Date参数:String s, String format*/public static Date stringToDate(String s, String format) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat(format);Date d = sdf.parse(s);return d;}
}
DateDemo.java
package mySimpleDateFormat.Demo2;import java.text.ParseException;
import java.util.Date;//测试类
public class DateDemo {public static void main(String[] args) throws ParseException {//创建日期对象Date d = new Date();String s1 = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");System.out.println(s1);String s2 = DateUtils.dateToString(d, "yyyy年MM月dd日");System.out.println(s2);System.out.println("-----------------");String s = "2048-08-09 12:12:12";Date dd = DateUtils.stringToDate(s, "yyyy-MM-dd HH:mm:ss");System.out.println(dd);}
}
29.3 Calendar概述 和 常用方法
package myCalendar.Demo1;import java.util.Calendar;/*Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供一些方法Calendar 提供了一个类方法 getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化Calendar rightNow = Calendar.getInstance();*/
public class CalendarDemo {public static void main(String[] args) {//获取对象Calendar c = Calendar.getInstance(); //多态的形式System.out.println(c);int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH) + 1;int date = c.get(Calendar.DATE);System.out.println(year + "年" + month + "月" + date + "日");}
}
package myCalendar.Demo2;import java.util.Calendar;/*Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供一些方法Calendar 提供了一个类方法 getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化Calendar rightNow = Calendar.getInstance();*/
public class CalendarDemo {public static void main(String[] args) {//获取对象Calendar c = Calendar.getInstance(); //多态的形式System.out.println(c);int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH) + 1;int date = c.get(Calendar.DATE);System.out.println(year + "年" + month + "月" + date + "日");System.out.println("--------------");c.set(2048,10,10);int year1 = c.get(Calendar.YEAR);int month1 = c.get(Calendar.MONTH) + 1;int date1 = c.get(Calendar.DATE);System.out.println(year1 + "年" + month1 + "月" + date1 + "日");System.out.println("---------------");c.add(Calendar.YEAR, 3); //add加减时间值c.add(Calendar.DATE, -5);int year2 = c.get(Calendar.YEAR);int month2 = c.get(Calendar.MONTH) + 1;int date2 = c.get(Calendar.DATE);System.out.println(year2 + "年" + month2 + "月" + date2 + "日");}
}
案例:二月天
package myCalendar.Demo3;import java.util.Calendar;
import java.util.Scanner;/*需求:获取任意一年的二月有多少天*/
public class CalendarTest {public static void main(String[] args) {//键盘录入年份Scanner sc = new Scanner(System.in);System.out.println("请输入年份:");int year = sc.nextInt();//设置日历年月日Calendar c = Calendar.getInstance();c.set(year, 2, 1); //月份索引是从0开始的//往前推一天c.add(Calendar.DATE, -1);int date = c.get(Calendar.DATE);System.out.println(date);}
}
30 异常
30.1 异常概述
异常:就是程序出现了不正常的情况
索引越界异常显示:
30.2 JVM的默认处理方案
如果程序出现了问题,我们没有做任何处理,最终JVM会做默认的处理
- 把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
- 程序停止执行
30.3 异常处理
如果程序出现了问题,我们需要自己来处理,有两种方案:
- try…catch…
- throws
try…catch…
类似Python的try…except…
package myException.Demo2;//异常
public class Demo1 {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]);} catch (ArrayIndexOutOfBoundsException e) {//System.out.println("你访问的数组索引越界!");e.printStackTrace();}}
}
throws
1.
2.
3.
4.
30.4 Throwable的成员方法
package myException.Demo2;//异常
public class Demo2 {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]);} catch (ArrayIndexOutOfBoundsException e) { //e为异常对象//System.out.println("你访问的数组索引越界!");//e.printStackTrace(); //这个输出信息最全System.out.println("e.getMessage():" + e.getMessage()); //Index 3 out of bounds for length 3 异常原因System.out.println("e.toString():" + e.toString());}}
}
30.5 编译时异常和运行时异常区别
30.6 自定义异常
ScoreException.java
package myException.Demo4;public class ScoreException extends Exception{public ScoreException(){}public ScoreException(String message){super(message);}
}
Teacher.java
package myException.Demo4;public class Teacher {public void cheakScore(int score) throws ScoreException {if (score < 0 || score > 100) {//throw new ScoreException(); //无参构造方法throw new ScoreException("你给的分数有误,分数应该在0-100之间");} else {System.out.println("分数正常!");}}
}
TeacherTest.java
package myException.Demo4;import java.util.Scanner;public class TeacherTest {public static void main(String[] args) throws ScoreException {Scanner sc = new Scanner(System.in);System.out.println("请输入分数:");int score = sc.nextInt();Teacher t = new Teacher();t.cheakScore(score); //编译时异常}
}
注意:
本博客到视频d219截止!
黑马全套Java教程(七)相关推荐
- 黑马全套Java教程(八):集合进阶
文章目录 31 集合进阶 31.1 Collection集合 Iterator迭代器 31.2 List集合 1. ListIterator 2. 增强for循环 31.3 数据结构 1. 栈 2. ...
- 黑马全套Java教程(十一)
文章目录 40 反射 40.1 单元测试 40.2 反射 40.3 注解 40.4 动态代理 41 XML 41.1 XML 41.2 XML解析技术 41.3 XPath 41.4 设计模式 总结 ...
- 黑马全套Java教程(一)
Java入门 1 Java概述 1.1 Java基本介绍 1.2 JDK的下载与安装 1.3 常用DOS命令 1.4 path环境变量的配置 2 Hello world! 2.1 hello worl ...
- 黑马全套Java教程(二)
文章目录 9 IDEA下载.安装与概述.使用 9.1 IDEA的下载 9.2 安装 9.3 IDEA的基本使用 9.4 IDEA字体修改 9.5 IDEA中内容辅助键和快捷键 9.6 IDEA中模块操 ...
- 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)
黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...
- 全套Java教程--打包下载地址
[全套Java教程--打包下载地址] Java基础阶段 一.20天横扫Java基础(课堂实录) https://pan.baidu.com/s/1htTzZRQ 二.尚硅谷Java基础实战--Bank ...
- 尚硅谷《全套Java、Android、HTML5前端视频》
尚硅谷<全套Java.Android.HTML5前端视频> (百万谷粉推荐:史上最牛.最适合自学的全套视频.资料及源码) [尚硅谷官网资料导航] 谷粒学院在线学习:http://www.g ...
- 【备忘】2018年最新尚硅谷全套Java、Android、HTML5前端视频教程下载
全套Java教程--打包下载地址] Java基础阶段 一.20天横扫Java基础(课堂实录) 二.尚硅谷Java基础实战--Bank项目 三.尚硅谷_ORACLE.SQ ...
- 我大学大三用一个月时间学完就找到实习的一套Java教程
目录 引言 第一个Java程序 Java运行机制 基本语法 Java 关键字 Java 标识符 Java 修饰符 Java 注释 Java 基本数据类型 Java 变量 Java 运算符 Java 循 ...
- Java教程-黑马程序员版
很多初学Java的小伙伴,在选择Java教程的时候有很多困惑.哪一套Java教程更适合入门?某一个技术学完之后能做什么?黑马程序员为大家整理了2022年Java教程的选择建议.希望对大家有帮助~ 如果 ...
最新文章
- 【TOJ 3305】Hero In Maze II
- MAX3232和MAX232的具体差别
- OpenCV蒙版图像make mask image的实例(附完整代码)
- abaqus实例_使用Python在ABAQUS中创建XYData数据
- linux内核定时器使用
- Java实现邮箱找回密码
- 云原生分布式应用运行时 Dapr 在阿里的实践
- vue.js+boostrap最佳实践
- 从零开始学前端:CSS背景颜色 --- 今天你学习了吗?(CSS:Day09)
- Anaconda下改变python的版本
- MySQL核心之分组函数(sum() avg() min() max() distinct count() )
- 手把手教你强化学习 (八) 强化学习中的值函数近似算法
- lora 网关 linux,选择LoRaWAN网关的5大关键 很重要!
- 确定目标 目标确定的七大原则
- 学习笔记 Tianmao 篇 OkHttp 网络的使用
- 7000字爆肝!我把14个自学编程的压箱底网站全部分享给你们啦
- 应用泛函分析—距离空间
- 企业如何做软文营销推广?
- 8则励志小故事,真正的心灵鸡汤
- 技术爱好者更换域名重要通知