包装类
1.概念
为了方便、快捷的去操作基本类型数据,java提供基本类型对应的包装类。只能创建出包装类的对象就能提供操作基本类型的数据的便捷性。
注意:
1.除了Character以及Integer之外其他包装类都是首字母大写
2.由基本类型数据来构建包装类对象—封箱
3.基本类型数据直接赋值给包装类的对象—自动封箱包装
类.valueOf(基本类型数据 ) 包装类对象直接赋值给基本类型数据—自动拆箱包装类对象.xxxValue()
4.自动封箱/拆箱是jdk1.5新特性
5.当整型包装类做自动封箱时,在-128—127之间共享同一个数组,但是超过这个范围每次返回一个新对象(character共享范围是(0~127))
6.包装类对象的哈希码值是固定值 7.数值类型的包装类的父类是Number
数学类
Math类代表数学类,提供简单的数学运算(提供的属性和方法都是静态的)
package cn.r.math;
public class MathDemo{
public static void main(String[]args){
//绝对值
//System.out.println(Math.abs(-2.134));
//向上取整
/*System.out.println(Math.ceil(1.000001));
//向下取整
System.out.println(Math.floor(2.999999));
//四舍五入(结果是整数)
System.out.println(Math.round(3.545));*/
//第一个参数是底数,第二个参数是次幂
//System.out.println(Math.pow(16.0,0.5));
//随机数(从0.0到1.0之间(不包含1.0))
//底层根据伪随机算法
//System.out.println(Math.random());
//获取从20到40(包含)之间随机整数
//System.out.println(20+(int)(Math.random()*21));
//简易验证码
//验证码可以出现的内容
char[]cs={'4','A','中','8','b','2','发','财'};
//字符串来存储验证码内容
String str="";
//循环实现随机选取验证码的内容
for(inti=1;i<=4;i++){//验证码有四位
str+=cs[(int)(Math.random()*8)];//下标范围(0~7)随机
}
System.out.println(str);
}
}
BigDecimal类提供小数精确运算(保证参数是字符串形式)
package cn.r.math;
import java.math.BigDecimal;
public class BigDecimalDemo{
//在运算过程中可以提高到80位来运算,但是最终还是以64位来存储
public strictfp static void main(String[]args){
//绝大部分小数的二进制补码是无线位数不能精确运算
/*doubled=2.1-1.9;
System.out.println(d);*/
//只有参数是字符串形式才能进行精确运算
BigDecimal bd1=new BigDecimal("2.1");
BigDecimal bd2=new BigDecimal("1.9");
//调用方法操作对象的值
System.out.println(bd1.subtract(bd2));
}
}
BigInteger类提供超大数之间的运算
package cn.r.math;
import java.math.BigInteger;
public class BigIntegerDemo{
public static void main(String[]args){
//超大数之间的运算
//
BigInteger bi1=new BigInteger("248237423748273847283748273498728374827348723847283748278347827349827349872837498237487283478237489273487283749823749872384782374827384728347827498729734892738472873482749872837489273498728374283482793");
BigInteger bi2=new BigInteger("4837273498237947238749827482738742934782784782734827384728374283749827384729374823748273847283482374273847283749283742837492739472734982734982738479823479827348273847982379472983479823794879284782374892734872384729");
//通过调用调用操作对象值
System.out.println(bi1.multiply(bi2));
}
}
时间类
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日 HH时:mm分:ss秒");
Date类代表时间和日期
SimpleDateFormat类提供日期和字符串的互相转换
parse(): 把字符串转换成日期
format(): 把日期转换成字符串
package cn.r.time;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo{
public static void main(String[]args)throws ParseException{
//创建代表时间和日期的类的对象
//CST(中国标准时区)---当前时间和日期
//Datedate=newDate();
//有参构造---在指定的基础上加上1900年1月
//黑线---代表过时,代表在某个新版本中就会被淘汰
/*Datedate=newDate(2008-1900,8-1,8);
System.out.println(date);*/
//字符串与日期的相互转化
//字符串转成日期
String str="2012-12-1212:12:12";
//创建对象
//ParseException---解析异常
//指定解析格式
SimpleDateFormat sdf1=new SimpleDateFormat
("yyyy-MM-ddHH:mm:ss");
//调用方法把字符串转成日期
Date date=sdf1.parse(str);
//日期转成字符串
//创建对象
SimpleDateFormat sdf2=new SimpleDateFormat
("yyyy年MM月dd日HH时mm分ss秒");
//调用方法把日期转成字符串
String s=sdf2.format(date);
System.out.println(s);
}
}
calendar类代表日历类
packagecn.r.time;
import java.util.Calendar;
import java.util.Date;
public class CalendarDemo{
public static void main(String[]args){
//获取Calendar类的子类对象
Calendar c=Calendar.getInstance();
//设置时间
c.setTime(new Date(2012-1900,12-1,12));
//获取日历信息
System.out.println(c.get(Calendar.DAY_OF_WEEK));
System.out.println(c.get(Calendar.DAY_OF_MONTH));
}
}
异常
1.概念
用于发现问题、反馈问题以及解决问题的一套机制
2.Throwable类—异常的顶级父类
子类
Error:是一个合理的应用程序,不应该试图抓住的严重问题(改变外部需求、环境、资源等等)
Exception:是一个合理的应用程序可以处理也可以不处理
处理方式(1.抛出、2.捕获)
分类
编译时异常—在编译时期出错 一定要处理 除了RuntimeException类以及子类以外其他的异常类
CloneNotSupportedException—克隆不支持异常
ParseException—解析异常
运行时异常—在运行时期出错 可以处理也可以不处理 RuntimeException类以及子类
ArithmeticException—算术异常
NullPointerException—空指针异常
ArrayIndexOutofBoundsException—数组下标越界异常
ClassCastException—类型转换异常
NumberFomatException—数字格式异常
package cn.r.exception;
public class ExceptionDemo2{
public static void main(String[]args){
//调用方法读取文件(txt)
//方法上抛出几个编译时异常需要处理几个编译时异常
try{//try块里存放的是可能会出问题的代码
String s=readFiles(null);
}catch(FileNotExitsException e){//catch块会一直检测try块里是否有异常
//如果出现异常根据对应的异常类的类型
//来捕获对应抛出的异常
System.out.println("问题以及处理。。。");
}catch(FilesNotFoundException e){//=newFilesNotFoundException("亲,您的文件类型不对!!!");
//获取异常的描述信息
//调用父类的方法来间接的获取父类的私有化属性值
System.out.println(e.getMessage());
}catch(NullPointerExceptione){
//打印栈轨迹
e.printStackTrace();
}
//当异常被处理之后后续代码正常执行
System.out.println("读取完成");
}
//定义读取文件的方法
//方法上可以抛出多个异常(中间用逗号分隔)
//如果方法上必须要抛出的异常就是编译时异常
public static String readFiles(Stringpath)
throws FileNotExitsException,FilesNotFoundException,NullPointerException{
//判断路径是否是null
if(path==null){
//进了判断说明path为null
//发现问题,反馈问题
thrownewNullPointerException();
}
//判断文件类型是否是txt文件
if(!path.endsWith("txt")){
//进了判断说明不是txt文件
//发现问题
//反馈问题(描述信息),往上传递异常类对象
throw new FilesNotFoundException("亲,您的文件类型不对!!!");
}
//判断路径是否是W盘符
if(path.startsWith("W")){
//进了判断说明以W判断来开头
//说明出现问题
//反馈问题---往上传递异常类对象
//反馈问题后面代码都不执行
throw new FileNotExitsException();
}
//读取文件内容
return "文件内容";
}
}
//自定义异常类
//自定义异常类继承除了RuntimeException类以及子类以外其他的异常类
//自定义异常默认就是编译时异常
class FileNotExitsException extends Exception{
}
class FilesNotFoundException extends Exception{
/*//私有化属性
privateStringmessage;
//提供获取私有化属性的get方法
@Override
publicStringgetMessage(){
returnmessage;
}
//有参构造给私有化属性进行赋值
publicFilesNotFoundException(Stringmessage){
this.message=message;
}*/
//有参构造给父类的私有化属性进行赋值
public FilesNotFoundException(Stringmessage){
super(message);
}
}