(1)自动装箱:基本类型的数据处于需要对象的环境中时,会自动转为对象
(2)自动拆箱:每当需要一个值时,对象会自动转成基本数据类型
(3)实现:通过调用包装类的 valueof()和 intValue()方法分别实现 装 拆 箱,整个过程有编译器自动完成
(4)代码:注意包装类的空指针问题
Integer b = 23; // 自动装箱
int a = new Integer(20); //自动拆箱
// 下面的问题我们需要注意:
Integer c = null;
int d = c; // 此处其实就是:c.intValue(),因此抛空指针异常。
(1)包装类在自动装箱时为了提高效率,对于-128~127之间的值会进行缓存处理
(2)缓存的本质就是包装类在加载时,自动创建这个范围内的对象,后面用的话直接引用,不会在 new 对象
(3)超过范围后,对象之间不能再使用==进行数值的比较,而是使用equals方法
(1)String 类对象是不可变的Unicode字符序列(不可变对象),其内部的成员变量用 final 修饰,其值无法改变
(2)字符串常量拼接时的优化
public class TestString2 {
public static void main(String[] args) {
//编译器做了优化,直接在编译的时候将字符串进行拼接
String str1 = "hello" + " java";//相当于str1 = "hello java";
String str2 = "hello java";
System.out.println(str1 == str2);//true
String str3 = "hello";
String str4 = " java";
//编译的时候不知道变量中存储的是什么,所以没办法在编译的时候优化
String str5 = str3 + str4;
System.out.println(str2 == str5);//false
}
}
(3)常用方法总结:
(1)概念
(2)二者区别
(3)常用方法
(1)构造器
(2)方法
(3)说明:很多方法过时,现在一般用 calendar 类
(1)作用:实现字符串和时间对象的相互转换
// new 出 sdf 对象
SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
// 将时间对象转换成字符串
System.out.println(new SimpleDateFormat("hh:mm:ss").format(new Date()));
// 将符合指定格式的字符串转成成时间对象.字符串格式需要和指定格式一致。
String time = "2007-10-7 20:15:30";
Date date = s1.parse(time);
(2)其他用途:获取当前时间是今年第几天
SimpleDateFormat s1 = new SimpleDateFormat("D");
String daytime = s1.format(new Date());
System.out.println(daytime);
(1)概述
(2)方法
(3)某一月份日历打印(练习)
(4)Clendar 类的常量
(1)Math.random():返回 0到 1的随机数
(2)Random类:nextDouble()、nextInt(10)
(3)Math.random()底层调用的就是Random的nextDouble()方法
(1)说明: java.io.File类代表文件和目录,用于读取文件、生成文件、删除文件、修改文件的属性
(2)构造方法
(3)创建文件
File f = new File("a.txt"); //相对路径:默认放到user.dir目录下面
f.createNewFile();//创建文件
(4)创建目录
File f2 = new File("d:/电影");
boolean flag = f2.mkdir(); //目录结构中有一个不存在,则不会创建整个目录树
System.out.println(flag);//创建失败
File f2 = new File("d:/电影/华语/大陆");
boolean flag = f2.mkdirs();//目录结构中有一个不存在也没关系;创建整个目录树
System.out.println(flag);//创建成功
(5)访问属性
/**
* 打印文件信息
* @param file 文件名称
* @param level 层次数(实际就是:第几次递归调用)
*/
static void printFile(File file, int level) {
//输出层次数
for (int i = 0; i < level; i++) {
System.out.print("-");
}
//输出文件名
System.out.println(file.getName());
//如果file是目录,则获取子文件列表,并对每个子文件进行相同的操作
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File temp : files) {
//递归调用该方法:注意等+1
printFile(temp, level + 1);
}
}
}
(1)定义格式
enum Season {
SPRING, SUMMER, AUTUMN, WINDER
}
(1)实质