java进阶笔记Day(四)

基本类型的包装类
每一种基本类型都有与之对应的包装类(引用数据类型)
基本类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
在学习包装的时候,主要学习基本类型和字符串、以及包装类之间的转换
//获取数据类型的最大值和最小值
System.out.println(Long.MAX_VALUE); //最大值
System.out.println(Long.MIN_VALUE); //最小值

//创建Integer对象,传递整数
Integer i1=new Integer(10);
System.out.println(i1);
//创建Integer对象,传递字符串(保证字符串是纯数字,否则出现NumberFormatException)
Integer i2=new Integer(“1700”);
System.out.println(i2);
###其他类型转换为字符串

1.任何数据类型和字符串做拼接,结果都是字符串
int a=10;
System.out.println(a); //整数10
String s=a+"";
System.out.println(s); //字符串10

2.使用String类的valueOf方法,可以把任何类型的数据转换为字符串
String s1 = String.valueOf(300L);
System.out.println(s1); //“300”
String s2 = String.valueOf(3.14);
System.out.println(s2); //“3.14”
String s3 = String.valueOf(true);
System.out.println(s3); //“true”

        Object obj=new Object();
  String s4 = String.valueOf(obj);//底层调用的是toString()
  System.out.println(s4); //java.lang.Object@61bbe9ba

字符串转换为基本类型

口诀:要转换为哪种基本类型就找哪种基本类型的包装类,parseXxx方法
//String–>int
int n1=Integer.parseInt(“100”);
System.out.println(n1);
//String–>long
long n2 = Long.parseLong(“123456789”);
System.out.println(n2);
//String->double
double n3 = Double.parseDouble(“3.14”);
System.out.println(n3);

自动装箱和自动拆箱

自动装箱: 把基本类型–>包装类
Integer a=10; //自动装箱 int类型的10会自动的转换为Integer对象
自动拆箱:包装类–>基本类型
int b=a+1; //自动拆箱 Integer类型的a 自动转换为int类型的10,再和1做加法运算。
Date类
Date表示一个精确的时间,精确到毫秒(1秒=1000毫秒)

Date date1=new Date();
System.out.println(date1); //当前的系统时间

Date date2=new Date(-1000L); //1970年1月1日 往前 过了1秒
System.out.println(date2);

Date date3=new Date(1000L); 1970年1月1日 往后 过了1秒
System.out.println(date3);
Date类的常用方法

date1.setTime(1000); //设置毫秒值
System.out.println(date1);
//获取时间的毫秒值
long time = date1.getTime();
System.out.println(time);

//获取当前的系统时间
long time1=System.currentTimeMillis();
long time2=new Date().getTime();
SimpleDateFormat类
SimpleDateFormat用来对日期进行格式化和解析的

//格式化:Date–>String
//创建一个SimpleDateFormat对象,指定日期的模式
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String str = sdf.format(date);
System.out.println(str);

//解析:String–Date
String birthday=“1995年9月3日”;
SimpleDateFormat sdf2=new SimpleDateFormat(“yyyy年MM月dd日”);
Date date2 = sdf2.parse(birthday);
System.out.println(date2);
键盘录入生日,计算活了多少天?

//键盘录入一个生日
Scanner sc=new Scanner(System.in);
System.out.println(“请输入你的生日:”);
String birthday = sc.nextLine();
//把birthday解析为date对象
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);
Date date = sdf.parse(birthday);
//获取生日那天的毫秒值
long start = date.getTime();
//获取当前时间的毫秒值
long current = System.currentTimeMillis();
//计算时间差
long time=current-start;
System.out.println(time/1000/60/60/24);
Calendar类
Calendar表示日历类,提供了一些对日历字段(年、月、日…)进行操作的方法

Calendar.YEAR 年
Calendar.MONTH 月
Calendar.DATE 月中的天
Calendar.DAY_OF_MONTH 月中的天
Calendar.DAY_OF_WEEK 星期中的某天
Calendar.DAY_OF_YEAR 年中的某天
Calendar.HOUR_OF_DAY 天中的小时
Calendar.MINUTE 小时中的分钟
Calendar.SECOND 分钟中的秒

//获取日历对象,表示当前时间
Calendar c = Calendar.getInstance();
//设置年、月、日
c.set(Calendar.YEAR,2008);
c.set(Calendar.MONTH,7); //月份从0开始,0表示1月…7表示8月
c.set(Calendar.DAY_OF_MONTH,8);
//一起设置,年月日时分秒
c.set(2008,7,8,16,47,56);

//计算时间,把月中的天往后+100天
c.add(Calendar.DAY_OF_MONTH,100);

//获取年
int year = c.get(Calendar.YEAR);
//获取月
int month = c.get(Calendar.MONTH)+1;
//获取日
int date = c.get(Calendar.DAY_OF_MONTH);
//获取年中的天
int day_of_year = c.get(Calendar.DAY_OF_YEAR);
//获取星期中的天
int index = c.get(Calendar.DAY_OF_WEEK);
//星期日 对应 1,星期一 对应 2… 星期六 对应 7
String[] weeks={"",“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”};
System.out.println(year+“年”+month+“月”+date+“日”+“这一天是”+weeks[index]+",是一年中的"+day_of_year+“天”);
键盘录入一个年份,计算这一年是平年还是闰年

//键盘录入一个年份
Scanner sc=new Scanner(System.in);
System.out.println(“键盘录入一个年份:”);
int year=sc.nextInt();

//获取日历对象
Calendar c=Calendar.getInstance();
//把时间设置到3月1日
c.set(year,2,1);
//把时间往前倒1天
c.add(Calendar.DAY_OF_MONTH,-1);
//获取月中的天
int day=c.get(Calendar.DAY_OF_MONTH);
//判断天数是28还是29
if(day==28){
System.out.println(year+“年是平年”);
}else{
System.out.println(year+“年是闰年”);
}
异常
异常是在程序编译和运行时期的一些不正常的状况,这些不正常的状况有很多很多,就行了一些体系。

Throwable
Error: 错误
Exception: 异常
-RuntimeException: 运行时异常(运行程序是,提示异常信息)
一般不会显示的处理,直接改代码即可。
-非RuntimeException:受检异常(编译时异常,编译代码时有红色波浪线提示)
必须显示的处理异常,否则不能运行。
注意:
【为了让开发者能够快速的发现问题,异常的名称都是见名知意,看到名称基本上就可以猜出程序产生了什么问题】
JVM默认处理方法

先终止程序的执行,然后把异常信息打印在控制台

以下是异常信息:
//IllegalArgumentException: 异常的类名
//bound must be positive: 异常产生原因的简单解释
//找到你自己写代码,定位行号,去查找问题
Exception in thread “main” java.lang.IllegalArgumentException: bound must be positive
at java.util.Random.nextInt(Random.java:388)
at com.itheimna06.Demo6.main(Demo6.java:8)
try…catch处理异常

try{
有可能出现异常的代码
}catch(异常类名 变量名){
处理异常的代码
}
好处:如果程序出现了异常,代码还可以继续往下执行。

一般try…catch只用来处理编译时异常
Throwable的方法【了解】

public String getMessage()
返回简要的字符串异常信息
public String toString()
返回异常的详细描述信息(异常类名+异常原因)
public void printStackTrace()
把异常的信息打印输出到控制台(异常类名+异常原因+异常的行号)
throws声明异常

//在定义方法时用在方法的声明上,告诉调用者这个方法有可能会产生异常
//如调用一个有throws声明的方法,那么就需要使用try…catch处理异常;如果不想处理还可以继续throws声明
public static void method() throws 异常的类名{

}
自定义异常

1.写一个Exception或者RuntimeException的子类
如果继承Exception: 就是编译时异常
如果继承RuntimeException: 运行时异常
【注意:异常的名称一定要写的见名知意,最好是看到异常的名称就知道产生什么问题】
2.写两个构造方法
一个空参数的构造方法
有一个String参数的构造方法
自定义一个FalseMonenyException异常

public class FalseMoneyException extends Exception {
public FalseMoneyException() {
}

public FalseMoneyException(String message) {
super(message);
}
}
在测试类中使用

public class Demo7 {
public static void main(String[] args) {
try {
sale(7);
} catch (FalseMoneyException e) {
e.printStackTrace();
}
}
public static void sale(int money) throws FalseMoneyException{
//判断这个money是否合法
if(money5||money10||money==20){
System.out.println(“正常购买商品”);
}else{
//产生一个异常
throw new FalseMoneyException(money+“面值的纸币是不合法,我已经报警了,等着!!!”);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值