一, 包装类的使用
1, java基础包
在java语言体系中的java类库是以包的形式提供的,也因此这些包被叫做基础包。
例如
2, 包装类
概念:直接将简单类型的变量表示为一个类,或者说是将基本数据类型封装成包装类;例如八种基本数据类型的对应的包装类就如下所示;处理int 和char两个特别外,其他的都是基本数据类型首字母大写
3, 将字符串转换为数值类型
如下图所示,
代码演示为:
二, String类,StringBuffer类的使用
1, String类
创建String对象有三种方法
第一种是声明空间,然后再赋值
第二种是声明空间并赋值,第三种是通过新建对象来创建String对象
值得注意的是,虽然str1,str2和str3的实体是一样,但是,str1和str2内存地址一样位于栈中,str3则位于堆中
2, String常用方法
3, equals&==区别
equals比较的是字符串的值是否相等,==则是比较字符串的引用地址是否相同
4, 如何创建StringBuffer对象
构造方法
常用方法
5, StringBuffer与StringBuilder的区别
主要的区别就是SttringBuuffer线程是安全的,还可以让它自行维护线程同步;StringBuuilder不安全,但,单线程时效率最高。
6, StringBuffer与String区别
相同点:两者都是用来存储字符串数据的,,而且线程都是安全的。
不同点:String存储的字符串不可改变,每次声明在内存中就创建一个对象,效率低;
SttringBuffer存储的字符串是可变的,也就是可以在动态的修改字符串的内容,对象不会再创建,且只需创建一次对象就好!
三, Date类,Calender类的使用
1, Calendar类
它是一个抽象类,拥有一个具体子类GrregorianCalendar
2, 创建Calendar对象有两种方式:
3, Calendar常用方法
4, field(字段)常见类型
5, Date(日期)类,创建对象的两种构造方法
6, Date类常用方法
7, DateFormat类,它是以个抽象类,用于定制日期格式,具体的子类是SimpleDateFormat
创建SimpleDateFormat的对象:
8, SimpleDateFormat常见的方法
四, Math类,Random类的使用
1, Math类,是一个提供许多用于数学运算的静态方法的工具类;它的构造方法是私有的(private),因此不能被实例化;
2, Math类中的所有常量和方法都被定义为static,因此,它的成员可以直接被引用!
3, Math类常用方法:
4, Random类,提供了各种类型随机数的方法,随机数类型是double类型的;只有一个无参构造方法:Random rd = new Random();
5, Random类常用方法:
五, 综合实例:
8.输入进入停车场时间,获取系统当前时间,计算停车费用并按照指定的格式输入清单(Date,DateForamte,StringBuffer,Calendar)
进场时间 xxxx年xx月xx日 :xx小时xx分钟入场
出场时间 xxxx年xx月xx日 :xx小时xx分钟离场
停车费用: xx元
思路解析:
根据题目意思我们可以知道通过时间戳来转换年月日小时分钟秒来与获取当前时间来获得相应的运算,既可以得到车费又可以打印出进场时间和出场时间。
代码实现:
package com.rshz.lession7;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
import org.junit.Test;
/**
* 输入进入停车场时间,获取系统当前时间,计算停车费用并按照指定的格式输入清单(Date,DateForamte,StringBuffer,Calendar)
*
* 进场时间 xxxx年xx月xx日 :xx小时xx分钟入场 出场时间 xxxx年xx月xx日 :xx小时xx分钟离场 停车费用: xx元
*
* @author Administrator
*
*/
public class Work8 {
@Test
public void format() {
try {
System.out.println("请输入进场时间【yyyy-MM-dd HH:mm:ss】:");
// 读取一行数据
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();//读取一行 包括空格
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);//键盘输入的时间
String aa = sdf.format(new Date());//当前系统时间
Date date2 = sdf.parse(aa);//转换当前系统时间格式
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
// 毫秒ms
long diff = calendar2.getTime().getTime()
- calendar.getTime().getTime();
// long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;//分钟
long diffHours = diff / (60 * 60 * 1000) % 24;//小时
long diffDays = diff / (24 * 60 * 60 * 1000);//天
StringBuffer inSbf = new StringBuffer();// 入场时间
inSbf.append("进场时间:").append(calendar.get(Calendar.YEAR) + "年")
.append((calendar.get(Calendar.MONTH) + 1) + "月").append(
calendar.get(Calendar.DATE) + "日 ").append(
calendar.get(Calendar.HOUR) + "小时").append(
calendar.get(Calendar.MINUTE) + "分钟入场");
System.out.println(inSbf);
StringBuffer outSbf = new StringBuffer();// 出场时间
outSbf.append("出场时间:").append(calendar2.get(Calendar.YEAR) + "年")
.append((calendar2.get(Calendar.MONTH) + 1) + "月").append(
calendar2.get(Calendar.DATE) + "日 ").append(
calendar2.get(Calendar.HOUR) + "小时").append(
calendar2.get(Calendar.MINUTE) + "分钟入场");
System.out.println(outSbf);
// 假设收费5块一个小时
double money = (diffDays * 5 * 24) + diffHours * 5
+ (diffMinutes / 60 * 5);
System.out.println("停车费用:" + money);
System.out.print("两个时间相差:");
System.out.print(diffDays + " 天, ");
System.out.print(diffHours + " 小时, ");
System.out.print(diffMinutes + " 分钟, ");
} catch (Exception e) {
System.out.println("格式错误!!!");
}
}
}