type
status
date
slug
summary
tags
category
icon
password
API
API即应用程序接口(Application Programming Interface)。
Java API就是JDK中提供使用的类,这些类将底层的代码实现封装了起来,不需要关心这些类是如何实现的,只需要知道这些类如何使用即可。
Object
Object是Java语言中的根类,即所有的类的父类;Object中的所有方法,子类都能使用(接口不是Object的子类)。
常用方法
equals()
equals方法用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。
- 基本数据类比较的是内容(值)
- 引用数据类型比较的是内存地址值
- String的equals比较的是内容
注意:在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
toString()
toString方法返回该对象的字符串表示,其实该字符串内容就是object中getClass.getName()+"@" +Integer.toHexString(hasCode())。
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
String
String 类代表字符串,Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
String类是一个常量,其本质就是private final 修饰的字符数组;它们的值在创建之后不能更改,也就是说一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串;字符串本身不能改变,但str变量中记录的地址值是可以改变的。
字符串有大量的重载的构造方法,通过String类的构造方法可以完成字符串对象的创建。
创建对象
s3和s4的创建方式有什么不同呢?
- s3创建:在内存中只有一个对象,这个对象在字符串常量池中。
- s4创建:在内存中有两个对象,一个new的对象在堆中,一个字符串本身对象,在字符串常量池中。
构造方法
查找方法
- length():字符串中有多少个字符
- subString():获取部分字符串
- startsWith():字符串是否以指定字符串开头,结尾同理
- contains():字符串中是否包含另一个字符串
- toCharArray()、getBytes():将字符串转成一个字符或字节数组
- equals():判断两个字符串中的内容是否相同
- toString():获取该字符串对象中的内容
直接打印引用类型变量时,默认调用该类型进行重写后的toString方法。
方法练习
- 获取指定字符串中,大写字母、小写字母、数字的个数。
- 为了统计大写字母、小写字母、数字的个数,创建3个计数的变量
- 为了获取到字符串中的每个字符,进行字符串的遍历,得到每个字符
- 对得到的字符进行判断,如果该字符为大写字母,则大写字母个数+1;如果该字符为小写字母,则小写字母个数+1;如果该字符为数字,则数字个数+1
- 显示大写字母、小写字母、数字的个数
思路:
- 将字符串中,第一个字母转换成大写,其他字母转换成小写,并打印改变后的字符串。
- 把字符串分为两个部分,第一部分为字符串中第一个字母,第二部分为剩下的字符串
- 把第一部分字符串转换成大写字母,把第二部分字符串转换成小写字母
- 把两部分字符串连接在一起,得到一个完整的字符串
思路:
- 查询大字符串中,出现指定小字符串的次数,如“hellojava,nihaojava,javazhenbang”中查询出现“java”的次数。
- 在大串中,查找小串出现的位置,出现了就次数+1
- 在上次小串出现位置的后面继续查找,需要更改大串的内容为上次未查询到的字符串
- 回到第一步,继续查找小串出现的位置,直到大串中查询不到小串为止
思路:
StringBuffer
StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。
StringBuffer是个字符串的缓冲区,字符串缓冲区支持可变的字符串,即它就是一个容器,可以装很多字符串,并且能够对其中的字符串进行各种操作。
方法调用
注意:append、delete、insert、replace、reverse方法调用后,返回值都是当前对象自己,所以说,StringBuffer它可以改变字符序列的长度和内容。
方法链式调用
在开发中,会遇到调用一个方法后,返回一个对象,然后使用返回的对象继续调用方法的情况;这种时候,可以把代码放在一起,如append()方法一样。
方法练习
将int[] arr = {34,12,89,68};中元素转成字符串,格式为[34,12,89,68]。
无论多少数据,数据是什么类型都不重要,只要最终变成字符串就可以使用StringBuffer这个容器。
StringBuilder
StringBuilder类也是字符串缓冲区,它提供一个与StringBuffer兼容的API,但不保证同步;该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍);如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。
正则表达式
概念
正则表达式(Regular Expression),在代码中常简写为regex;正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串;在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本,比如注册邮箱时限制用户名和密码的长度。
语法规则
类别 | 例子 | 含义 |
字符 | x | 代表的是字符x |
ㅤ | \' | 代表的是反斜线字符'' |
ㅤ | \t | 代表的是制表符 |
ㅤ | \n | 代表的是换行符 |
ㅤ | \r | 代表的是回车符 |
字符类 | [abc] | a、b 或 c(简单类) |
ㅤ | ![abc] | 任何字符,除了 a、b 或 c(否定) |
ㅤ | [a-zA-Z] | a到 z 或 A到 Z,两头的字母包括在内(范围) |
ㅤ | [0-9] | 0到9的字符都包括 |
ㅤ | [a-zA-Z_0-9] | 代表的字母或者数字或者下划线(即单词字符) |
预定义字符类 | . | 任何字符 |
ㅤ | \d | 数字:[0-9] |
ㅤ | \w | 单词字符:[a-zA-Z_0-9]如"com.itheima.tests" |
边界匹配器 | ^ | 代表的是行的开头 |
ㅤ | $ | 代表的是行的结尾 |
ㅤ | \b | 代表的是单词边界 |
数量词 | X? | X,一次或一次也没有 |
ㅤ | X* | X,零次或多次 |
ㅤ | X+ | X,一次或多次 |
ㅤ | X{n} | X,恰好 n 次 |
ㅤ | X{n,} | X,至少 n 次 |
ㅤ | X{n,m} | X,至少 n 次,但是不超过 m 次 |
相关String类方法
- boolean matches(String正则的规则)
- "abc".matches("[a]"):匹配成功返回true
- String[] split(String正则的规则)
- "abc".split("a"):使用规则将字符串进行切割
- String replaceAll( String正则规则,String 字符串)
- "abc0123".repalceAll("[\d]","#"):按照正则的规则,替换字符串
正则表达式匹配练习
正则表达式切割练习
正则表达式替换练习
正则表达式邮箱地址验证
Date
毫秒值概念
- 时间和日期类:java.util.Date
- 毫秒概念:1000毫秒=1秒
- 毫秒的0点:System.currentTimeMillis() 返回值long类型参数
- 获取当前日期的毫秒值:3742769374405
- 时间原点公元1970年1月1日,午夜0:00:00,英国格林威治,毫秒值就是0
构造方法
- 空参构造:public Date()
- 带参构造:public Date(long times)
get/set方法
- public long getTime():将当前的日期对象,转为对应的毫秒值
- public void setTime(long times):根据给定的毫秒值,生成对应的日期对象
日期格式化SimpleDateFormat
DateFormat是对日期进行格式化(自定义)的类,它以与语言无关的方式格式化并解析日期或时间,可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历);日期/时间格式化子类(如 SimpleDateFormat类)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。
对日期进行格式化的步骤:
- 创建SimpleDateFormat对象
- 在类构造方法中,写入字符串的日期格式((自己定义)
- SimpleDateFormat调用方法format对日期进行格式化
- public String format(Date date):传递日期对象,返回字符串
日期模式:
字符串 | 含义 |
yyyy | 年份 |
MM | 月份 |
dd | 月中的天数 |
HH | 0-23小时 |
mm | 小时中的分钟 |
ss | 秒 |
注意:字母表示的每个字段不可以随便写。
字符串转成日期对象
- 创建SimpleDateFormat的对象:构造方法中,指定日期模式
- 子类对象调用parse方法传递String,返回Date
注意: 时间和日期的模式yyyy-MM-dd,必须和字符串中的时间日期匹配。
Calendar
Calendar是日历类,在Date后出现,替换掉了许多Date的方法,该类将所有可能用到的时间信息封装为静态成员变量,方便获取;Calendar是抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象。
常用方法
- getTime():把日历对象,转成Date日期对象
- et(日历字段):获取指定日历字段的值
- set(int field,int value):设置指定的时间
- add(int field, int value):进行整数的偏移
- int get(int field):获取指定字段的值
日期练习
活了多少天
计算闰年
System
System中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。
System类不能手动创建对象,因为构造方法被private修饰,阻止外界创建对象,System类中的都是static方法,类名访问即可;在JDK中,有许多这样的类。
currentTimeMillis方法
currentTimeMillis()方法:用于计算程序的执行时间。
exit方法
gc方法
getProperties方法
arraycopy方法
练习
- 验证for循环打印数字1-9999所需要使用的时间(毫秒)
- 将src数组中前3个元素,复制到dest数组的前3个位置上
- 复制元素前:src数组元素[1,2,3,4,5],dest数组元素[6,7,8,9,10]
- 复制元素后:src数组元素[1,2,3,4,5],dest数组元素[1,2,3,9,10]
- 循环生成100-999之间的的三位数并进行打印该数,当该数能被10整除时,结束运行的程序
Math
Math 类是包含用于执行基本数学运算的方法的数学工具类,如初等指数、对数、平方根和三角函数;类似这样的工具类,其所有方法均为静态方法,并且一般不会创建对象。
常用方法
Arrays
此类包含用来操作数组(比如排序和搜索)的各种方法,需要注意的是,如果指定数组引用为 null,则访问此类中的方法都会抛出空指针异常NullPointerException。
常用方法
数组复制练习
大数计算
BigInteger
Java中long型为最大整数类型,对于超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象;在BigInteger类中,四则运算都是方法来实现,而不是采用运算符。
概述和构造方法
四则运算
BigDecimal
double和float类型在运算中很容易丢失精度,造成数据的不准确,Java提供的BigDecimal类可以实现浮点数据的高精度运算。
四则运算
浮点数据的除法运算和整数不同,可能出现无限不循环小数,因此需要对所需要的位数进行保留和选择舍入模式。
- 作者:青山🌊
- 链接:http://cxuan.me/article/java-se-standard-library
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。