java基础知识 包装类

目录


包装类

包装类概述:

    包装类的出现是为了解决基本类型不能直接参与面向对象开发 的问题,因为它们是以值的形式存在,不具备封装,继承,多态 的特性. 

    在进行类型转换的范畴内,有一种特殊的转换,需要将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 个字节,返回数为实际跳过的字节数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值