首页 > 其他 > 详细

常用类

时间:2020-09-20 23:57:20      阅读:47      评论:0      收藏:0      [点我收藏+]

常用类

常用类:

  1. 内部类

  2. object类

  3. object类常用方法

  4. 包装类

  5. string类

  6. BigDecimal类

内部类

定义:在类的内部定义一个完整的类

特点

  1. 编译之后可以生成独立的字节码文件

  2. 内部类可以直接访问外部类(这个内部类的一层外部)的私有成员,而不破坏封装性

  3. 内部类可以为外部内提供必要的内部功能组件

分类:

  1. 成员内部类

  2. 静态内部类

  3. 局部内部类

  4. 匿名内部类

成员内部类

1.性质:

  1. 在类的内部定义,与实例变量,实例方法同级别的类

  2. 成员内部类不能包含静态成员,但能包含静态常量(添加final关键词)

  3. 外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象

//依赖外部类创建内部类
package com.yyl.calss;
//外部类
public class Outer {
   //实例变量
   private String name="adeair";
   private int age=20;
   //内部类
   class Inner{
       private String adress="山东";
       private String phone="1234";
       //方法
       public void show(){
           //打印外部类属性
           System.out.println(name);
           System.out.println(age);
           //打印内部类属性
           System.out.println(adress);
           System.out.println(phone);
      }
  }
}
//依赖外部内创建内部类
package com.yyl.calss;
?
public class TestOuter {
   public static void main(String[] args) {
       //创建一个外部类对象
       Outer outer=new Outer();
       //创建一个内部类对象
       Outer.Inner inner=outer.new Inner();
       //一步到位
       //Outer.Inner inner=new Outer().new Inner();
       inner.show();
  }
}
  1. 当外部类和内部类存在重名属性时,会优先访问内部类属性

    //包括如何访问重名的外部类属性
    package com.yyl.calss;
    ?
    //外部类
    public class Outer{
       //实例变量
       private String name="adeair";
       private int age=20;
       //内部类
       class Inner{
           private String adress="山东";
           private String phone="1234";
           private String name="李四";//如果内部类属性名和外部类属性名字相同,加上out.this
           //方法
           public void show(){
               //打印外部类属性
               System.out.println(name);//输出“李四”
               System.out.println(Outer.this.name);//输出“adeair”
               System.out.println(age);
               //打印内部类属性
               System.out.println(adress);
               System.out.println(phone);
          }
      }
    }
    package com.yyl.calss;
    ?
    public class TestOuter {
       public static void main(String[] args) {
           //创建一个外部类对象
           Outer outer=new Outer();
           //创建一个内部类对象
           Outer.Inner inner=outer.new Inner();
           //一步到位
           //Outer.Inner inner=new Outer().new Inner();
           inner.show();
      }
    }

静态内部类

1.性质:

  1. 不依赖外部类对象,可以直接创建或者通过类名访问,可声明静态成员

  2. 只有内部类才可以用static

  3. 相当于外部类

    package com.yyl.class01;
    ?
    public class Outer {
       private String name="adeair";
       private String age="18";
       static class Inner{//静态内部类,和外部类相同
           private String adress="山东";
           private String phone="1234";
           //静态成员
           private static int money=1000;
           public void show(){
               //调用外部类属性
               //首先创建外部类对象
               Outer outer=new Outer();
               //调用外部类对象属性
               System.out.println(outer.name);
               System.out.println(outer.age);
               //调用静态内部类属性和方法
               System.out.println(adress);
               System.out.println(phone);
               //调用静态内部类静态属性
               System.out.println(Inner.money);
          }
      }
    }
    package com.yyl.class01;
    ?
    public class TestOuter {
       public static void main(String[] args) {
           Outer.Inner inner=new Outer.Inner();
           //调用方法
           inner.show();
      }
    }

局部内部类

1.性质

  1. 定义在外部类方法内,作用范围和创建对象范围仅限于当前范围

  2. 局部内部类前不能加任何访问修饰符(相当于方法成员)

  3. 不能包含static成员,但可以包含final static成员(常量)

  4. 局部内部类访问外部类当前方法中的局部变量时,因无法保证生命周期与自己相同,变量必须修饰为final

    package com.yyl.class03;
    ?
    public class Outer {
       private String name="刘德华";
       private int age=35;
       public void show(){
           //定义局部变量
           final String adress="山东";//finnal可以省略,jdk1.8默认自动添加final
                                       /*为什么加final
                                       因为函数执行完之后adress变量会消失,
                                       而Inner类和inner对象不会消失,所以
                                       在最后的输出adress时,adress只有声
                                       明为final常量才行(因为常量会在运行时
                                       被替代为对应常量,例如adress被替换为
                                       ”山东“)*/
           //局部内部类不能加访问修饰符
           class Inner{
               private String phone="1234";
               private String email="xxxxx@qq.com";
    ?
               public void show2(){
                   //访问外部类属性
                   System.out.println(Outer.this.name);
                   System.out.println(Outer.this.age);
                   //访问内部类
                   System.out.println(this.phone);
                   System.out.println(this.email);
                   //访问局部变量,jdk1.7要求变量必须是常量
                   //jdk 1.8自动添加final
                   //局部变量不能修改
                   System.out.println(adress);
              }
          }
           //创建局部内部类对象
            Inner inner=new Inner();
           inner.show2();
      }
    }
    package com.yyl.class03;
    ?
    public class TestOuter {
      public static void main(String[] args) {
          //不能直接调用Inner
          //直接调用Outer.show没有输出
          //在class inner外创建局部内部类对象之后可以直接调用函数打印结果
          Outer outer=new Outer();
          outer.show();
    ?
      }
    }
  5.  

常用类

原文:https://www.cnblogs.com/yylblog/p/13702418.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!