第一天
一、Object类:java.lang包下,是所有类的超类,方法要被重写
1.toString()方法:
1)重写原因:
1.输出对象信息更准确 2.连接字符串的时候内容有意义2.equals()方法
1)作用:判定两个对象的内容是否相同
2)子类不重写equals时,Object中的equals内部还是"=="比较,因此不重写无意义
PS:
java提供的类大多是重写过了toString和equals方法.
只有我们自己定义的类在使用时出现上述情况需要自行重写两个方法
例如:String,它的toString和equals方法已经重写过了.
二、包装类
1.包装类出现的原因是为了解决基本类型不能直接参与面向对象开发的情况。使基本类型可以以“对象”的形式存在。
2.Integer包装类
int i = 128; //int转换成Integer类型 Integer i1 = Integer.valueOf(i); //不推荐使用new Integer() Integer i2 = Integer.valueOf(i); //在byte范围内,i1==i2为true int d = i1.intValue(); //Integer转换成int类型 double dou = i1.doubleValue(); //Integer转换成double类型 /* 注:小转大没有问题,但是大转小可能会出现溢出现象,比如Integer转换成byte类型 */
3.包装类常见功能
1)最大最小值
//最大最小值 int imax = Integer.MAX_VALUE; int imin = Integer.MIN_VALUE;
2)字符串转换基本数据类型
包装类提供了一个静态方法,可以将字符串转换为对应的基本类型,前提是该字符串正确描述了基本数据类型可以保存的值,否则会抛出异常:
数字 格式 异常
NumberFormatException
//字符串转换为对应基本数据类型 String line = "123"; String line2 = "123.123";//需要注意:"123.123"是不能转换为整数的 int d = Integer.parseInt(line); System.out.println( d ); double dou1 = Double.parseDouble( line ); double dou2 = Double.parseDouble( line2 ); System.out.println( dou1 ); System.out.println( dou2 );
4.自动拆/装箱(jdk5以后的性能)
1)基本数据类型直接赋值给包装类,称为自动装箱,因为编译器自动加了valueOf()
a = 123; Integer i = a; //自动省去Integer.valueOf(a) 自动装箱
2)包装类直接赋值给基本数据类型,称为自动拆箱,因为编译器自动加了intValue()
Integer i = Integer.valueOf(123); int a = i; //编译器自动添加i.intValue(),自动拆箱
三、File
1. file 文件类
* 该类的每一个实例可以表示硬盘上的一个文件或目录(实际表示的是一个抽象路径)
* 通过File我们可以:
1)访问其表示的文件或目录的属性信息(名字,大小等)
2)创建,删除文件或目录
3)访问一个目录中的子项 * 但是不能访问文件数据
2.实际开发中几乎不会使用绝对路径去定位文件或目录,都是使用相对路径的。
-因为它有更好的跨平台性。
-例如:"./" 表示当前目录,具体是哪里要看当前程序的运行环境而定,比如我们现在在IDEA里执行程序时,IDEA规定当前目录就是当前程序所在的项目目录.
3.功能
1)new File("./文件名");
2)getName()--获取名字
3)length()--获取长度(单位是字节),注:返回的是long值
4)canRead()--是否可读, canWrite()--是否可写, isHidden()--是否隐藏
5)exists()--检测是否存在该文件
createNewFile()--创造新的file文件
6)delete()--删除文件或空目录
7)mkdir()--创建目录(只能一层)
mkdirs()--创建目录(父目录全都创建)
8)boolean isFile()---判断当前File表示的是否为一个文件
boolean isDirectiry()--判断当前File表示的是否为一个目录
listFiles()----返回当前目录的所有子项,可以用File数组存储
//1.访问当前项目目录下的demo.txt文件 //File file = new File("./demo.txt"); //2.获取名字 String name = file.getName(); //3.获取长度(单位是字节).注:返回的是long值,因为int最大值无法表示一个文件的最大容量的字节数 long length = file.length(); //4.读/写/隐藏 boolean cr = file.canRead(); //read 读 boolean cw = file.canWrite(); //write 写 boolean ih = file.isHidden(); //hidden 隐藏 //5.相对路径中,"./"可以忽略不写,默认就是从"./"开始 File file = new File("test.txt"); //boolean exists() 判断当前File表示的文件或目录是否真实存在,存在则返回true if( file.exists() ){ System.out.println( "该文件已存在!" ); }else{ file.createNewFile(); //create创造 new新的 file文件 System.out.println( "该文件已创建!" ); } //6.将当前目录下的test.txt文件删除 File file = new File("test.txt"); if( file.exists() ){ file.delete(); System.out.println( "文件已删除" ); } //7.当前目录下新建一个目录:demo File file1 = new File("./demo"); File file2 = new File( "./a/b/c/d/e/f" ); if( file1.exists() ){ System.out.println( "该目录已存在" ); }else{ file1.mkdir(); //make 做,造 } if( file2.exists() ){ System.out.println( "该目录已存在" ); }else{ file2.mkdirs(); //directories } //8.获取当前目录中的所有子项 File dir = new File("."); //.为当前目录 /* boolean isFile() 判断当前File表示的是否为一个文件 boolean isDirectory() 判断当前File表示的是否为一个目录 */ if( dir.isDirectory() ){ //list:列表 File[] subs = dir.listFiles(); for( int i = 0 ; i < subs.length ; i++ ){ System.out.println( subs[i].getName() ); } }