Java学习笔记

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ### 基础类库

1,系统相关:
(1),Scanner:基于正则表达式的文本扫描器,可以从文件、输入流、字符串作为数据源,用于从文件、输入流、字符串中解析数据。

  • 方法:hasNextXxx():判断是否还有下一个输入项,如果只是判断是否有下一个字符串,则直接使用hasNext()
  • nextXxx():获取下一个输入项

(2),Scanner提供了两个简单的方法来逐行读取:

  • boolean hasNextLine():返回输入是否还有下一行
  • String nextLine():返回输入的下一行字符串

(3),System:提供了代表标准输入、标准输出和错误输出的类变量,其还提供了获取系统当前时间的方法,提供了返回精确哈希值的方法:

  • System类的in、out、err分别代表系统的标准输入、标准输出、错误输出,并提供了setIn()、setOut()、setErr()来改变系统的标准输入、标准输出、错误输出。
  • currentTimeMillis()和nanoTime(),它们都返回一个long型整数
  • identityHashCode(Object x):返回指定对象的精确hashcode值,通过地址来计算的

2,Java中常用的类:
(1),Object类:是所有类、数组、枚举类的父类,当一个类没有显式的指定父类时,将会默认Oblect为其父类,所以所有的Java类都是Object的子类,任何对象都可以调用Object类的方法
(2),Object类的几个常用方法:

  • boolean equals(Object obj):判断指定对象是否与该对象相等,两个对象是同一对象才行,后续用到几乎都会根据之际需要重写此方法
  • Class<?>getClass():返回该对象运行时的类
  • int hashCode():返回该对象的hashcode值,在默认情况下,是根据地址来计算的
  • String toString():返回该对象的字符串表示,默认返回"运行时类名@十六进制hashCode值"格式的字符串,后续用到用于描叙自己,几乎都要根据实际需要重写
    (3),String、StringBuffer和StringBuilder:
  • String是不可变类,即一旦被创建,包含在 这个对象中的字符串序列是不可变的,直至对象被销毁
  • StringBuffer对象代表一个字符序列可变的字符串,可通过所提供的方法append()、insert()、reverse()、setCharAt()、setLength()改变这个字符串的对象序列
  • StringBuilder类,与上一个很相同,但不同的是,StringBuffer线程是安全的,性能较低,而StringBuilder则相反,一般都会先选择StringBuilder,因为性能高,快,除非特意指定说明
  • int compareTo(String anotherString):比较两个字符串的大小,如果两个字符串的序列相等则返回0,否则,从两个字符串的第0的字符开始比较,返回第一个不相等的字符差

(4),Math类

  • 其构造器被定义成private的,所以无法创建对象,但其里面的所有方法都是类方法,可以直接通过类名来调用

(5),ThreadLocalRandom与Random

  • Random专门用于生成一个伪随机数,ThreadLocalRandom与其作用一样,但不同的是,后者可以保证更好的线程安全
  • ThreadLocalRandom提供了一个静态的current()方法来获取对象,获取后即可用各种nextXxx()方法来获取伪随机数

(6),BigDecimal类

  • 针对于精确,计算浮点数,提供了add()、subtract()、multiply()、divide()、pow()用于精确浮点数的基本运算

3,日期时间类
(1),Date类

  • 处理日期、时间
  • boolean after(Date when):判断该日期是否在指定日期之后
  • boolean before(Date when):判断该日期是否在指定日期之前
  • long getTime():返回时间对应的long型整数,以毫秒作为计时单位

(2),Calendar类,因其Date类太拉跨,诞生了它,是个抽象类

  • 因其是个抽象类,不能用指定的构造器来创建对象,但提供了getInstance()方法来获取对象,根据TimeZone,Locale类来获取特定的Calendar,如不指定则使用默认的
  • Date的方法它几乎都有,还提供了大量的访问、修改日期时间的方法
  • 特别注意add与roll的区别,add(int field,int amount):当被修改的字段超出它的范围时,会发生进位;如果下一级字段也需改变,那么该字段会修正到变化的最小值。roll()的规则:当被修改的字段超出它的范围时,不会发生进位;但下一字段的改变规则一样
    4,正则表达式
    一、校验数字的表达式
  1. 数字:1*$

  2. n位的数字:^\d{n}$

  3. 至少n位的数字:^\d{n,}$

  4. m-n位的数字:^\d{m,n}$

  5. 零和非零开头的数字:^(0|[1-9][0-9]*)$

  6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

  7. 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$

  8. 正数、负数、和小数:^(-|+)?\d+(.\d+)?$

  9. 有两位小数的正实数:2+(.[0-9]{2})?$

  10. 有1~3位小数的正实数:3+(.[0-9]{1,3})?$

  11. 非零的正整数:4\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$

  12. 非零的负整数:^-[1-9][]0-9"$ 或 ^-[1-9]\d$

  13. 非负整数:^\d+$ 或 5\d*|0$

  14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

  15. 非负浮点数:^\d+(.\d+)?$ 或 6\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$

  16. 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$

  17. 正浮点数:7\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$

  18. 负浮点数:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$

  19. 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$

二、校验字符的表达式

  1. 汉字:8{0,}$

  2. 英文和数字:9+$ 或 10{4,40}$

  3. 长度为3-20的所有字符:^.{3,20}$

  4. 由26个英文字母组成的字符串:11+$

  5. 由26个大写英文字母组成的字符串:12+$

  6. 由26个小写英文字母组成的字符串:13+$

  7. 由数字和26个英文字母组成的字符串:14+$

  8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

  9. 中文、英文、数字包括下划线:15+$

  10. 中文、英文、数字但不包括下划线等符号:16+$ 或 17{2,20}$

  11. 可以输入含有^%&’,;=?KaTeX parse error: Can't use function '\"' in math mode at position 1: \̲"̲等字符:[^%&',;=?\x22]+ 12 禁止输入含有的字符:[^\x22]+

其它:

.*匹配除 \n 以外的任何字符。

/[\u4E00-\u9FA5]/ 汉字

/[\uFF00-\uFFFF]/ 全角符号

/[\u0000-\u00FF]/ 半角符号

集合

1,集合的概念与作用
(1),集合类主要负责保存、盛装其他数据,也被称为容器类
(2),集合类和数组不一样,数组的元素可以是基本类型,也可以是对象,而集合里只能保存对象
(3),

在这里插入图片描述

2,使用Lambda表达式遍历集合
3,使用Iterator遍历集合元素
(1),主要用于遍历Collection集合中的元素,Iterator对象也被称为迭代器
(2),主要方法:

  • boolean hasNext():如果被迭代的集合元素还没有被遍历完,则返回true
  • Object next():返回集合里的下一个元素
  • void remove():删除集合里上一次next方法返回的元素

(3),当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值对集合元素本身没有任何影响
(4),当使用Iterator访问Collection集合元素时,Collection集合里的元素不能被改变只有通过Iterator的remove()方法删除上一次next()方法返回集合的元素才可以,否则会引发异常,在迭代时删除集合元素很危险
4,Set集合(元素唯一,不重复)
(1),HashSet

  • 不能保证元素的排列顺序,顺序可能与添加顺序不同
  • HashSet不是同步的
  • 集合元素可以是null
  • 判断两个元素相等的标准是两个对象通过equals()方法比较相等

(2),LinkedHashSet

  • 根据元素的hashCode来绝对顶元素的储存位置,它同时使用链表维护元素的次序,使得元素看起来是以插入的顺序保存的

(3),TreeSet

  • 是SortSet接口的实现类
  • compareto()方法,来比较元素之间的大小关系,用于排序,可重写该方法
  • 此集合底层为一棵红黑树,所以元素不唯一,但始终有序

5,List集合
(1),List和ListIterator接口

  • List是Collection接口的子接口,可以使用Collection的全部方法,List集合元素有序,可重复
  • List集合可以根据位置索引来访问集合中的元素,所以List集合中多了一种遍历的方法,使用普通的for循环来遍历集合元素

(2),ArrayList类与Victor类

  • 二者显著区别,ArrayList是线程不安全的而Victor是线程安全的

6,Queue和Deque接口
(1),Queue同于模拟队列这种数据结构
(2),Deque接口是Queue接口的子接口,代表一个双端队列,
(3),ArrayDeque可以用于模拟栈着种数据结构
7,Map
(1),存放的元素是key-value对
(2),Hashtable不允许null作为key-value对,线程安全
(3),线程不安全,性能高
(4),HashMap里的key不能重复,所以HashMap里最多只有一个key-value对的key为null,但可以有无数多个key-value对里的value为null
8,操作集合的工具类:Collections
提供了一系列常用的集合操作


  1. 0-9 ↩︎

  2. 0-9 ↩︎

  3. 0-9 ↩︎

  4. 1-9 ↩︎

  5. 1-9 ↩︎

  6. 1-9 ↩︎

  7. 1-9 ↩︎

  8. \u4e00-\u9fa5 ↩︎

  9. A-Za-z0-9 ↩︎

  10. A-Za-z0-9 ↩︎

  11. A-Za-z ↩︎

  12. A-Z ↩︎

  13. a-z ↩︎

  14. A-Za-z0-9 ↩︎

  15. \u4E00-\u9FA5A-Za-z0-9_ ↩︎

  16. \u4E00-\u9FA5A-Za-z0-9 ↩︎

  17. \u4E00-\u9FA5A-Za-z0-9 ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值