day 03
1 包装类
把基本类型包装成对象(装箱)
包装类是不可改变的类 对象的字符是个常量无法对他作出修改 想改变只能只能创建新的对象和String 一样
抽象类Number是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long和Short类的超类。
Number 的子类必须提供将表示的数值转换为 byte、double、float、int、long 和 short 的方法。
ByteValue();
doubleValue();
floatValue();
intValue();
longValue();
shortValue();
将包装类型转化为基本类型时 调用这些方法(拆箱) 基本类型之间的转换直接使用类型转换
每一种包装类型中都定义了最大值和最小值
静态常量
1) Integer
Integer类在对象中包装了一个基本类型int的值。Integer类型的对象包含一个int类型的字段。
此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。
所有的数字类型保装器都提供了一个静态方法将十进制字符串装换成自己所封装的数据类型(Byte、Double、Float、Integer、Long和Short )所有的数字类型将字符串转成对应的包装类型
public static Integer valueOf(int i){ }
static Character
static Boolean
| valueOf(char c)
|
8个包装类都会自动装箱拆箱
自动装箱
Integer i = Integer.valueOf(500);
Integer n = 500;
Double d = 3.14;
自动拆箱
int m = I
double y = d;
直接用 可以相互直接赋值 不仅在赋值时在参数传递以及方法返回值的过程中
int n = 3562;
System.out.println(n);
//会自动调用 Integer.toString(n); 转化成10进制字符串然后输出、
8个包装类都会自动调用toString();
Byte、Double、Float、Integer、Long和Short类 要和 Character 和Boolean 分别说明 有区别 没有继承 number 超类
2 File类
1)Java 提供了File API 用于操作文件系统,可以在文件系统上创建文件、文件夹,查看文件属性等。
2) file 对象可以代表文件文件夹可以利用方法检测是文件夹还是文件 isFile() isDirectory() File对象可以不对应磁盘上的文件或者文件夹 (用exists())检测
newFile() 不会创建文件只是在内存创建一个file对象 (用exists())检测
创建文件夹 mkdir(); 直接创文件 createNewFile() 同一个文件夹下文件名和文件夹名不能相同
3)重载的File构造器和创建系列文件夹
* 将dir作为父目录,在目录中创建文件夹
* 将dir作为父目录,在目录中创建文件
File dir2 = new File(dir, "test");
File file = new File(dir, "hello.txt");
4)创建多层文件
File dirs=new File(dir, "a/b/c/e/f");
b = dirs.mkdirs();
getName() 或取文件或者文件夹的名字
5)检查文件长度
* 利用File API 检查文件长度
* length()方法返回文件的长度,单位是字节
* 换算为 K 需要除以1024
* 换算为 M 需要除以1024*1024
* 换算为 G 需要除以1024*1024*1024
*
6)删除文件
这个方法只能删除文件和空文件夹 delete() 不能删除带有文件(文件夹)的文件夹
int | capacity() |
public static void main(String[] args) {
/**
* 删除一个文件
*/
Filefile=new File("D:/abc.txt");
booleanb = file.delete();
System.out.println(b);
}
7)列文件夹内容 listFiles (只能列出下一层的)
案例:
public static void main(String[] args) {
/**
* 列出一个文件夹的内容
* dir.listFiles();
*/
Filedir = new File("D:/demo");
//检查文件夹 demo 中的全部内容
File[]files = dir.listFiles();
//foreach、增强fsor循环
for(Filefile:files){
//for(inti=0; i<files.length; i++){
//file代表数组中的每个元素
//Filefile = files[i];
System.out.println(file);
}
}
文件夹(只)来调用 (返回下一层的全名称 ) 如果给定filt为null,则接受所有路径名
8) 递归删除文件夹
案例:
publicstatic void main(String[] args) {
/**
* 利用“递归”方法实现删除有内容的文件夹
*
* 递归:一个方法在执行期间,直接或间接
* 调用了当前方法自身的现象,称为“递归”
*
* 老和尚讲故事(){
* 从前有座山
* 山上有座庙..
* 老和尚讲故事()...
* }
*
* 使用“递归”的技巧:只关注第一层程序,
* 只要第一层是正确的,后续层次就都
* 是正确的!
*
* 删除文件夹(dir){
* 列出文件夹内容
* 逐一删除
* 如果是文件,就删除
* 如果是文件夹:删除文件夹(dir)
* 删除当前文件夹
* }
*/
File dir=new File("D:/demo");
delete(dir);
System.out.println("OK");
}
9)有条件的列出文件夹内容
Java提供了有过滤条件的列目录方法,原理为:
![](filter.png)
案例:
publicclass FileFilterDemo15 {
publicstatic void main(String[] args) {
/**
* 有条件的过滤列目录的结果
*/
FileFilterfilter=new JavaFilter();
Filedir = new File("D:/src");
//调用有过滤器条件的列目录方法,返回
//经过过滤器过滤的文件列表
File[]files=dir.listFiles(filter);
for(Filefile:files){
System.out.println(file);
}
}
}
classJavaFilter implements FileFilter{
publicboolean accept(File file) {
returnfile.getName().endsWith(".java");
}
}
File (String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新File实例。
delete() 可以删除文件或者目录
10)File API只能操作文件夹或者文件,不能处理文件的内容
RandomAccessFile 可以用来读写文件的内容 (rw 默认当文件不存在的时候 会创建一个新的文件 r 模式文件不存在时会报错的)
11)对文件的属性进行操作
判断文件是否可读的 canRead() 可写canWrite()
String getName() 获取文件名 或者 目录名
File[] | listFiles() 文件夹(只) 来调用 (返回下一层的全名称 ) 如果给定 filt 为 null,则接受所有路径名 |
方法
递归一个方法在执行期间直接或间接调用了当前方法自身的现象称为递归
使用递归的技巧
只关注第一层的程序
只要第一层是正确的后续层次就都是正确的
删除文件夹(dir){
列出文件夹内容
依次删除
如果是文件就删除
如果是文件夹 :删除文件夹(dir)
删除当前文件夹
}