学习日记-day04(java基础)

一.内部类

1.内部类: 一个类的内部又嵌套了另一个类的结构,被称为内部类.

2.类的五大成员: (1)属性 (2)方法 (3) 构造器 (4) 代码块 (5) 内部类

3.内部类最大的特点是可以直接访问私有属性.

4.内部类有四种:

    方法内:     

(1)局部内部类 (有类名) (2) 匿名内部类 (没有类名)

成员位置:

(1)成员内部类 (2) 静态内部类

5.局部内部类: 定义在局部位置,通常在方法中.

(1) 可以访问外部类所有成员,包含私有的

(2)不能添加修饰符,但是可以用final修饰

(3) 如果局部内部类和外部类有同样的变量,那么在内部类中访问的变量遵循就近原则,如果想调用外部类的那个属性,则通过 外部类名.this.变量名 这种格式访问.

6.匿名内部类:定义在局部位置,通常在方法中.

(1)它不仅是一个类,还是一个对象.

(2)基本语法 new 类名或接口名(){}.

7.成员内部类: 定义在外部类的成员位置.

(1)可以用修饰符修饰.

(2)作用域:作用在整个类体中.

(3)外部其他类如何使用成员内部类 : 外部类对象.new 内部类对象名();

8.静态内部类: 定义在外部类成员位置,但是它由static修饰

(1)可以直接访问外部类的静态成员,不能直接访问非静态成员.

(2)可以添加访问修饰符.

(3) 作用域: 整个类体

二.枚举

枚举属于一种特殊的类,里面只包含一组有限的特定的对象。
1.定义枚举类:  enum  类名{}
2.枚举类默认继承Enum类
3.父类Enum的方法
   
1) toString:Enum 类已经重写过了,返回的是当前对象
名,子类可以重写该方法,用于返回对象的属性信息
2) name:返回当前对象名(常量名),子类中不能重写
3) ordinal:返回当前对象的位置号,默认从 0 开始
4) values:返回当前枚举类中所有的常量
5) valueOf:将字符串转换成枚举对象,要求字符串必须
为已有的常量名,否则报异常!
6) compareTo:比较两个枚举常量,比较的就是编号!

三.注解

三个基本的注解:

(1).@Override: 限定某个方法,是重写父类方法, 该注解只能用于方法

(2)@Deprecated: 用于表示某个程序元素(类, 方法等)已过时
(3) @SuppressWarnings: 抑制编译器警告
jdk的元注解:  修饰注解的注解.
(1) Retention //指定注解的作用范围,三种 SOURCE,CLASS,RUNTIME
(2) Target // 指定注解可以在哪些地方使用
(3) Documented //指定该注解是否会在 javadoc 体现
(4) Inherited //子类会继承父类注解

四.异常

1.java语言中,将程序执行中发生的不正常情况成为"异常".(开发过程中的语法错误和逻辑错误不是异常)

2.异常分为两大类: 

     (1) Error(错误) : java虚拟机无法解决的严重问题. 比如: jvm系统内部错误、资源耗尽等严重情况。比如: StackOverflowError栈溢出 和 OOM(out of memory),error是严重错误,程序会崩溃,而且无法处理这种异常。

     (2) Exception: 其他因编程错误或偶然的外在因素导致的一般性问题,可以进行处理,例如空指针访问,试图读取不存在的文件,网络连接断等, Exception分为两大类:   运行时异常(程序运行时发生的异常)和编译时异常(编程时,编译器检查出来的异常).

3.

3.五大常见的运行时异常

(1). NullPointerException 空指针异常

当应用程序试图在需要对象的地方使用 null 时,抛出该异常.
(2)ArithmeticException 数学运算异常 ArithmeticException_.java
当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时.
(3)ArrayIndexOutOfBoundsException 数组下标越界异常
用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引
(4)ClassCastException 类型转换异常  
当试图将对象强制转换为不是实例的子类时,抛出该异常。例如,以下代码将生成一个 ClassCastException
(5)NumberFormatException 数字格式不正确异常
当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常 .
4.编译异常 :编译期间必须处理的异常,否则编译不通过.
5.常见的编译异常:

6.异常处理机制 : 当异常发生时对异常的处理.
(1)异常处理的方式: try{} catch(){}   或者  将异常抛出,交给调用者处理,最顶级的处理者就是jvm.
如果由jvm处理异常它会直接输出异常,然后结束程序.(如果异常不做处理,会默认由jvm处理)
(2)注意在try,catch,finall中定义的变量作用域只在当前块中.
(3)finally无论发生异常还是不发生异常都必须执行,就算是return了,finally也必须执行之后再return
这里还有一个细节:
 public static int test() {
        int a=1;
        try {
            int i = 1 / 0;
            return 10;
        } catch (Exception e) {
             return a;  //先保存当前a的值,待执行完finally后再return
        } finally {
            a+=a;
        }
    }

上面的代码返回值为1;

7.自定义异常:  编写一个类继承runtimeException或者Exception,如果继承runtimeException,则表示是一个运行时异常,如果是Exception,则表示是一个编译异常
8.throw 和 throws 的区别

                      

五.包装类

1.包装类:  针对八大基本数据类型相应的引用类型-包装类.

 2.jdk1.5之后出现了自动装箱,自动拆箱.

自动装箱:  将一个int数据赋给一个Integer引用,(调用的是Integer.valueOf(int类型的数据));

自动拆箱: 将一个Integer对象赋给一个int类型的变量,  (调用的是Integer.intValue());

3.包装类型和String的互转

以Integer为例: 

    包装类型转为String类型: (1) Integer a=1;  String str=a+"";

                                             (2)Integer a=1;   String  str=a.toString();

                                             (3)Integer a=1;   String str=Stringt.valueOf(a);

    String类型转为包装类型:(1) String str="123";   Integer a=Integer.parseInt(str);

                                           (2) String str="123"    Integer a=new Integer(str);

4.Integer会缓存-128-127这些整型数据对应的对象,在这个范围内的Integer对象都是同一个对象.

5.String字符串:

 

 (1)String 类实现了接口 Serializable【String 可以串行化:可以在网络传输】

     接口 Comparable [String 对象可以比较大小]
(2)String是final类,不能被继承.
(3) String 有属性 private final char value[]; 用于存放字符串内容
(4)value字符串是一个final类型的,表示这个value的引用地址不能变,但是char[]这里面的值可以改.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面向工作编程的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值