java基础笔记07-枚举、异常
- 自定义类实现枚举
- 不需要提供set方法,因为枚举对象值通常为只读
- 对枚举对象/属性使用final+static共同修饰,实现底层优化
- 枚举对象名通常使用全部大写,满足常量的命名规范
- 枚举对象根据需要,也可以有多个属性
- 构造器私有化
- 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修饰
- 使用无参构造器创建枚举对象时,实参列表和小括号都可以忽略。
- 枚举类常用方法
- toString:Enum类返回的是当前对象名,子类可以重写,用于返回对象的属性信息
- name:返回当前对象名,子类不能重写
- ordinal:返回当前对象的位置号,默认从0开始
- values:返回当前枚举类中的所有常量对象
- valueOf:将字符串转换为枚举对象,要求字符串必须为已有的常量名,否则报异常
- compareTo:比较的是ordinal的值
- enum细节
- 使用enum关键字后不能继承其他类,因为会隐式继承Enum,而java是单继承机制
- 可以实现接口:enum 类名 implements 接口1, 接口2 {}
- 注解
- 被称为元数据,用于修饰解释 包、类、方法、属性、构造器、局部变量等信息
- 不影响程序逻辑,但可以被编译或运行,相当于嵌入代码中的补充信息
- JavaSE中,用于标记过时的功能,忽略警告等。JavaEE中用来配置应用程序等任何切面,代替Java EE中旧版所遗留的冗余代码和XML配置等。
- @Override注解:编译器去检查是否真的重写了父类的方法,语法校验
- @interface不是接口的关键字,是注解类,jdk5.0加入的
- @Target是修饰注解的注解,称为元注解
- @Deprecated 修饰某个元素,表示已经过时,但是仍可以使用,用来做版本过渡
- @SuppressWarnings抑制警告,具体警告类型看链接
- 元注解(修饰注解的注解)
- Retention //指定注解的作用范围,SOURCE,CLASS,RUNTIME
- Target //指定注解可以在哪些地方使用
- Documented指定注解是否在javadoc中体现
定义为Documented的注解必须设置Retention值为RUNTIME - Inherited //子类会继承父类注解 ,被Inherited修饰的注解,其子类将自动具有该注解。
- 异常分为两大类:
- Error:java虚拟机无法解决的问题。JVM系统内部错误、资源耗尽等
- Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性代码进行处理。
- Exception分为运行时异常和编译时异常
- 异常体系图
- 运行时异常,编译器检查不出来,一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。
- 编译时异常,是编译器要求必须处置的异常
- 两种异常方式:try-catch-finally和throws,若没有显示使用try-catch-finally方式,默认使用throws扔出异常。
- 异常细节
- 异常如果发生,则异常后面的代码块不会执行,直接进入catch块
- 异常没有发生,则顺序执行try的代码块,不会进入到catch
- 希望不管是否发生异常,都执行某段代码,则使用finally代码块
- 可以使用多个catch语句捕获异常,子类异常写在前面,父类异常写在后面。
- 可以直接使用try-finally,相当于没有捕获异常。
- jdk5之前手动装箱拆箱,jdk5之后自动装箱拆箱。自动装箱底层调用的是valueOf方法
- 自动装箱,底层使用的是Integer.valueOf(n1);自动拆箱,底层调用n1.intValue()
- 三元运算符是一个整体。
Object obj1 = true?new Integer(1):new Double(2.0);
由于三元运算符是一个整体所以会继承优先级最高的,所以输出1.0 - 包装类和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);
- Integer i = 1; // -128到127返回的是数组里的值,对象是同一个。
- 只要有基本类型,比较的就是值的大小。
- String细节
- String实现了Serializable,可以串行化,意味着可以网络传输;
- 实现了Comparable,说明String对象可以比较;
- 字符串常量对象是用双引号括起的字符序列。
- 字符使用unicode编码,一个字符占两个字节
- String类是final类,不能被继承。
- String中有属性private final char value[];用于存放字符串内容,赋值之后不可以修改。不可以修改的是value的地址,但是单个字符内容可以变化。
- 两种创建String对象的区别
String s = "hsp"; // 先从常量池查看是否有hsp的数据空间。若有,直接指向;没有,则重新创建,然后指向。s最终指向的是常量池的空间地址。
String s = new String("hsp"); // 先在堆中创建空间,里面维护了value属性,指向常量池的hsp空间。若常量池中没有hsp,重新创建,若有,直接通过value指向。最终指向的是堆中的空间地址。
- b.intern()//返回的是常量池的地址
- String a = “hello” + “abc”;//编译器优化,创建了一个对象,相当于String a = “helloabc”
java基础笔记07-枚举、异常相关推荐
- Java基础笔记6——File、流、枚举、断言
Java基础笔记6 十一.File 代表文件或目录的类. 所表示的文件或目录在计算机中不一定真实存在. 绝对路径:以盘符或者/开头的路径--不以当前路径为基准,直接跳转到指定的位置 相对路径:不以盘符 ...
- Java基础笔记 – 枚举类型的使用介绍和静态导入
Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由 arthinking 发表于404 天前 ⁄ Java基础 ⁄ 暂无评论 ⁄ 被围观 1,433 views+ 1.枚举(Enum): JD ...
- JAVA自学笔记07
JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...
- Java基础笔记23-集合练习题
Java基础笔记23-集合练习题 定义一个集合,实现去重复的功能 定义一个数组,数组中存放的是图片的后缀,给一个文件的名字,判断是否是图片 定义一个带有数字和字符串的集合,使用迭代器进行迭代,只输出字 ...
- Java基础笔记(2)——HashMap的源码,实现原理,底层结构是怎么样的
Java基础笔记(2)--HashMap的源码,实现原理,底层结构是怎么样的 HashMap的源码,实现原理,底层结构 1.HashMap: HashMap是基于哈希表的 Map 接口的实现.此实现提 ...
- Java基础笔记(14)—— Java的基础类型和字节大小
Java基础笔记(14)-- Java的基础类型和字节大小 Java基础笔记(14)-- Java的基础类型和字节大小 Java语言提供了八种基本类型.六种数字类型(四个整数型(默认是int 型),两 ...
- Java基础笔记(4w字长文警告)
Java核心笔记 提示:点击右上角关注博主,收获共同话题 下面是我的个人学习Java的笔记,现在分享给广大友友: 文章目录 Java核心笔记 0.导论 标柱注释: 学习方法: 1 java概述 1.1 ...
- java基础笔记大全
文章目录 第一章 java语言概论 第二章 基本数据类型 关键字 基本数据类型 常量 变量 第三章 运算符和表达式 1. 算数运算符 2. 赋值运算符 3. 比较运算符(关系运算符) 4. 逻辑运算符 ...
- 自学java基础笔记
java基础教程 基础字符 public 公共的 class 类 static 静态的 void 无返回类型 main 主要的 String 字符串 args 参数 System 系统的 out 输 ...
最新文章
- 10分钟搞定 Java 并发队列
- C#+WebSocket+WebRTC多人语音视频系统
- 实验探究 ioremap
- bind9 安装:部署自建dns系统
- 用Java获取vSphere相关数据
- 算法导论 思考题4-1
- 触发器报错“Not allowed to return a result set from a trigger”的解决方案
- CodeForces - 245H Palindromes区间dp_记忆化搜索
- java中的时间片概念_java中常用的时间处理类TimeUtil
- Xshell和Xftp免费版
- 系统集成项目管理案例答题技巧
- JavaScript高级程序设计(读书笔记)(七)
- AUFN Carplay盒子固件级视频及图文教程!
- 18个基于Web的代码开发编辑器
- PR标题动画模板 创意动态多行标题注释字幕条pr模板
- startx analyze
- Mybatis在集群环境下脏读问题
- java高级开发面试题
- unlink-sleepyholder
- LVGL misc log日志系统(lv_log.h)
热门文章
- 沙盒账户无法登录的原因
- 二,区块链理论(定义及特性)
- python编程区分大小写吗_python区分大小写吗
- Unity 关于SteamVR2.0手柄震动问题_ SteamVR_Actions.default_Haptic.Execute()
- 杀毒软件发展史和国内杀毒软件状况
- 高数 |【23数一 李林六套卷】卷二 自用思路 及 知识点 整理
- 当今旗舰电视最新画质技术,马上就被联发科搬到手机上了
- 可生成彩色网格SVG背景的js插件
- steam搬砖项目,怎么做?详细解答
- linux安装图文识别(tesseract)的详细步骤(避坑)
- Java基础笔记6——File、流、枚举、断言