文章目录

  • 11章 枚举和注解
    • 11.1枚举
    • 11.2注解
  • 12章 异常
    • 12.1 异常类型
    • 12.2异常处理
      • 1)try - catch - finally
      • 2)throws
    • 12.3 自定义异常
  • 13章 包装类wrapper
    • 13.1包装类
    • 13.2 String——不可变字符序列
    • 13.2 StringBuffer——可变字符序列
    • 13.3 StringBuilder
    • 13.4 Math
    • 13.5Arrays——管理或者操作数组
    • 13.6System
    • 13.7大数处理——BigInteger,BigDecimal
    • 13.8日期类Date
    • String练习题

11章 枚举和注解

11.1枚举

季节类——用户可以随意修改——但是季节类是有限且只读的——>枚举类(有限的 特定的对象)
用法示例

package com.hsp.test;public class Season {public static void main(String[] args) {System.out.println(Season2.SPRING.getDisc());}enum Season2{SPRING("春天", "温暖"),WINTER("冬天", "寒冷"),AUTUMN("秋天", "凉爽"),SUMMER("夏天", "炎热"),What();// public static final Season SPRING = new Season("春天", "温")private String name;private String disc;Season2() {}Season2(String name, String disc) {this.name = name;this.disc = disc;}public String getName() {return name;}public String getDisc() {return disc;}@Overridepublic String toString() {return "Season2{" +"name='" + name + '\'' +", disc='" + disc + '\'' +'}';}}}

枚举需要写在第一行
常用方法:
1)toString:Enum 类已经重写过了,返回的是当前对象
名,子类可以重写该方法,用于返回对象的属性信息
2) name:返回当前对象名(常量名),子类中不能重写
3) ordinal:返回当前对象的位置号,默认从 0 开始
4) values:返回当前枚举类中所有的常量
5) valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常!
6) compareTo

11.2注解

@Override只能修饰方法。其实起到一个检查的作用,看看是否真的重写了。
@Deprecated表示过时了,但不是不能用。可以作为版本升级的过渡使用。
@SupressWarinings抑制编译器警告。通常我们可以放置具体的语句, 方法,
四种元注解:修饰注解的注解

  1. Retention //指定注解的作用范围,三种 SOURCE,CLASS,RUNTIME
  2. Target // 指定注解可以在哪些地方使用
  3. Documented //指定该注解是否会在 javadoc 体现
  4. Inherited //子类会继承父类注解

12章 异常

12.1 异常类型

运行时异常不要求强制处理,编译时异常一定要进行处理

常见的运行时异常包括:

  1. NullPointerException 空指针异常
  2. ArithmeticException 数学运算异常
  3. ArrayIndexOutOfBoundsException 数组下标越界异常
  4. ClassCastException 类型转换异常
  5. NumberFormatException 数字格式不正确异常

12.2异常处理

1)try - catch - finally

程序员在代码中捕获异常,自行处理
细节
如果异常发生了,则在try中异常位置后面的代码不会执行
try finally 不管发生什么异常,都必须执行某个业务逻辑。但是没有捕获异常

2)throws

将异常抛出,交给调用者处理,最顶级的是jvm
编译异常必须处理,运行异常有默认处理机制,不一定要显式处理
子类重写父类的方法,子类抛出的异常要么和父类一致,要么为父类抛出类型的子类型

12.3 自定义异常

一般都是继承runtime exception,也就是运行时异常,这样可以使用默认处理机制。
throw 手动生成异常的关键字,在方法体中,后面跟的是异常对象
throws异常处理的一种方式,在方法声明处,后面跟的是异常类型。
https://www.jianshu.com/p/06755f52ba90

13章 包装类wrapper

13.1包装类

——基本数据类型用法的扩展
手动装箱和拆箱

     int a = 10;Integer b = Integer.valueOf(a);int aa = b.intValue();String str = b.toString();String str1 = b + "";String str2 = String.valueOf(b);Integer b2 = Integer.parseInt(str);Integer b3 = new Integer(str);

三元运算符是一个整体,会提升精度
-128-127对象缓存
只要有基本数据类型,== 判断的就是值是否相等

13.2 String——不可变字符序列

复用率高,效率低。

Unicode编码,一个汉字或者字母都是占两个字节
串行化——可以在网络上传输;可以相互比较大小

String是final类型,不能被其他类继承
private final char value[] 不可以修改(地址不可以修改,单个字符的内容可以变化)

String str1 = "java";//指向常量池
String str2 = new String("java");//指向堆中的对象,堆中的对象再指向常量池

常量相加,看的是常量池,变量相加,看的是堆

常用方法:

13.2 StringBuffer——可变字符序列

如果需要对字符串做大量的修改

——对于String的增强
不需要每次都更改地址
append
delete(start,end)
replace(start,end,string)
indexOf insert length
StringBuffer 父类——AbstractStringBuilder

13.3 StringBuilder

不是线程安全的——单线程使用

String 类设计成不可变的原因及好处?
其实好处就是原因,String 设计成不可变,主要是从性能和安全两方面考虑。
1、常量池的需要
这个方面很好理解,Java 中的字符串常量池的存在就是为了性能优化。
字符串常量池(String pool)是 Java 堆内存中一个特殊的存储区域,当创建一个 String 对象时,假如此字符串已经存在于常量池中,则不会创建新的对象,而是直接引用已经存在的对象。这样做能够减少 JVM 的内存开销,提高效率。
所以,如果字符串是可变的,那么常量池就没有存在的意义了。
2、hashcode 缓存的需要
因为字符串不可变,所以在它创建的时候 hashcode 就被缓存了,不需要重新计算。这就使得字符串很适合作为 HashMap 中的 key,效率大大提高。
3、多线程安全
多线程中,可变对象的值很可能被其他线程改变,造成不可预期的结果。而不可变的 String 可以自由在多个线程之间共享,不需要同步处理。

13.4 Math

abs绝对值 pow求幂 ceil向上取整 floor向下取整
round四舍五入 sqrt开方 random [0 , 1)之间的随机小数
System.out.println((int)(2 + Math.random() * (7 - 2 + 1)

13.5Arrays——管理或者操作数组

toString
sort——可以直接使用,也可以自己定制排序
实现comparator接口的匿名内部类

binarySearch——二叉查找,要求必须排序好,返回下标。如果不存在返回应该在的位置取负值
copyOf数组复制 可以选择拷贝多少个数值
fill数组填充Arrays.fill(num,99);
equals比较两个数组的元素是否相同
asList将数据转成List集合返回

13.6System

exit(0)
arraycopy(src,0,dest,0,length)
currentTimeMillens 距离1970-1-1毫秒数
gc

13.7大数处理——BigInteger,BigDecimal

整数 bigInteger.add() subtract() multiply() divide()
小数 调用divide方法的时候指定精度BigDecimal.ROUND_CEILING保留分子的精度

13.8日期类Date

Date

     Date d1 = new Date();System.out.println(d1);//Thu Dec 22 08:43:07 CST 2022SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E");System.out.println(sdf.format(d1));//2022年12月22日 08:43:07 星期四Date parse = sdf.parse(format);System.out.println(parse);

Calendar
抽象类,构造器私有,可以通过getInstance获取实例
需要自己进行格式化

System.out.println("月:" + (c.get(Calendar.MONTH) + 1))

JDK8
LocalDate年月日 LocalTime时分秒 LocalDateTime年月日时分秒

LocalDateTime ldt = LocalDateTime.now(); //LocalDate.now();//LocalTime.now()
System.out.println(ldt);
//2. 使用 DateTimeFormatter 对象来进行格式化
// 创建 DateTimeFormatter 对象
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = dateTimeFormatter.format(ldt);
System.out.println("格式化的日期=" + format);
System.out.println("年=" + ldt.getYear());

String练习题

字符串反转

     String str = "123456";char[] ch = str.toCharArray();new String(ch);str.indexOf('')

判断是否是数字

if (ch[i] < '0' || ch[i] > '9')

格式化

String str = "Han Sun Ping";
String[] name = str.split(" ");
String format1 = String.format("%s, %s .%c", name[0], name[2], name[1].toUpperCase().charAt(0));
System.out.println(format1);

韩顺平java-枚举和注解异常包装类相关推荐

  1. java 枚举和注解、异常

    java 枚举和注解.异常 文章目录 java 枚举和注解.异常 枚举 注解 异常 异常处理 throw和throws的区别 枚举 注解 异常 异常处理 throw和throws的区别

  2. 韩顺平 java坦克大战_坦克大战完整版(韩顺平java)

    [实例简介] 坦克大战完整源代码(韩顺平java视频配套) [实例截图] [核心代码] 5i86q5 └── 源码 └── Class14 ├── 111.wav ├── bin │   ├── bo ...

  3. 韩顺平Java自学笔记 反射

    一.反射入门案例 目录 一.反射入门案例 二.反射的机制 1.反射的原理 2.反射相关的类 3.反射的优点和缺点 三.Class类详解 1.Class类的特征 2.Class的常用方法 3.获取Cla ...

  4. 韩顺平java基础——坦克大战(含有线程、I\O流的讲解)

    写在最前边: 研究生一枚,为后端实习和未来工作打基础.无意间发现韩顺平老师的课程,细心细致,讲课和吴恩达老师一样,都是保姆式讲解,各种基础知识都会补充,爱了. 韩顺平老师课程地址:https://ww ...

  5. Java笔记(韩顺平Java基础12-14章)

    Java学习笔记(第12章 P444-P459)(第13章P460-P498)(第14章P499-P553) 第12章 异常-Exception 异常介绍 编译异常 异常处理 try-catch异常处 ...

  6. 韩顺平Java学习 泛型

    目录 一.泛型的语法 1.传统的方法遍历集合存在的问题 2.使用泛型来解决传统集合添加元素带来的问题 3.泛型使用介绍 4.泛型的使用细节 5.泛型课堂练习 二.自定义泛型 1.自定义泛型类的规范 ​ ...

  7. java 注解 enum_13 Java枚举和注解

    Java枚举 在某些情况下,一个类的对象是有限而且固定的.例如季节类,只能有 4 个对象. 当类的对象是有限时,就应该使用枚举,而不使用普通类.(枚举对象是单例模式) 枚举的属性 实现接口的枚举类 例 ...

  8. 韩顺平Java学习【枚举、注解】(笔记)

    枚举[enumeration] 枚举是一组常量的集合: 属于一种特殊的类,里面只包含一组有限的特定的对象: 自定义类实现枚举--应用 不需要提供 setxxx 方法,因为枚举对象值通常为只读: 对枚举 ...

  9. 韩顺平java笔记--中级

    Java中级 1.static 1.1类变量(静态变量) 1.2类方法(静态方法) 1.3静态方法何用? 2.main 3. 代码块(构造器的一种补充机制) 3.1 static代码块与无修饰符代码块 ...

最新文章

  1. 防护很重要!教你教你认识和检验安防产品的IP防护等级
  2. javascript --- spa初体验
  3. Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换
  4. which 命令
  5. IE7下面 overflow:hidden 无效
  6. UE4之接收鼠标操作
  7. easyui java下拉列表项目_EasyUI/TopJUI之如何动态改变下拉列表框ComboBox输入框的背景颜色...
  8. c语言程序设计职工信息管理系统,C语言程序设计-职工信息管理系统.doc
  9. java opencv 人脸相似度_java实现OpenCV 4.1.0人脸相似度对比
  10. 百度换肤,表单全选案例
  11. 副业做淘宝可以么?淘宝可以当做副业来做吗?
  12. android设置主题背景为壁纸_Android 应用背景加载系统动态壁纸
  13. python 声音指纹识别,Python-samp中的Dejavu音频指纹识别
  14. tcp rst 情况
  15. 徐州php溪谷_ThinkPHP溪谷H5游戏平台系统V3.0完整版源码
  16. 输入框技巧 禁用输入法 禁用提示 提示归类
  17. matlab提取图像特征程序,图像特征提取matlab程序
  18. 基于百度api的违规文本识别 分词 tfidf关键词提取 违规文本检测
  19. WEB前端包含哪些内容
  20. CA(电子签名)与HIS等医疗信息化系统的集成简介

热门文章

  1. C语言:va_list
  2. 2个月快速通过PMP证书的经验
  3. python堆栈溢出的原因_堆栈溢出一般是什么原因?
  4. 计算机三级 计算机三级网络技术 如何两天内通过考试
  5. 招聘管理系统软件java源码_基于Spring Boot的java开源招聘源码-铭阳招聘管理系统...
  6. Docker之操作系统Alpine
  7. 领域驱动设计战术模式:领域事件
  8. ntoskrnl.exe文件丢失或损坏的问题解决方法
  9. 全网最新最细最全最牛的jmeter接口测试,性能测试,没有之一,如有雷同纯属抄袭。
  10. 【蓝桥杯单片机】第十三届蓝桥杯单片机省赛客观题及其题解