首页 > 编程语言 >十一,JAVA内部类,枚举

十一,JAVA内部类,枚举

时间:2023-12-17 11:34:25浏览次数:38  
标签:十一 JAVA void System 枚举 println new 异常 out

内部类

  • 描述事物内部的事物 ; 就是一个类定义在另一个类的内部

  • 当内部类定义在成员变量的位置上时,可以被成员修饰符修饰,修饰后会具备修饰符的特征:

    • private : 只能在当前类中访问

    • static : 访问出现局限性

    private int num = 110;    
class Inner{
       public void show(){
           // 内部类可以访问所在外部类的所有成员,包括私有成员在内
           System.out.println("num = " + num);
      }
  }
public void function(){  
   // 外部类要访问内部类,必须创建对象  
   Inner inner = new Inner();  
   inner.show();
}
  • 间接访问 :

    • Outer outer = new Outer();
      outer.function();
  • 直接访问(了解) :

    • Outer.Inner inner = new Outer().new Inner();
      inner.show();
  • 部内部类 : 定义在局部位置的内部类,不能被成员修饰符修饰

  • 在局部内部类中只可以访问当前方法中 final 类型的参数与变量

匿名内部类 : 没有名字的内部类

  • 本质 : 就是一个有点胖的匿名对象

  • 格式 : new 父类/接口(){} ;

  • new Object(){    
       public void show1(){
       System.out.println("匿名内部类 num = " + num);    
    }
    }.show1();
  • computer.function(new USB(){ 
       @Override    public void start() {  
           System.out.println("摄像头开启");  
      }  
       @Override    public void close() {
           System.out.println("摄像头关闭");  
      }
    });
  • Object类中的equals默认使用 == 进行比较

获取字节码文件对象的三种方式

  • // 1. Object  : Class<?>    getClass()
    a = new A();
    Class<?> clazz1 = a.getClass();
    // <> : 泛型
  • // 2. 所有的类型都有一个静态的默认的属性 :   .class
    Class<?> clazz2 = A.class;
    System.out.println("int.class = " + int.class);
    System.out.println("void.class = " + void.class);
  • // 3. Class : public static Class forName(String 全类名)
    Class<?> clazz3 = Class.forName("com.msr.lesson07.A");
  • // 返回对象的哈希代码值/地址值。
    System.out.println(a.hashCode());
    // 十进制 ---> 十六进制
    System.out.println(Integer.toHexString(a.hashCode()));
    // void notify()
    //             唤醒正在等待此对象的 监控。
    // void notifyAll()
    //             唤醒在此对象的监视器上等待的所有线程。
    // void wait()
    //         使当前线程等待,直到它被唤醒,通常 通过被通知或中断。
    // void wait•(long timeoutMillis)
    //         使当前线程等待,直到它被唤醒,通常 通过被通知或打断,或直到 一定数量的实时时间已经过去。
    // void wait•(long timeoutMillis, int nanos)

枚举

  • 一个特殊的类,对象是有限个并且是不可变的

  • public enum Season { 
       SPRING("春天", "春风又绿江南岸"),  
       SUMMER("夏天", "映日荷花别样红"),
       AUTUMN("秋天", "秋水共长天一色"),  
       WINTER("冬天", "千里冰封,万里雪飘");
    }
    // 枚举中的构造器都是私有
       Season(String name, String desc) {
           this.name = name;
           this.desc = desc;
      }

异常

  • 异常体系 : Throwable : 是Java语言中所有错误和异常的超类 |Error/错误 : 表示合理的应用程序不应该试图捕捉的严重问题. |Exception/异常 : 表示合理的应用程序可能想要捕获的条件。 |RuntimeException/运行时异常 : 代码执行过程中才出现的异常 , 比如 NullPointerException |RuntimeException之外的异常/编译时异常 : 编译时期就会提示,比如 ClassNotFoundException

  • 只有作为此类实例(或其子类之一)的对象才会由Java虚拟机抛出, 或者可以由Java抛出语句抛出。 类似地,只有这个类或它的一个子类可以是catch子句中的参数类型。 为了在编译时检查异常,Throwable和任何不属于RuntimeException或Error子类的Throwable子类都被视为已检查异常

  • 异常处理基本格式 :
           try{
               可能发生异常的代码;
          }catch(异常类型  异常名){
               异常发生时的处理方式;
          }finally{
               一定要被执行的代码;
          }
  • 注意 : 1.有异常但没有异常处理结构时 : 程序会终止在异常发生的那一行 2.有异常并且有对应异常处理结构时 : 程序在异常产生的位置开始跳转 ----> catch语句 ----> finally语句 ----> 程序正常运行 3.有异常并且有异常处理结构 , 但是没有对产生的异常进行处理时 : 程序在异常产生的位置开始跳转 ----> finally语句 ----> 程序打印异常信息 ----> 程序终止 4.有 处理方式 , 但没有异常产生 : try语句执行完后 --> finally语句 ---> 程序正常运行

  • // finally 唯一不会被执行的情况 // System.exit(0);// 程序立即结束 // finally 不是必须的,常用于资源释放 , 比如 : scanner.close();

  • 多异常的处理 : 当一个try对应多个catch语句时 , catch语句中的父类异常要写到最后

  • throw : 动词 , 用于函数内部抛出一个异常 ; 如果抛出的是一个编译时异常,需要在函数部分进行声明 ; 如果抛出的是一个运行时异常,不需要在函数部分进行声明 ; throws : 名次 , 用于函数声明部分 , 声明异常

  • String getMessage() : 获取异常产生的原因 String toString() : 异常名称 + 异常原因 void printStackTrace() : 打印异常的原因 , 异常名称 以及异常产生的位置 该方法也是 JVM 的默认处理方法

标签:十一,JAVA,void,System,枚举,println,new,异常,out
From: https://www.cnblogs.com/tonnpo/p/17908883.html

相关文章

  • Java之可变参数和Collections的详细解析
     1.可变参数在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化.格式:修饰符返回值类型方法名(参数类型...形参名){}底层:其实就是一个数组好处:在传递数据的时候,省的我们自己创建数组并添加元素了,JDK底层帮我们自动创建数组并添加元素了......
  • 无涯教程-Java - boolean matches(String regex)函数
    此字符串是否与给定的正则表达式匹配,以str.matches(regex)形式调用此方法所产生的输出与表达式Pattern.matches(regex,str)完全相同。 booleanmatches-语法这是此方法的语法-publicbooleanmatches(Stringregex)这是参数的详细信息-regex  - 此字符串要匹配的正......
  • 第八章:SpringBoot-Java工程及关系和修改启动logo(了解)
    一、springbootJava工程(了解)二、关闭&修改启动logo(了解)......
  • Java-用递归的思想求斐波那契数列第n项的值
    一、思想-多路递归多路递归multirecursion就是在每次递归时包含多次(大于一次)的自身调用。也就是一个问题会被拆分成多个子问题。多路递归比单路递归在分析时间复杂度上比较复杂一些。二、斐波那契数列三、例子以n=4为例,当我们用下面(第四部分)的代码实现时,这个多路递归的求解过......
  • 命令行窗口java运行报错:Error: A JNI error has occurred,please check your installa
     jre匹配问题解决方法:第一步:右键点击构建路径。 第二步将原来的系统库移除第三步添加系统库 第四步选择与自己电脑java相符的执行环境 ......
  • 无涯教程-Java - int length()函数
    此方法返回此字符串的长度。长度等于字符串中16位Unicode字符的数量。intlength()-语法这是此方法的语法-publicintlength()intlength()-返回值此方法返回此对象表示的字符序列的长度。intlength()-示例importjava.io.*;publicclassTest{publicstati......
  • 无涯教程-Java - int lastIndexOf(String str)函数
    如果string参数作为该对象中的子字符串出现一次或多次,则它返回最后出现的第一个字符的索引,如果没找到,则返回-1。intlastIndexOf-语法这是此方法的语法-publicintlastIndexOf(Stringstr)这是参数的详细信息-str   -  一个字符串。intlastIndexOf-返回值......
  • Java正则操作类Pattern和Matcher​详解
    Java正则操作类Pattern和MatcherPattern类Pattern位于java.util.regex包中,是正则表达式的编译表示形式,此类的实例是不可变的,可供多个并发线程安全使用。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态compile方法,它返回一个Pattern.split(CharSeque......
  • Storm 集群的搭建及其Java编程进行简单统计计算
    一、Storm集群构建编写storm与zookeeper的yml文件 stormyml文件的编写具体如下:version:'2'services:zookeeper1:image:registry.aliyuncs.com/denverdino/zookeeper:3.4.8container_name:zk1.cloudenvironment:-SERVER_ID=1......
  • 无涯教程-Java - int lastIndexOf(String str, int fromIndex)函数
    此方法返回最后一次出现的指定子字符串在此字符串内的索引,从指定索引(fromIndex)开始向后搜索。intlastIndexOf-语法publicintlastIndexOf(Stringstr,intfromIndex)这是参数的详细信息-fromIndex - 从中开始搜索的索引。str        - 一个......