包装类及匿名内部类

一、java提倡一切皆对象,八种数据类型不是对象,而包装类就可以将基本数据类型以类的形式进行操作!

图1包装类及匿名内部类

其所继承的父类不尽相同

Integer、Byte、Float、Double、Short、Long都属于Number类的子类,Number类本身提供了一系列的返回以上六种数据类型的操作。

Character属于Object的直接子类。Boolean属于Object的直接子类

图2包装类及匿名内部类

下面以Integer和Float为例:

装箱及拆箱:

将基本数据类型变为包装箱成为装箱

       将包装类的类型变为基本数据类型成为拆箱

程序(装箱拆箱)

public class NumberDemo1 {

	public static void main(String[] args) {
		int x = 5;//基本数据类型
		Integer i = new Integer(x);//装箱:将基本数据类型变为包装类
		System.out.println(i.intValue());//拆箱:将一个包装类变为基本数据类型
		//在JDK1.5之后,对程序增加了自动装箱及自动拆箱,而且可以使用包装类直接进行数字运算
		//在包装类中,就可以将字符串变为指定的数据类型!
		Integer i= 4;自动装箱
		int  a = i;自动拆箱

	}

}

包装类的应用

包装类可以将字符串变为基本数据类型

例如:将一个全有数字组成的字符串变为一个int或float类型的数据在Integer和Float类中分别提供一下方法;

Integer类(字符串变为int、型)

public static int parseInt(String  s)  throws NumberFormatException


Float类(字符串转float型)

public static float   parseFloat(String  s)  throws NumberFormatException

  

public class NumberDemo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "2784";//全是由数字组成的字符串
		int x = Integer.parseInt(s);//静态方法,直接调用
		System.out.println(x);
	}

}
二、内部类:

一个类的内部还有另外一个类成为内部类,那么匿名内部类,如果一个类在整个操作 中只使用一次的话,就可以将其定义成匿名内部类, 匿名内部类实在抽象类即接口的基础之上发展而来的。

interface A {
	public void printinfo();
}

class B implements A {// 实现接口

	@Override
	public void printinfo() {
		// TODO Auto-generated method stub
		System.out.println("下午去打球");
	}

}

class X {
	public void fun1() {
		this.fun2(new B());
	}

	public void fun2(A a) {// 向上转型
		a.printinfo();
	}
}

public class NoneInner {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new X().fun1();
	}

}
当B类就使用一次时,就可以使用匿名内部类了,实际开发中匿名内部类使用时很频繁的!
interface A {
	public void printinfo();
}

class X {//没有继承接口A,而是直接在方法的参数中直接实例化接口,同时实现上面的抽象方法
	public void fun1() {
		this.fun2(new A() {// 实例化接口,!!
			public void printinfo() {
				// TODO Auto-generated method stub
				System.out.println("下午去打球");
			}
		});
	}

	public void fun2(A a) {// 向上转型
		a.printinfo();
	}
}

public class NoneInner1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new X().fun1();
	}

}




上一篇:Go get LibreSSL SSL_connect: SSL_ERROR_SYSCALL


下一篇:[GF] 与 Laravel 设计相近的 Golang 框架 GoFrame