包装类
/**
* 包装类
* @author Administrator
*
*/
public class Test01 {
public static void main(String[] args) {
//将基本数据类型包装为对象
Integer i = new Integer(1000);
System.out.println("("+Integer.MAX_VALUE+")("+Integer.MIN_VALUE+")");
}
}
1)为什么会有包装类?
Java并不是一门纯面向对象的语言,其基本数据类型并不是对象,而有些时候需要将这些数据转变为对象进行操作,由此有了包装类,即将基本数据类型转变为对象。
2)包装类有哪些?
(1) 整数型 byte--->Byte、short--->Short、int--->Integer、long--->Long
(2)字符型 char--->Character
(3)浮点型 float--->Float、double--->Double
(4)布尔型 boolean--->Boolean
3)什么是自动装箱、拆箱?缓存边界问题?
/**
* 测试自动装箱、拆箱
* @author Administrator
*
*/
public class Test02 {
public static void main(String[] args) {
Integer i = new Integer(1000);
//jdk5.0之后,编译器自动改进代码,自动装箱,1000--->new Integer(1000)
Integer i1 = 1000;
//编译器改进,new Integer(1000)--->new Integer(1000).intValue()
int b = new Integer(1000);
Integer c = 1234;
Integer d = 1234;
//内容相同,c d 为对象,对象地址不同,返回FALSE
System.out.println(c==d);
//比较内容
System.out.println(c.equals(d));
Integer e = 127;
Integer f = 127;
//为节省缓存,在[-128-127]之间的数仍当做基本数据类型处理,提高效率
System.out.println(e==f);
//比较内容
System.out.println(e.equals(f));
}
}
时间类 ---> Date
Date类的一般用法
import java.util.Date;
/**
* 测试时间类的用法
* @author Administrator
*
*/
public class TestDate01 {
public static void main(String[] args) {
//不传值表示当前系统时间
Date d = new Date();
long t = System.currentTimeMillis();
System.out.println(t);
Date d2 = new Date(1000);
System.out.println(d2.toGMTString());
//getTime()方法获取对应的毫秒数
System.out.println(d2.getTime());
//数字默认类型为int,要想表示长整型的数,后面要加L/l
long t1 = 1528522058178L ;
Date d3 = new Date(t);
System.out.println(d3);
}
}
时间类格式化 ---> DateFormat将字符串解析为时间对象
/**
* 解析字符串为时间对象
* 定义的格式要与待解析字符串格式一致
*/
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDateFormat {
public static void main(String[] args) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//定义格式
Date d = new Date(16546412216346L);
String str = df.format(d);//将时间对象转化为字符串
System.out.println(str);
String str1 = "2494-5-2 05:36:56";//格式一直
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//格式一直,否则无法解析
try {
Date d2 = df1.parse(str1);//解析为时间对象
System.out.println(d2.toString());
System.out.println(d2.getTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Calendar类的常用实现类 ---> GregorianCalendar
/**
* 测试日期类
* 1月为0,12月为11
* 周日为1,周六为7
*/
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TestCalendar {
public static void main(String[] args) {
Calendar c = new GregorianCalendar();
// c.set(2010, Calendar.FRIDAY, 25, 11,36, 10);
c.set(Calendar.YEAR, 2009);
c.setTime(new Date(1000));
long t = c.getTimeInMillis();
Date d = new Date(t);
System.out.println(d);
System.out.println(c.get(Calendar.YEAR));
//测试日期计算
c.add(Calendar.YEAR, 10);
System.out.println(c.get(Calendar.YEAR));
}
}
Calendar类的应用 ---> 可视化日历
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
/**
* 可视化日历
* 有一些问题
* 每个月一号怎么确定周几,从那一天开始显示,之前显示制表符
* 使用变量,值的变化,方法内部与外部,需要判断变量的变化
* 获取一个月最多有多少天,使用c.getActualMaximum(Calendar.DATE)方法
* @author Administrator
*
*/
public class TestCalendar01 {
public static void main(String[] args) {
System.out.println("输入日期:格式为(xxxx-yy-dd)");
Scanner sc = new Scanner(System.in);
String str = sc.next();
//格式化日期处理
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
//解析字符串为时间对象
Date d = df.parse(str);
Calendar c = new GregorianCalendar();
c.setTime(d);
int day_now = c.get(Calendar.DATE); //获取当前日期
c.set(Calendar.DAY_OF_MONTH, 1);//设置日期为当月1号
/*
* int day_of_week = c.get(Calendar.DAY_OF_WEEK);//在这里使用赋值变量后面不能换行
* int day_of_month = c.get(Calendar.DAY_OF_MONTH);
*/
System.out.println("日\t一\t二\t三\t四\t五\t六");
/*
* if (month==1) { if (year%4==0) { number_of_month = 29;
* }else{number_of_month = 28; } }else if
* (month==4||month==6||month==9||month==11) { number_of_month = 30;
* }else { number_of_month = 31; }
*/
for (int i = 1; i < c.get(Calendar.DAY_OF_WEEK); i++) {
System.out.print("\t");
}
// 直接用c.getActualMaximum(Calendar.DATE)做循环,为什么会每个月都是31
int maxDay = c.getActualMaximum(Calendar.DATE);
for (int i = 1; i <= maxDay; i++) {
if (i==day_now) {
System.out.print("*");
}
System.out.print(i + "\t");
int day_of_week = c.get(Calendar.DAY_OF_WEEK);
if (day_of_week == Calendar.SATURDAY) {
System.out.print('\n');
}
c.add(Calendar.DATE, 1);
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
文件操作 ---> File类
File类的一般用法
import java.io.File;
import java.io.IOException;
/**
* 测试File类
* File类可以表示文件和目录
* @author Administrator
*
*/
public class TsetFile {
public static void main(String[] args) {
File f1 = new File("E:/FLUNT WorkSpace/heat/a.cas");//一个文件的具体路径
File f2 = new File("E:/CAD/CAD2010");//一个文件的目录
File f3 = new File(f2,"en-USAc");//重载的构造方法,一个目录下的子文件/目录File(parent, child)
//创建一个文件/目录
File f4 = new File("E:/FLUNT WorkSpace/heat/s.cas");
File f5 = new File("E:/FLUNT WorkSpace/heat/hss/ll/ss");
//创建目录,单数mkdir()为当目录级别仅增加一级(如果要生成多级目录,需要用到复数mkdirs(),而且使用mkdir()一级目录也不能增加),
//复数mkdirs()可一次性创建多级目录
f5.mkdir();
f5.mkdirs();
try {
//创建文件
f4.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
f4.delete();
if (f1.isFile()) {//判断f1是否为一个文件,具体文件
System.out.println("f1 is File");
}else{
System.out.println("no");
}
if (f2.isDirectory()) {//判断f2是否为一个目录
System.out.println("f2 is Directory");
}
}
}
File类的应用 --->使用递归方法输出文件名树
import java.io.File;
/**
* 使用递归结构编程实现树状展示目录文件结构
*
* @author Administrator
*
*/
public class FileTree {
static void printFile(File file, int level) {
for (int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles();
//遍历数组并打印,等价于
for (int i = 0; i < files.length; i++) {
File temp = files[i];
printFile(temp, level+1);
}
// for (File temp : files) {
// printFile(temp, level + 1);
// }
}
}
public static void main(String[] args) {
File f = new File("E:/FLUNT WorkSpace/heat");
printFile(f, 0);
}
}