目录
包装类
包装类概述:
包装类的出现是为了解决基本类型不能直接参与面向对象开发 的问题,因为它们是以值的形式存在,不具备封装,继承,多态 的特性.
在进行类型转换的范畴内,有一种特殊的转换,需要将int这样的基本数据类型转换为对象;
所有基本类型都有一个与之对应的类,即包装类(wrapper)。int---->Integer
包装类概述
包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值;
包装类是final的, 不能定义他们的子类。
基本类型 基本类型 父类
int java.lang.Integer java.lang.Number
long java.lang.Long java.lang.Number
double java.lang.Double java.lang.Number
short java.lang.Short java.lang.Number
float java.lang.Float java.lang.Number
byte java.lang.Byte java.lang.Number
char java.lang.Character java.lang.Object
boolean java.lang.Boolean java.lang.Object
八种基本类型包装类:
Number及其主要方法:
抽象类Number是Byte、Double、Float、Integer、Long和Short类的父类;
Number的子类必须提供将表示的数值转换为byte、double、float、int、long和short的方法:
-doubleValue() 以double形式返回指定的数值
-intValue() 以int形式返回指定的数值
-floatValue() 以float形式返回指定的数值
Number及其主要方法
测试NumberintValuedouble的方法和 Value方法
public void testIntValueAndDouble Value()
Number=123.45; Number=123
//输出d和n对象所属的类型
System.out. printin(d.getClass().getName());// java.lang.Double
System.out. printIn(n.getClass().getName(); // java.lang.Integer
int intValue =d.intValue();
double doubleValue =d.doubleValue();
System.out. printin(intValue+","+ doubleValue);//123.123.45
intValue=n.intValue();
doubleValue =n.doubleValue();
System.out. printIn(intValue +"," +doubleValue); // 123,123.0
}
Integer常用功能
该类提供了多个方法,能在int类型String和类型之间互相转换,还提供一些常量例如:
static int MAXVALUE值为2的31次方-1的常量,表示int类型能表示的最大值
static int MINVALUE值为-2的31次方的常量,表示int类型能表示的最小值
package Integer;
/**
* 包装类中比较常见的操作
*
* @author Administrator
*
*/
public class IntegerDemo2 {
public static void main(String[] args) {
int imax = Integer.MAX_VALUE;
int imin = Integer.MIN_VALUE;
System.out.println(imax);
System.out.println(imin);
long lmax = Long.MAX_VALUE;
long lmin = Long.MIN_VALUE;
System.out.println(lmax);
System.out.println(lmin);
double lmax1 = Double.MAX_VALUE;
double lmin1 = Double.MIN_NORMAL;
System.out.println(lmax1);
System.out.println(lmin1);
// 包装类可以将字符串解析为基本类型,但是前提是该字符串内容
// 正确描述了基本类型可以保存的值,
// 否则会抛出下面的异常 NumberFormatException
String line = "123";
int d = Integer.parseInt(line);
System.out.println(d);
String line1 = "123.123";
Double d1 = Double.parseDouble(line1);
System.out.println(d1);
}
}
Integer的静态方法parselnt用于将字符串转换为int
/**String转换为int*/
public void testParseInt (){
Stringstr=123";
int value=Integer.parseInt(str);
System.out.printIn(value);//123
如果字符串的格式不是整数形式,将无法转换。
str="壹佰贰拾叁";
//会抛出NumberFormatException
//value=Integer.parselnt(str);
Double常用功能
在Double类的对象中包装一个基本类型double的值
构造方法
-Double(double value)
-Double(Strings)
方法
-double doubleValue() 返回此Double对象的double值
-static double parseDouble(String s)返回一个新的double值,该值被初始化为用指定的String表示的值
Double常用功能
String转换为 double*/
public void testParseDouble(){
String str="12345.00";
double value =Double.parseDouble(str);
//12345.0
System.out.printIn(value);
str="¥12345.00";
//会抛出NumberFormatException
//value=Double.parseDouble(str);
package Integer;
/**
*
* 包装类 包装类的出现是为了解决基本类型不能直接参与面向对象开发 的问题,
* 因为它们是以值的形式存在,不具备封装,继承,多态 的特性.
*
*
* @author Administrator
*
*/
public class IntegerDemo1 {
public static void main(String[] args) {
int d = 127;
//java推荐我们用valueOf形式将基本类型转换为包装类
Integer i1 = Integer.valueOf(d);
Integer i2 = Integer.valueOf(d);
//Integer的valueOf会重写一部分对象(-128-127)
System.out.println(i1 == i2);//true
System.out.println(i1.equals(i2));//true
double dou = 123.123;
Double d1 = Double.valueOf(dou);
Double d2 = Double.valueOf(dou);
//Double的valueOf方法不做任何重用都是直接调用new
System.out.println(d1 == d2);//false
System.out.println(d1.equals(d2));//true
double doub=d1.doubleValue();
System.out.println(doub);
int in =d1.intValue();
System.out.println(in);
}
}
自动装箱和拆箱操作
从Java5.0版本以后加入到了autoboxing功能
自动“折箱”和“装箱”是依靠JDK5的编译器在编译期的预处理工作
下列代码写法均为正确形式:
Integer=100; //装箱
Integer=200; //装箱
Integer c=a+b //拆箱再装箱
double d=c; //拆箱
装箱和拆箱是“编译器”认可的,而不是虚拟机。编译器在生成类的字节码时插入必要的方法调用
-Integer a=100 => Integer a=Integer.valueOf(100)
-Integer b=200 => Integer b=Integer.valueOf(200)
-Integer c=a+b =>
Integer c=
Integer.valueOf(a.intValue()+b.intValue())
-int d =c => int d =c.intValue()
package Integer;
/**
* JDK5推出后推出了一个特性:自动拆装箱
* 该特性是编译器认可的,可以在编译代码时自动补充代码将
* 基本类型与对应的包装类相互装换.
* 这样的好处是我们在编写源代码时可以混用基本类型和引用类型
* 无需再手动代写进行相互的转换工作了.
* @author Administrator
*
*/
public class IntegerDemo3 {
public static void main(String[] args) {
/*
* 下面代码触发了编译器的自动装箱特性,编译器会在
* 编译后的class文件中补充的代码,将基本类型转换为
* 对应的包装类:
* Integer i=Integer.valueOf(123);
*
*/
Integer i=123;//123
/*
* 下面代码触发的是自动拆箱特性,代码被改为:
* int d=i.intValue();
*/
Integer oo=Integer.valueOf(123);//123
int d=oo.intValue();
System.out.println(oo);
System.out.println(d);
}
}
构建File对象
File(String pathname)
Java.io.File 用于表示文件(目录),我们可以通过File类在程序中操作硬盘的文件和目录。
File类只用于表示文件目录的信息,名称大小等不能对文件的内容进行访问。
构造方法:
-File(String pathname)
-通过给定路径名字符串转换成抽象路径名来创建一个新File实例,
-抽象路径尽量用相对路径,并且目录的层级分隔符不要直接写“/”或“\”,用使用File。separator这个常亮表示,以避免不同的系统带来的差异。
public void testFile(){
File file= new File(
"demo"+File.separator
+"HelloWorld.txt"
);
System.out.printIn(file);
}
1 isFile()的isFile方法用来判断当前File对象是否表示一个文件,true
2 isDirectory()方法用于判断当前File表示的是否为一个目录。true
当且仅当以创建目录时返回true
3 length()用来返回由此抽象路径名表示的文件的长度(占用的字节量)
4 exists()用于测试文件目录是否存在,true
5 createNewFile()用来表示当且仅当不存在具有抽象路径名指定的名称文件时,原子的创建由此抽象路径名指定一个新的空文件。 true如果指定的文件不存在并成功创建返回true,如果已经存在则返回false。
6 delete()用于删除此路径下表示的文件或目录
成功删除时返回true,注意:若此file对象表示的是一个目录时,在删除时需要保证此为空目录才能成功删除(不能含有子项)
7 mkdir()用于创建此路径名指定目录
8 mkdirs()用于创建此路径名指定目录包括所有需要但不存在的父目录,注意操作失败也可能是已经创建了一部分必须得目录。 true当且仅当已创建目录及所必要的父目录时返回true
9 FileFilter接口可以传递给listFile(FileFilter)方法。用于返回满足该过滤器要求的子项
Java提供了一个可以对文件随时访问的操作,包括读和写操作。该类名为10 RandomAccessFile,该类的读写是基于指针的操作。
字符串"r"表示自读,w表示读写。
11 RandomAccessFile提供了一个可以向文件中写出字节的方法 void write(int d)写一个第八位字
读取字节int read()该方法会读取一个byte(8位)填充到24
int read() 从文件中读取一个字节,字节的高 24 位为 0,若遇到文件结尾,返回-1
final byte readByte() 从文件中读取带符号的字节值
final char readChar() 从文件中读取一个 Unicode 字符
final void writeChar(inte c) 写入一个字符,两个字节
写字符串write(byte[] d)写一组字符串
read(byte[] b)批量读
close()用来释放所有与其关联的所有系统资源
12getFilePointer()方法获取当前指针位置
13Seek(int)用于移动指针
14 int skipBytes(int n)
跳过 n 个字节,返回数为实际跳过的字节数