包装类及匿名内部类

来源:互联网 发布:linux 的more怎么翻页 编辑:程序博客网 时间:2024/06/11 22:04

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

图1图1

其所继承的父类不尽相同

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

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

图2图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 stubString s = "2784";//全是由数字组成的字符串int x = Integer.parseInt(s);//静态方法,直接调用System.out.println(x);}}
二、内部类:

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

interface A {public void printinfo();}class B implements A {// 实现接口@Overridepublic void printinfo() {// TODO Auto-generated method stubSystem.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 stubnew 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 stubSystem.out.println("下午去打球");}});}public void fun2(A a) {// 向上转型a.printinfo();}}public class NoneInner1 {public static void main(String[] args) {// TODO Auto-generated method stubnew X().fun1();}}




0 0
原创粉丝点击