1. 自定义类实现枚举
  • 不需要提供set方法,因为枚举对象值通常为只读
  • 对枚举对象/属性使用final+static共同修饰,实现底层优化
  • 枚举对象名通常使用全部大写,满足常量的命名规范
  • 枚举对象根据需要,也可以有多个属性
  • 构造器私有化
  1. enum实现枚举
  • 使用关键字enum替代class
  • public static final Season SPRING = new Season("春天", "温暖"); 直接使用 SPRING(“春天”, “温暖”); 解读 常量名(实参列表)
  • 如果有多个常量(对象),用隔开
  • 枚举对象必须在枚举类的行首
final class Season extends java.lang.Enum<Season> {public static final Season SPRING;public static final Season SUMMER;public static Season[] values();public static Season valueOf(java.lang.String);static {};
}
  • 枚举类默认继承Enum类,类使用final修饰
  • 使用无参构造器创建枚举对象时,实参列表和小括号都可以忽略。
  1. 枚举类常用方法
  • toString:Enum类返回的是当前对象名,子类可以重写,用于返回对象的属性信息
  • name:返回当前对象名,子类不能重写
  • ordinal:返回当前对象的位置号,默认从0开始
  • values:返回当前枚举类中的所有常量对象
  • valueOf:将字符串转换为枚举对象,要求字符串必须为已有的常量名,否则报异常
  • compareTo:比较的是ordinal的值
  1. enum细节
  • 使用enum关键字后不能继承其他类,因为会隐式继承Enum,而java是单继承机制
  • 可以实现接口:enum 类名 implements 接口1, 接口2 {}
  1. 注解
  • 被称为元数据,用于修饰解释 包、类、方法、属性、构造器、局部变量等信息
  • 不影响程序逻辑,但可以被编译或运行,相当于嵌入代码中的补充信息
  • JavaSE中,用于标记过时的功能,忽略警告等。JavaEE中用来配置应用程序等任何切面,代替Java EE中旧版所遗留的冗余代码和XML配置等。
  • @Override注解:编译器去检查是否真的重写了父类的方法,语法校验
  • @interface不是接口的关键字,是注解类,jdk5.0加入的
  • @Target是修饰注解的注解,称为元注解
  • @Deprecated 修饰某个元素,表示已经过时,但是仍可以使用,用来做版本过渡
  • @SuppressWarnings抑制警告,具体警告类型看链接
  1. 元注解(修饰注解的注解)
  • Retention //指定注解的作用范围,SOURCE,CLASS,RUNTIME
  • Target //指定注解可以在哪些地方使用
  • Documented指定注解是否在javadoc中体现
    定义为Documented的注解必须设置Retention值为RUNTIME
  • Inherited //子类会继承父类注解 ,被Inherited修饰的注解,其子类将自动具有该注解。
  1. 异常分为两大类:
  • Error:java虚拟机无法解决的问题。JVM系统内部错误、资源耗尽等
  • Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性代码进行处理。
    • Exception分为运行时异常和编译时异常
  1. 异常体系图
  • 运行时异常,编译器检查不出来,一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。
  • 编译时异常,是编译器要求必须处置的异常
  1. 两种异常方式:try-catch-finally和throws,若没有显示使用try-catch-finally方式,默认使用throws扔出异常。
  2. 异常细节
  • 异常如果发生,则异常后面的代码块不会执行,直接进入catch块
  • 异常没有发生,则顺序执行try的代码块,不会进入到catch
  • 希望不管是否发生异常,都执行某段代码,则使用finally代码块
  • 可以使用多个catch语句捕获异常,子类异常写在前面,父类异常写在后面。
  • 可以直接使用try-finally,相当于没有捕获异常。
  1. jdk5之前手动装箱拆箱,jdk5之后自动装箱拆箱。自动装箱底层调用的是valueOf方法
  2. 自动装箱,底层使用的是Integer.valueOf(n1);自动拆箱,底层调用n1.intValue()
  3. 三元运算符是一个整体。Object obj1 = true?new Integer(1):new Double(2.0);由于三元运算符是一个整体所以会继承优先级最高的,所以输出1.0
  4. 包装类和String类的转换
包装类 -> String
Integer i = 100;
// 方式1
String s = i + "";
// 方式2
String s = i.toString();
// 方式3
String s = String.valueOf(i);
-----------------------
String -> 包装类
String s = "12345";
// 方式1
Integer i = Integer.parseInt(s);
// 方式2
Integer i = new Integer(s);
  1. Integer i = 1; // -128到127返回的是数组里的值,对象是同一个。
  2. 只要有基本类型,比较的就是值的大小。
  3. String细节
  • String实现了Serializable,可以串行化,意味着可以网络传输;
  • 实现了Comparable,说明String对象可以比较;
  • 字符串常量对象是用双引号括起的字符序列。
  • 字符使用unicode编码,一个字符占两个字节
  • String类是final类,不能被继承。
  • String中有属性private final char value[];用于存放字符串内容,赋值之后不可以修改。不可以修改的是value的地址,但是单个字符内容可以变化。
  1. 两种创建String对象的区别
String s = "hsp"; // 先从常量池查看是否有hsp的数据空间。若有,直接指向;没有,则重新创建,然后指向。s最终指向的是常量池的空间地址。
String s = new String("hsp"); // 先在堆中创建空间,里面维护了value属性,指向常量池的hsp空间。若常量池中没有hsp,重新创建,若有,直接通过value指向。最终指向的是堆中的空间地址。
  1. b.intern()//返回的是常量池的地址
  2. String a = “hello” + “abc”;//编译器优化,创建了一个对象,相当于String a = “helloabc”

    java基础笔记07-枚举、异常相关推荐

    1. Java基础笔记6——File、流、枚举、断言

      Java基础笔记6 十一.File 代表文件或目录的类. 所表示的文件或目录在计算机中不一定真实存在. 绝对路径:以盘符或者/开头的路径--不以当前路径为基准,直接跳转到指定的位置 相对路径:不以盘符 ...

    2. Java基础笔记 – 枚举类型的使用介绍和静态导入

      Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由 arthinking 发表于404 天前 ⁄ Java基础 ⁄ 暂无评论 ⁄ 被围观 1,433 views+ 1.枚举(Enum): JD ...

    3. JAVA自学笔记07

      JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

    4. Java基础笔记23-集合练习题

      Java基础笔记23-集合练习题 定义一个集合,实现去重复的功能 定义一个数组,数组中存放的是图片的后缀,给一个文件的名字,判断是否是图片 定义一个带有数字和字符串的集合,使用迭代器进行迭代,只输出字 ...

    5. Java基础笔记(2)——HashMap的源码,实现原理,底层结构是怎么样的

      Java基础笔记(2)--HashMap的源码,实现原理,底层结构是怎么样的 HashMap的源码,实现原理,底层结构 1.HashMap: HashMap是基于哈希表的 Map 接口的实现.此实现提 ...

    6. Java基础笔记(14)—— Java的基础类型和字节大小

      Java基础笔记(14)-- Java的基础类型和字节大小 Java基础笔记(14)-- Java的基础类型和字节大小 Java语言提供了八种基本类型.六种数字类型(四个整数型(默认是int 型),两 ...

    7. Java基础笔记(4w字长文警告)

      Java核心笔记 提示:点击右上角关注博主,收获共同话题 下面是我的个人学习Java的笔记,现在分享给广大友友: 文章目录 Java核心笔记 0.导论 标柱注释: 学习方法: 1 java概述 1.1 ...

    8. java基础笔记大全

      文章目录 第一章 java语言概论 第二章 基本数据类型 关键字 基本数据类型 常量 变量 第三章 运算符和表达式 1. 算数运算符 2. 赋值运算符 3. 比较运算符(关系运算符) 4. 逻辑运算符 ...

    9. 自学java基础笔记

      java基础教程 基础字符 public  公共的 class 类 static 静态的 void 无返回类型 main 主要的 String 字符串 args 参数 System 系统的 out 输 ...

    最新文章

    1. 10分钟搞定 Java 并发队列
    2. C#+WebSocket+WebRTC多人语音视频系统
    3. 实验探究 ioremap
    4. bind9 安装:部署自建dns系统
    5. 用Java获取vSphere相关数据
    6. 算法导论 思考题4-1
    7. 触发器报错“Not allowed to return a result set from a trigger”的解决方案
    8. CodeForces - 245H Palindromes区间dp_记忆化搜索
    9. java中的时间片概念_java中常用的时间处理类TimeUtil
    10. Xshell和Xftp免费版
    11. 系统集成项目管理案例答题技巧
    12. JavaScript高级程序设计(读书笔记)(七)
    13. AUFN Carplay盒子固件级视频及图文教程!
    14. 18个基于Web的代码开发编辑器
    15. PR标题动画模板 创意动态多行标题注释字幕条pr模板
    16. startx analyze
    17. Mybatis在集群环境下脏读问题
    18. java高级开发面试题
    19. unlink-sleepyholder
    20. LVGL misc log日志系统(lv_log.h)

    热门文章

    1. 沙盒账户无法登录的原因
    2. 二,区块链理论(定义及特性)
    3. python编程区分大小写吗_python区分大小写吗
    4. Unity 关于SteamVR2.0手柄震动问题_ SteamVR_Actions.default_Haptic.Execute()
    5. 杀毒软件发展史和国内杀毒软件状况
    6. 高数 |【23数一 李林六套卷】卷二 自用思路 及 知识点 整理
    7. 当今旗舰电视最新画质技术,马上就被联发科搬到手机上了
    8. 可生成彩色网格SVG背景的js插件
    9. steam搬砖项目,怎么做?详细解答
    10. linux安装图文识别(tesseract)的详细步骤(避坑)