热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JAVA学习笔记day08

目录1.基本类型包装类1.1基本类型包装类概述1.2Integer类的概述和使用1.3int和string的相互转换1.4练习案例字符串中数据排序1.5自动装箱和拆箱2.日期类2.

目录

1.基本类型包装类

1.1基本类型包装类概述

1.2Integer类的概述和使用

1.3int 和string的相互转换

1.4练习案例字符串中数据排序

1.5自动装箱和拆箱

2.日期类

2.1date类概述和构造方法

2.2Date类常用方法

2.3SimpleDateFormat类概述

2.4SimpleDateFormat的构造方法

2.5SimpleDateFormat格式化和解析日期

2.6日期类案例

2.7Calendar类概述

2.8Calendar的常用方法

2.9案例:二月天

3.异常

3.1异常概述

3.2JVM的默认处理方案

3.3异常处理

3.4异常处理之try.....catch....

3.5Throwable的成员方法

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

3.7异常处理之throws

3.8自定义异常

​3.9throws和throw的区别




1.基本类型包装类

1.1基本类型包装类概述

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

常用的操作之一:用于基本数据类型与字符串之间的转换


1.2Integer类的概述和使用

integer:包装一个对象中的原始类型int的值


1.3int 和string的相互转换

基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转换

1.int转换为string

public static string valueOf(int i):返回int参数的字符串表示形式。该方法是String类中的方法,string a=String.valueOf(i);

2.String转换为int

public static int perseInt(String s):将字符串解析为int类型。该方法是Integer类中的方法,int a=Integer.perseint(s);


1.4练习案例字符串中数据排序

要求:有一个字符串“91 27 46 38 50”,请写程序实现最终输出结果:“27 38 46 50 91”

 


1.5自动装箱和拆箱


  • 装箱:把基本数据类型转换为对应的包装类类型
  • 拆箱:把包装类类型转化为对应的基本数据类型

Integer i=100; //自动装箱
i+=200; //i=i+200; i+200;(自动拆箱) i=i+200;(自动装箱)
Integer i=Integer.valueOf(100); //手动装箱
Integer ii=100;//自动装箱
ii=ii.intValue()+200; //手动拆箱
ii+=200;//自动拆箱+自动装箱

Integer iii=null;
if(iii!=null){
iii+=300;//如果没有if判断就会出现NullPointerException
}

注意:在使用包装类类型的时候,如果做操作,最好先判断是否为null

我们推荐的是,只要是对象,在使用前就必须进行不为null的判断


2.日期类

2.1date类概述和构造方法

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


2.2Date类常用方法


2.3SimpleDateFormat类概述

SimpleDateFormat是一个具体的类,用于以区域设置敏感的方法格式化和解析日期。我们重点学习日期格式化和解析


日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从“A”到“Z”以及从‘a’到‘z’引号的字母被解释为表示日期或时间字母串的组建的模式字母


常用的模式字母及对应的关系如下:


  • y                  年
  • M                 月
  • d                  日
  • H                  时
  • m                分
  • s                  秒

2.4SimpleDateFormat的构造方法

 


2.5SimpleDateFormat格式化和解析日期

1.格式化(从Date到String)

public final String format(Date date):将日期格式化成日期/时间字符串

2.解析(从String到Date)

public Date parse(String source):从给定字符串的开始解析文本以生成日期


2.6日期类案例

需求:定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串解析为指定格式的日期,然后定义一个测试类(DateDemo),测试日期工具类的方法


2.7Calendar类概述

Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化

Calendar rightNow=Calendar.getInstance();


2.8Calendar的常用方法


2.9案例:二月天

需求:获取任意一年的二月有多少天?

思路:


1、键盘录入任意的年份

2、设置日历对象的年、月、日


  • 年:来自键盘录入
  • 月:设置为3月,月份是从零开始的,所以设置的是2
  • 日:设置为1日

3、3月1日往前推一天,就是2月的最后一天

4、获取这一天输出即可


实现代码:


3.异常

3.1异常概述

异常:就是程序出现了不正常的情况

异常体系

Error:严重问题,不需要处理

Exception:称为异常类,它表示程序本身可以处理的问题

RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码

非RuntimeException:编译期就必须处理的,否侧程序不能通过编译,就更不能正常运行了


3.2JVM的默认处理方案

如果程序出现了问题,我们没有做任何处理,最终JVM会做最终的处理


  • 把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
  • 程序停止执行

3.3异常处理

如果程序出现了问题,我们需要自己来处理,有两种方案:


  • try.....catch.....
  • throws

3.4异常处理之try.....catch....


try{

          可能出现异常的代码;

}catch(异常类名   变量名){

异常的处理代码;

}


执行流程:程序从try里面的代码开始执行,出现异常,会自动生成一个异常类对象,该异常对象将被提交给java运行时系统,当java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理,执行完毕之后,程序还可以继续往下执行。


3.5Throwable的成员方法


  • getMessage()输出异常的原因
  • toString()输出异常的种类和原因
  • printStackTrace()输出异常的种类、原因和位置

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

java中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常

所有的RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常


  • 编译时异常:必须显式处理,否则程序就会发生错误,无法通过编译
  • 运行时异常:无需显示处理,也可以和编译时异常一样处理

3.7异常处理之throws

虽然我们通过try...catch...可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理,也就是说,有些时候可能出现的异常是我们处理不了了的,这个时候该怎么办呢?针对这种情况,java提供了throws的处理方案

格式:


throws 异常类名;


注意:这个格式是跟在方法地括号后面的


  • 编译时异常必须要进行处理,两种处理方案:try...catch...或者throws,如果采用throws这种方案,将来谁调用谁通过try...catch...处理
  • 运行时异常可以不处理:出现问题后,需要我们回来修改代码

3.8自定义异常

自定义异常应用:




3.9throws和throw的区别

throws:



  • 在方法声明后面,跟的是异常类名
  • 表示抛出异常,由该方法地调用者来处理
  • 表示出现异常的一种可能性,并不一定会发生这些异常

throw:



  • 用在方法内,跟的是异常对象名
  • 表示抛出异常,由方法体内的语句处理
  • 执行throw一定抛出了某种异常

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



推荐阅读
  • 本文详细探讨了MySQL数据库实例化参数的优化方法及其在实例查询中的应用。通过具体的源代码示例,介绍了如何高效地配置和查询MySQL实例,为开发者提供了有价值的参考和实践指导。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • Flowable 流程图路径与节点展示:已执行节点高亮红色标记,增强可视化效果
    在Flowable流程图中,通常仅显示当前节点,而路径则需自行获取。特别是在多次驳回的情况下,节点可能会出现混乱。本文重点探讨了如何准确地展示流程图效果,包括已结束的流程和正在执行的流程。具体实现方法包括生成带有高亮红色标记的图片,以增强可视化效果,确保用户能够清晰地了解每个节点的状态。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在Java基础中,私有静态内部类是一种常见的设计模式,主要用于防止外部类的直接调用或实例化。这种内部类仅服务于其所属的外部类,确保了代码的封装性和安全性。通过分析JDK源码,我们可以发现许多常用类中都包含了私有静态内部类,这些内部类虽然功能强大,但其复杂性往往让人感到困惑。本文将深入探讨私有静态内部类的作用、实现方式及其在实际开发中的应用,帮助读者更好地理解和使用这一重要的编程技巧。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 本文探讨了 Java 中 Pair 类的历史与现状。虽然 Java 标准库中没有内置的 Pair 类,但社区和第三方库提供了多种实现方式,如 Apache Commons 的 Pair 类和 JavaFX 的 javafx.util.Pair 类。这些实现为需要处理成对数据的开发者提供了便利。此外,文章还讨论了为何标准库未包含 Pair 类的原因,以及在现代 Java 开发中使用 Pair 类的最佳实践。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
author-avatar
mobiledu2502875577
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有