Java基础day13

  • Java基础部分day13-常用API&异常
  • 1.包装类
    • 1.1基本类型包装类
    • 1.2Integer类
    • 1.3int和String类型的相互转换
    • 1.4字符串数据排序案例
    • 1.5自动拆箱和自动装箱
  • 2.时间日期类
    • 2.1Date类
    • 2.2Date类常用方法
    • 2.3SimpleDateFormat类
    • 2.4日期工具类案例
    • 2.5Calendar类
    • 2.6二月天案例
  • 3.异常
    • 3.1异常
    • 3.2JVM默认处理异常的方式
    • 3.3try-catch方式处理异常
    • 3.4Throwable成员方法
    • 3.5编译时异常和运行时异常的区别
    • 3.6throws方式处理异常
    • 3.7throws和throw的区别
    • 3.8自定义异常

Java基础部分day13-常用API&异常

1.包装类

1.1基本类型包装类

  • 基本类型包装类的作用
    将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
    常用的操作之一:用于基本数据类型与字符串之间的转换

  • 基本类型对应的包装类

      基本数据类型       包装类byte             Byteshort           Shortint            Integerlong          Longfloat          Floatdouble             Doublechar          Characterboolean        Boolean
    

1.2Integer类

  • Integer类概述
    包装一个对象中的原始类型 int 的值

  • Integer类构造方法

      方法名                                                     说明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 Integerdemo {public static void main(String[] args) {//根据 int 值创建 Integer 对象(过时)Integer i1 = new Integer(100);System.out.println(i1);//根据 String 值创建 Integer 对象(过时)//Integer i2 = new Integer("abc");Integer i2 = new Integer(100);System.out.println(i2);//返回表示指定的 int 值的 Integer 实例Integer i3 = Integer.valueOf(100);System.out.println(i3);//返回一个保存指定值的 Integer 对象 StringInteger i4 = Integer.valueOf("100");System.out.println(i4);}
}

1.3int和String类型的相互转换

  • int转换为String
    转换方式
    方式一:直接在数字后加一个空字符串
    方式二:通过String类静态方法valueOf()
  • 示例代码
public class Integerdemo {public static void main(String[] args) {//int->stringint number = 100;//way1String s1 = number + "";System.out.println(s1);//way2String s2 = String.valueOf(number);System.out.println(s2);}
}
  • String转换为int
    转换方式
    方式一:先将字符串数字转成Integer,再调用valueOf()方法
    方式二:通过Integer静态方法parseInt()进行转换
  • 示例代码
public class Integerdemo {public static void main(String[] args) {//String->intString s1 = "100";//way1:String---Integer ---intInteger i = Integer.valueOf(s1);int i1 = i.intValue();System.out.println(i1);//way2:parseIntint i2 = Integer.parseInt(s1);System.out.println(i2);}
}

1.4字符串数据排序案例

  • 案例需求
    有一个字符串:“91 27 46 38 50”,请写程序实现最终输出结果是:“27 38 46 50 91”
  • 代码实现
import java.util.Arrays;public class demo {public static void main(String[] args) {String s = "91 27 46 38 50";String[] strarr = s.split(" ");
//        for(int i = 0;i<strarr.length;i++){//            System.out.println(strarr[i]);
//        }//将String[]数组内容放在int数组中int[] arr = new int[strarr.length];for(int i = 0;i<arr.length;i++){arr[i] = Integer.parseInt(strarr[i]);}//对int数组排序Arrays.sort(arr);//排序后的数组元素进行拼接,使用StringBuilderStringBuilder sb = new StringBuilder();for(int i = 0;i<arr.length;i++){if(i == arr.length-1){sb.append(arr[i]);}else{sb.append(arr[i]).append(" ");}}String result = sb.toString();System.out.println(result);}
}

1.5自动拆箱和自动装箱

  • 自动装箱
    把基本数据类型转换为对应的包装类类型
  • 自动拆箱
    把包装类类型转换为对应的基本数据类型
  • 示例代码
        Integer i = 100; // 自动装箱i = i + 200;     // i = i + 200; i + 200 自动拆箱;i = i + 200; 是自动装箱

2.时间日期类

2.1Date类

  • Date类概述
    Date 代表了一个特定的时间,精确到毫秒

  • Date类构造方法

      方法名                                                      说明public Date()                     分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒public Date(long date)          分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
    
  • 示例代码

import java.util.Date;public class test {public static void main(String[] args) {//public Date():分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒Date d = new Date();System.out.println(d);//public Date(long date):分配一个 Date对象,并将其初始化为表示从标准基准时间起 指定的毫秒数long date = 1000*60*60;Date d2 = new Date(date);System.out.println(d2);}
}

2.2Date类常用方法

  • 常用方法

      方法名                                               说明public long getTime()             获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值public void setTime(long time)                设置时间,给的是毫秒值
    
import java.util.Date;public class test2 {public static void main(String[] args) {Date d = new Date();System.out.println(d.getTime());System.out.println(d.getTime() * 1.0 / 1000 / 365 / 24 / 60 / 60);//设置时间long time = System.currentTimeMillis();d.setTime(time);System.out.println(d);}
}

2.3SimpleDateFormat类

  • SimpleDateFormat类概述
    SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期。
    我们重点学习日期格式化和解析
  • SimpleDateFormat类构造方法
方法名 说明
public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认模式和日期格式
public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat使用给定的模式和默认的日期格式

SimpleDateFormat类的常用方法

  • 格式化(从Date到String)
    public final String format(Date date):将日期格式化成日期/时间字符串
  • 解析(从String到Date)
    public Date parse(String source):从给定字符串的开始解析文本以生成日期
  • 示例代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class test3 {public static void main(String[] args) throws ParseException {//格式化:从Date到StringDate date = new Date();//SimpleDateFormat sdf = new SimpleDateFormat();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String s = sdf.format(date);System.out.println(s);System.out.println("------------");//从String到dateString ss = "2020-08-16 16:09:10";SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date dd = sdf2.parse(ss);System.out.println(dd);}
}

2.4日期工具类案例

  • 案例需求
    定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串解析为指定格式的日期,然后定义一个测试类(DateDemo),测试日期工具类的方法
  • 代码实现
//工具类
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;}
}import java.text.ParseException;
import java.util.Date;public class demo {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);String s3 = DateUtils.dateToString(d, "HH:mm:ss");System.out.println(s3);System.out.println("-------");String s = "2020-08-16 16:33:33";Date dd = DateUtils.stringToDate(s, "yyyy-MM-dd HH:mm:ss");System.out.println(dd);}
}

2.5Calendar类

  • Calendar类概述
    Calendar 为特定瞬间与一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
    Calendar 提供了一个类方法 getInstance 用于获取这种类型的一般有用的对象。
    该方法返回一个Calendar 对象。
    其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();
  • Calendar类常用方法
方法名 说明
public int get(int field) 返回给定日历字段的值
public abstract void add(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,int date) 设置当前日历的年月日
  • 示例代码
import java.util.Calendar;public class Calendardemo {public static void main(String[] args) {//获取日历对象Calendar c = Calendar.getInstance();//public int get(int field):返回给定日历字段的值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 + "日");//需求1:3年前的今天c.add(Calendar.YEAR,-3);year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH) + 1;date = c.get(Calendar.DATE);System.out.println(year + "年" + month + "月" + date + "日");//需求2:10年后的10天前c.add(Calendar.YEAR,10);c.add(Calendar.DATE,-10);month = c.get(Calendar.MONTH) + 1;date = c.get(Calendar.DATE);System.out.println(year + "年" + month + "月" + date + "日");//public final void set(int year,int month,int date):设置当前日历的年月日c.set(2020,7,16);month = c.get(Calendar.MONTH) + 1;date = c.get(Calendar.DATE);System.out.println(year + "年" + month + "月" + date + "日");}
}

2.6二月天案例

  • 案例需求
    获取任意一年的二月有多少天
  • 代码实现
import java.util.Calendar;
import java.util.Scanner;public class test {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);//3月1日往前推一天,就是2月的最后一天c.add(Calendar.DATE,-1);//获取这一天输出即可int date = c.get(Calendar.DATE);System.out.println(year+"年的2月份有"+date+"天");}
}

3.异常

3.1异常

  • 异常的概述
    异常就是程序出现了不正常的情况
  • 异常的体系结构

3.2JVM默认处理异常的方式

  • 如果程序出现了问题,我们没有做任何处理,最终JVM 会做默认的处理,处理方式有如下两个步骤:
  • 把异常的名称,错误原因及异常出现的位置等信息输出在了控制台
  • 程序停止执行

3.3try-catch方式处理异常

  • 定义格式
 try{可能出现的异常代码;}catch(异常类名 变量名){异常的处理代码;}
  • 执行流程
    程序从 try 里面的代码开始执行
    出现异常,就会跳转到对应的 catch 里面去执行
    执行完毕之后,程序还可以继续往下执行
  • 示例代码
public class test {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.printStackTrace();}}
}

3.4Throwable成员方法

  • 常用方法
方法名 说明
public String getMessage() 返回此 throwable 的详细消息字符串
public String toString() 返回此可抛出的简短描述
public void printStackTrace() 把异常的错误信息输出在控制台
  • 示例代码
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]);System.out.println("这里能访问到吗");}catch (ArrayIndexOutOfBoundsException e){System.out.println(e.getMessage());
//            System.out.println(e.toString());
//            e.printStackTrace();}}
}

3.5编译时异常和运行时异常的区别

  • 编译时异常
    都是Exception类及其子类
    必须显示处理,否则程序就会发生错误,无法通过编译
  • 运行时异常
    都是RuntimeException类及其子类
    无需显示处理,也可以和编译时异常一样处理

3.6throws方式处理异常

  • 定义格式
public void 方法() throws 异常类名{}
  • 示例代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class demo2 {public static void main(String[] args) {System.out.println("开始");//method();try{method2();}catch(ParseException e){e.printStackTrace();}System.out.println("结束");}//编译时异常public static void method2() throws ParseException {String s = "2048-08-16";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date d = sdf.parse(s);System.out.println(d);}//运行时异常public static void method() throws ArrayIndexOutOfBoundsException{int[] arr = {1, 2, 3};System.out.println(arr[3]);}
}
  • 注意事项
    这个throws格式是跟在方法的括号后面的
    编译时异常必须要进行处理,两种处理方案:try…catch …或者 throws,如果采用 throws 这种方案,将来谁调用谁处理
    运行时异常可以不处理,出现问题后,需要我们回来修改代码

3.7throws和throw的区别

3.8自定义异常

  • 代码示例
//自定义异常类
public class scoreException extends Exception{public scoreException() {}public scoreException(String message) {super(message);}
}
//老师类
public class teacher {public void checkscore(int score) throws scoreException {if (score < 0 || score > 100) {throw new scoreException();} else {System.out.println("成绩正常");}}
}
//测试类
import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入成绩:");int score = sc.nextInt();teacher t = new teacher();try{t.checkscore(score);}catch(scoreException e){e.printStackTrace();}}
}

Java基础day13相关推荐

  1. Java基础 DAY13

    面向对象编程(中级) IntelliJ IDEA 包 访问修饰符 封装 继承 多态 Super overwrite Object类详解 断点调试 集成开发环境 IDE(集成开发环境)-Eclipse ...

  2. 小汤学编程之JAVA基础day13——I/O流

    一.File类 1.构造方法     2.常用方法 二.继承结构图 三.字节流 1.字节输入流     2.字节输出流 四.字符流 1.字符输入流     2.字符输出流     3.字符输入流plu ...

  3. Java基础10(反射)

    Java基础10(反射) 1 什么是反射 官方解释:反射(reflection)技术通常被用来检测和改变应用程序在 Java 虚拟机中的行为表现.它是一个相对而言比较高级的技术,反射是一种强有力的技术 ...

  4. Java基础入门语法和安装

    1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...

  5. Java笔记整理-02.Java基础语法

    1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...

  6. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  7. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  8. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  9. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

最新文章

  1. “刷脸”之后 声纹识别有望成为新秀
  2. Android使用ActivityGroup设置android:windowSoftInputMode失效的问题
  3. web服务器采用的是什么协议,webservice中采用协议Http,它是指什么意思
  4. Bootsrap基本应用
  5. Lambda的Lambda(如果可选)
  6. 3个表的连接需要 个关联条件。_购物篮分析(关联商品销售分析)
  7. Android studio吧,Android Studio 连接真机
  8. 网约车司机无证最低罚款拟从10000元降至200元
  9. SpringMVC的JSP页面中EL表达式不起作用${}
  10. Python办公自动化(一):从Word到Excel
  11. spark sql读取hive底层_SparkSQL读取Hive数据插入Redis
  12. 【转载】数据仓库的基本架构
  13. hdu 1686 Oulipo
  14. 计算机入职规划,入职后的工作生涯规划范文
  15. 最好用的免费搜题软件,一键聚合搜题!中小学、大学都支持
  16. PID控制器原理概述
  17. C语言超市商品管理系统代码(精)
  18. 三国演义亲和度python_python爬取三国演义文本
  19. Single Image Dehazing via Multi-Scale Convolutional Neural Networks
  20. 大脑构造图与功能解析_人类大脑的生理构造及功能分区

热门文章

  1. MySQL之视图、触发器、事务、存储过程
  2. 获取当前div以外所有部分
  3. .8-Vue源码之AST(4)
  4. Excel Chart
  5. android组件通讯 Intent-Action属性
  6. 如何使用SDK连接SBO?
  7. 工单系统的设计与实现(3)
  8. ODI中web service介绍
  9. mysql-四舍五入
  10. display:flex 多栏多列布局