Object类、包装类、内部类详解

来源:互联网 发布:js设置div文本内容 编辑:程序博客网 时间:2024/05/16 08:04

1、Object类

1、概念:
1.1 所有类在创建时都默认继承了java.lang.Object
1.2 所有类对象都可以声明为类对象的引用

Object ob1=new String();Object ob2=new Integer();

2、子类继承了其方法:
2.1 equals
类似于”==”,比较对象的引用
ps:具体前面blog有详讲,这里就不赘述了
2.2 toString():
返回一个对象的字符串表示形式(可改写)
源码如下:

public String toString() {        return getClass().getName() + "@" + Integer.toHexString(hashCode());    }

2.3、getClass():
返回一个对象的实际类型
ps:
- 其返回的是具体实例化的类型
- instanceof判断的是其是否实例化了,包括其父类的判断

2、包装类

1、概念:
包装类是对基本类型的包装:所以也是8个
2、列举表:

基本类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean

3、包装类的转换:
包装类、String、基本类型间两两转换
具体可参考我前一篇关于String的blog,中有详解

3、内部类*

1、成员内部类
1.1 访问权限:
可以访问外部内的静态或非静态的属性和方法
1.2 实例:
先实例化外部类,再实例化内部类
2、静态内部类
1.1 访问权限:
可以访问外部内的静态的属性和方法
1.2实例:
先实例化外部类,再调用静态类
3、局部内部类
1.1 访问权限:
可以访问外部内的静态或非静态的属性和方法
1.2 实例:
在方法中实例化,接着实例化外部类,调用方法
4、匿名内部类
1.使用情况:
1.1 只实例化一次的对象
1.2 局部内部类要实现接口或继承某些父类

最后贴上练习代码君:

package com.jacob.javase;/* * 内部类分类: * 1.成员内部类 * 2.静态内部类 * 3.局部内部类 * 4.匿名内部类 */public class InnerClass {    public static void main(String[] args) {        // 成员内部类的实例        // MemberInner.Inner2 mi=(new MemberInner()).new Inner2();        // mi.doSomething();        // MemberInner mi1=new MemberInner();        // mi1.method();        // 静态内部类的实例(可直接通过类调用)        // StaticInner.Inner si=new StaticInner.Inner();        // si.test();        // 实例局部类        // LocalInner li = new LocalInner();        // li.doSomething();        // 4.匿名内部类:使用条件:        // 4.1 局部内部类可能就需要创建一个对象        // 4.2 局部内部类需要实现外部接口或继承某些父类        new InnerClass();        new Test() {            @Override            public void m1() {                // TODO Auto-generated method stub                System.out.println("匿名类test");            }        }.m1();    }}interface Test {    void m1();}// 1.成员内部类:class MemberInner {    private int a = 4;    // 访问权限:可访问外部类的的静态与非静态的属性和方法    public class Inner2 {        private int a = 5;        public void doSomething() {            System.out.println("Hello World!");            System.out.println(this.a);// 5            System.out.println(MemberInner.this.a);// 4        }    }    public void method() {        // 实例化成员内部类        Inner2 inner = new Inner2();        System.out.println(inner.a);    }}// 2.静态内部类:class StaticInner {    private static int a = 4;    // 访问权限:只能访问外部类的静态属性和方法    public static class Inner {        public void test() {            System.out.println(a);        }    }}// 3.局部内部类// 访问权限:可以访问外部内的静态或非静态属性和方法:class LocalInner {    public void doSomething() {        int b = 1;        final int a = 4;        class Inner3 {            int c = 1;            public void test() {                System.out.println(a + b);            }        }        // 只能在方法块中实例        Inner3 li1 = new Inner3();        li1.test();        System.out.println(li1.c);    }}
1 0