JAVA蓝桥杯常用方法
1. 输入输出
( 1 ) 循环输入结构:
1 |
|
2. 数组操作
(1)给空数组填满数据
Modifier and Type | Method and Description |
---|---|
static void |
fill(boolean[] a, boolean val) 将指定的布尔值分配给指定的布尔数组的每个元素。 |
static void |
fill(boolean[] a, int fromIndex, int toIndex, boolean val) 将指定的布尔值分配给指定数组布尔值的指定范围的每个元素。 |
static void |
fill(byte[] a, byte val) 将指定的字节值分配给指定字节数组的每个元素。 |
static void |
fill(byte[] a, int fromIndex, int toIndex, byte val) 将指定的字节值分配给指定字节数组的指定范围的每个元素。 |
static void |
fill(char[] a, char val) 将指定的char值分配给指定的char数组的每个元素。 |
static void |
fill(char[] a, int fromIndex, int toIndex, char val) 将指定的char值分配给指定的char数组的指定范围的每个元素。 |
static void |
fill(double[] a, double val) 将指定的double值分配给指定的双精度数组的每个元素。 |
static void |
fill(double[] a, int fromIndex, int toIndex, double val) 将指定的double值分配给指定的双精度数组范围的每个元素。 |
static void |
fill(float[] a, float val) 将指定的float值分配给指定的浮点数组的每个元素。 |
static void |
fill(float[] a, int fromIndex, int toIndex, float val) 将指定的浮点值分配给指定的浮点数组的指定范围的每个元素。 |
static void |
fill(int[] a, int val) 将指定的int值分配给指定的int数组的每个元素。 |
static void |
fill(int[] a, int fromIndex, int toIndex, int val) 将指定的int值分配给指定的int数组的指定范围的每个元素。 |
static void |
fill(long[] a, int fromIndex, int toIndex, long val) 将指定的long值分配给指定的longs数组的指定范围的每个元素。 |
static void |
fill(long[] a, long val) 将指定的long值分配给指定的longs数组的每个元素。 |
static void |
fill(Object[] a, int fromIndex, int toIndex, Object val) 将指定的对象引用分配给指定的对象数组的指定范围的每个元素。 |
static void |
fill(Object[] a, Object val) 将指定的对象引用分配给指定的对象数组的每个元素。 |
static void |
fill(short[] a, int fromIndex, int toIndex, short val) 将指定的短值分配给指定的短裤数组的指定范围的每个元素。 |
static void |
fill(short[] a, short val) 将指定的短值分配给指定的短裤数组的每个元素。 |
根据官方 API
可以看出基本上任何类型都可以使用Arrays.fill()
来填充。
举例:
1 |
|
3. 常用类及其方法
(1)String 类常用方法
获取字符串长度
返回字符数量即字符串的长度。
1 |
|
获取指定位置的字符
获取指定索引的字符。
1 |
|
获取子字符串索引位置
返回搜索的字符或字符串在字符串中首次出现的索引位置。没有检索到则返回 -1。
1 |
|
判断字符串首尾内容
判断字符串是否以指定的前缀开始;
1 |
|
判断字符串是否以指定的后缀结束;
1 |
|
获取字符数组
将字符串转换为字符数组。
1 |
|
判断子字符串是否存在
判断字符串中是否包含指定的内容。
1 |
|
(2)字符串操作
截取字符串
返回一个新字符串,它是此字符串的一个子串,beginIndex
包括,endIndex
不包括。
1 |
|
字符串替换
将指定的字符序列替换为新的字符序列。若str
中没有找到需要被替换的子字符串oldstr
则返回原字符串。
- 如果
oldstr
重复出现多次,则会替换所有的oldstr
;
1 |
|
字符串分割
根据给定字符串进行拆分,支持正则表达式。最后返回一个字符串数组。
1 |
|
正则表达式
正则表达式通常被用于判断语句中,来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,“\d” 表示字母 0~9 中任何一个,“\d” 就是元字符。正则表达式中元字符及其意义,如表1所示。
正则表达式中的元字符
元字符 | 正则表达式中写法 | 意义 |
---|---|---|
. | “.” | 代表任意一个字符 |
“\d” | 代表 0~9 的任何一个数字 | |
“\D” | 代表任何一个非数字字符 | |
“\s” | 代表空白字符。如 ‘、‘’ | |
“\S” | 代表非空白字符 | |
“\w” | 代表可用做标识符的字符,但不包括 “\(” 符 | | \W | “\\W” | 代表不可用于标识符的字符 | | \p{Lower} | \\p{Lower} | 代表小写字母 {a-z} | | \p{Upper} | \\p{Upper} | 代表大写字母 {A-Z} | | \p{ASCII} | \\p{ASCII} | ASCII 字符 | | \p{Alpha} | \\p{Alpha} | 字母字符 | | \p{Digit} | \\p{Digit} | 十进制数字。即 [0~9] | | \p{Alnum} | \\p{Alnum} | 数字或字母字符 | | \p{Punct} | \\p{Punct} | 标点符号:!"#\)%&'()*+,-./:;<=>?@[]^_`{|}~ | |
\p{Graph} | 可见字符:[] | |
\p{Print} | 可打印字符:[] | |
\p{Blank} | 空格或制表符:[ | |
\p{Cntrl} | 控制字符:[-1F7F] |
例 在项目中创建类 Judge,在主方法中实现使用正则表达式来判断指定的变量是否是合法的 E-mail 地址。
1 |
|
大小写转换
将字符串中所有字符串换成小写。若没有应该转换的字符串,则将原字符串返回。
1 |
|
将字符串中所有字符串换成大写。若没有应该转换的字符串,则将原字符串返回。
1 |
|
去除空白内容
将字符串首尾处的空白内容都删除。
1 |
|
比较字符串是否相等
比较两个字符串的内容是否相同,需要使用equals()
方法。当且仅当进行比较的字符串不为null
,并且与被比较的字符串内容相同时,结果才为true
。
1 |
|
而==
比较的是两个字符串引用的是否为同一对象!若为同一对象,则返回true
,否则返回false
。
比较字符串“大小”
compareTo() 方法用于按字典顺序比较两个字符串的大小,该比较是基于字符串各个字符的 Unicode 值。
1 |
|
它会按字典顺序将 str 表示的字符序列与 otherstr 参数表示的字符序列进行比较。如果按字典顺序 str 位于 otherster 参数之前,比较结果为一个负整数;如果 str 位于 otherstr 之后,比较结果为一个正整数;如果两个字符串相等,则结果为 0。
4. 可变字符串 StringBuffer 类
StringBuffer
类是线程安全的可变字符序列,一个类似于String
类的字符串缓冲区,两者本质上是一样的,但是StringBuffer
类的执行效率比String
类快很多。StringBuffer
类创建的字符串序列是可修改的,且实体容量会随着存放的字符增加而增加。
Ⅰ. 创建 StringBuffer 类
创建StringBuffer
类必须使用关键字new
,不可以像String
直接引用字符串常量。
1 |
|
Ⅱ. append() 方法
append()
方法可以将参数转换成字符串,然后追加到子序列中。obj
为任意数据类型的对象如String
、int
、double
、Boolean
等。
1 |
|
Ⅲ. setCharAt(int index, char ch) 方法
将给定索引处的字符修改为 ch。
1 |
|
其中index
为被替换字符的索引。
Ⅳ. insert(int offset, String str) 方法
将字符串str
插入到指定的索引值offset
位置上。
1 |
|
offset
为插入的索引。str
为插入的字符串。
Ⅴ. delete(start, end) 方法
移除此序列的子字符串的字符。子字符串是从指定的索引start
处开始,一直到索引end - 1
处。如果end - 1
超过最大索引范围,则一直到序列尾部。如果start
等于end
,则不发生更改。
1 |
|
start
起始索引(包含)。
end
结束索引(不包含)。
Ⅵ. StringBuffer 类中方法的使用
StringBuffer
类中类似String
类方法:
1 |
|
5. Integer 类(Byte,Short,Long 类似)
构造方法:
Constructor and Description |
---|
Integer(int value) 构造一个新分配的 Integer 对象,该对象表示指定的 int 值。 |
Integer(String s) 构造一个新分配 Integer 对象,表示 int 由指示值
String 参数。 |
常用方法:
Modifier and Type | Method and Description |
---|---|
static int |
compare(int x, int y) 比较两个 int 数字值。 |
int |
compareTo(Integer anotherInteger) 数字比较两个 Integer 对象。值相等返回
0,如果小于anotherInteger 返回负值,否则返回正值。 |
boolean |
equals(Object obj) 将此对象与指定的对象进行比较。 |
static int |
parseInt(String s) 将字符串参数解析为带符号的十进制整数。 |
static int |
parseInt(String s, int radix) 将字符串参数解析为第二个参数指定的基数中的有符号整数。 |
byte |
byteValue() 返回此值 Integer 为 byte 的基本收缩转换后。 |
short |
shortValue() 返回此值 Integer 为 short 的基本收缩转换后。 |
float |
floatValue() 返回此值
Integer 为 float 一个宽元转换后。 |
int |
intValue() 将
Integer 的值作为 int 。 |
long |
longValue() 返回此值
Integer 为 long 一个宽元转换后。 |
static String |
toBinaryString(int i) 以二进制无符号整数形式返回一个证书参数的字符串表示形式。 |
static String |
toHexString(int i) 以十进制无符号整数形式返回一个证书参数的字符串表示形式。 |
static String |
toOctalString(int i) 以八进制无符号整数形式返回一个证书参数的字符串表示形式。 |
String |
toString() 返回 String 表示此对象 Integer 的价值。 |
static Integer |
valueOf(int i) 返回一个 Integer 指定的 int 值的
Integer 实例。 |
static Integer |
valueOf(String s) 返回一个 Integer 对象,保存指定的值为 String 。 |
static Integer |
valueOf(String s, int radix) 返回一个 Integer 对象,保存从指定的String中
String 的值,当用第二个参数给出的基数进行解析时。 |
常量
Integer
类提供了 4 个常量:
MAX_VALUE
:表示int
类型可取的最大值,\(2^{31}-1\);MIN_SIZE
:表示int
类型可取的最小值,-\(2^{31}\)SIZE
:用二进制补码的形式表示int
值的位数。TYPE
:表示基本类型int
的Class
实例。
6. Math 类
Math 中的数学方法都被定义成 static 形式,所以在程序中可以直接通过 Math 类的类名调用某个函数,语法如下:
1 |
|
Math 类中还定义了一些数学常量:
1 |
|
常用的数学方法:
1. 指数函数方法:
方法 | 返回值 | 功能描述 |
---|---|---|
exp(double a) |
double |
获取 e 的 a 次方,\(e^a\) |
double log(double a) |
double |
取自然对数,取 lna 的值 |
double log10(double a) |
double |
取底数为 10 的对数 |
sqrt(double a) |
double |
取 a 的平方根,a 的值不能为负值 |
cbrt(double a) |
double |
取 a 的立方根 |
pow(double a, double b) |
double |
取 a 的 b 次方 |
2. 取整函数方法:
方法 | 返回值 | 功能描述 |
---|---|---|
ceil(double a) |
double |
返回大于或等于参数的最小整数 |
floor(double a) |
double |
返回小于或等于参数的最大整数 |
rint(double a) |
double |
返回与参数最接近的整数,如果两个同为整数且接近,结果为偶数 |
round(int a) |
int |
将参数加上 0.5 后返回小于或等于参数的最大 int 值 |
round(long a) |
long |
将参数加上 0.5 后返回小于或等于参数的最大 long 值 |
3. 取最大值、最小值、绝对值函数方法
方法 | 返回值 | 功能描述 |
---|---|---|
max(double a, double b) |
double |
取 a,b 之间的最大值 |
min(double a, double b) |
double |
取 a,b 之间的最小值,参数为双精度型 |
min(long a, long b) |
long |
取 a,b 之间的最小值,参数为长整型 |
min(float a, float b) |
float |
取 a,b 之间的最小值,参数为浮点型 |
abs(int a) |
int |
返回整型参数的绝对值 |
abs(long a) |
long |
返回长整型参数的绝对值 |
abs(float a) |
float |
返回浮点型参数的绝对值 |
abs(double a) |
double |
返回双精度型参数的绝对值 |
7. Random 类
在使用随机数之前需要实例化一个 Random 类对象:
1 |
|
方法 | 返回值 | 功能描述 |
---|---|---|
nextInt() |
int |
返回一个随机 int 型值 |
nextInt(int n) |
int |
返回大于或等于 0、小于 n 的随机 int 型值 |
nextLong() |
long |
返回一个随机 long 型值 |
nextBoolean() |
boolean |
返回一个随机 boolean 型值 |
nextFloat() |
float |
返回一个随机 float 型值 |
nextDouble() |
double |
返回一个随机 double 型值 |
nextGaussian() |
double |
返回一个概率密度为高斯分布的 double 型值 |
8. Date 类
Java 的 java.util 包中提供了 Date 类来操作日期和时间。使用 Date 类时,需要先创建 Date 类的对象。
Date 类的构造方法及说明
构造方法 | 功能描述 |
---|---|
Date() |
分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒) |
Date(long data) |
分配 Date 对象并初始化此对象,以表示自从标准基准时间(即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数 |
Date 类的常用说法及说明
方法 | 返回值 | 功能描述 |
---|---|---|
after(Date when) |
boolean |
测试当前日期是否在指定的日期之后 |
before(Date when) |
boolean |
测试当前日期是否在指定的日期之前 |
getTime() |
long |
1970 年 1 月 1 日 00:00:00 GMT 开始到现在所表示的毫秒数 |
setTime(long time) |
void |
设置当前 Date 对象所表示的日期时间值,该值以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点 |
按照指定格式对日期进行格式化 DateFormat 类
DateFormat 类是抽象类,创建对象方法如下:
1 |
|
DataFormet 类的常用方法及说明
方法 | 返回值 | 功能描述 |
---|---|---|
format(Date date) |
String |
将一个 Date 格式化为日期/时间字符串 |
getCalenar() |
Calendar |
获取于此日期/时间格式器关联的日历 |
getDateInstance() |
static DateFormet |
获取日期格式器,改格式器具有默认语言环境的默认格式化风格 |
getDateTimeInstance() |
static DateFormet |
获取日期/时间格式器,改格式器具有默认语言环境的默认格式化风格 |
getInstance() |
static DateFormet |
获取 SHORT 风格的默认日期/时间格式器 |
getTimeInstance() |
static DateFormet |
获取时间格式器,改革是具有默认语言环境的默认格式化风格 |
parse(String source) |
Date |
将字符串解析成一个日期,并返回这个日期的 Date 对象 |
9. 集合类
Collection 接口
Collection 接口的常用方法及说明
方法 | 功能描述 |
---|---|
add(Object e) |
将指定的对象添加到当前集合中 |
remove(Object o) |
将指定的对象从集合中移除 |
isEmpty() |
返回 boolean 值,用于判断集合是否为空 |
iterator() |
返回用于遍历集合元素的迭代器 |
size() |
返回 int 型值,获取当前集合中元素的个数 |
List 集合
List 接口的两个重要方法
方法 | 功能描述 |
---|---|
get(int index) |
获得指定索引位置上的元素 |
set(int index, Object obj) |
将集合中指定索引位置的对象修改为指定的对象 |
List 接口不能直接被实例化,所以 Java 提供了 List 接口的实现类,其中最常用的实现类是 ArrayList 与 LinkedList 类。
ArrayList 以数组的形式保存集合中的元素,能够根据索引位置随机目快速地访问集合中的元素。
LinkedList 以链表结构(是一种数据结构)保存集合中的元素,随机访问集合中元素的性能较差,但向集合中插入元素和删除集合中元素的性能出色。 分别使用 ArrayList 类和 LinkedList 类实例化 List 集合的关键代码如下:
1
2List<E> list = new Arraylist<>();
List<E> list2 = new Linkedlist<>();其中,E 代表元素类型。
Iterator 迭代器
Iterator 接口是专门对集合进行迭代的迭代器。
Iterator 迭代器的常用方法
方法 | 功能描述 |
---|---|
hasNext() |
如果仍有元素可以迭代,则返回 true |
next |
返回迭代的下一个元素(返回值类型为 Object,因此需要强制类型转换) |
remove() |
从迭代器指向的 Collection 中移除迭代器返回的最后一个元素(可选操作) |
Set 集合
由于 Set 集合中的元素不能重复,因此在向 Set 集合中添加元素时,需要先判断新增元素是否已经存在于集合中,再确定是否执行添加操作。
Set 接口常用的实现类有 HashSet 类与 TreeSet 类,分别如下:
- HashSet 是 Set 接口的一个实现类,它不允许有重复元素。
- TreeSet 类不仅实现了 Set 接口,还实现了 java.util.SortedSet 接口,因此在遍历使用 TreeSet 类实现的 Set 集合中的元素时,会默认地将元素按升序排列。在创建 TreeSet 类对象时,通过使用 Comparator 接口,还可以实现定制排序,例如降序排列。
说明:Comparator 接口,即“比较器”,它提供一个抽象方法
compare(T ol,T o2)
,这个方法指定了两个对象的比较规则,如果 o1 大于 o2,方法返回正数(通常为+1);如果 o1 等于 o2,方法返回 0;如果 01 小于 o2,方法返回负数(通常为-1)。
如果想制定 TreeSet 的排序规则,可以在实例化 TreeSet 对象时,将一个已经写好的比较器作为构造参数传入,或者让 TreeSet 中的所有元素都实现 Comparable 接口。 TreeSet 类除了可以使用 Collecion 接口中的方法以外,还提供了一些其他操作集合中元素的方法:
方法 | 功能描述 |
---|---|
first() |
返回此 Set 中当前第一个(最低)元素 |
last() |
返回此 Set 中当前最后一个(最高)元素 |
comparator() |
返回对此 Set 中的元素进行排序的比较器。如果此 Set 使用自然顺序,则返回 null |
headSet(E toElement) |
返回一个新的 Set 集合,新集合是 toElement(不包含)之前的所有对象 |
subSet(E fromElement, E fromElement) |
返回一个新的 Set 集合,是 fromElement(包含)对象与 fromElement(不包含)对象之间的所有对象 |
tailSet(E fromElement) |
返回一个新的 Set 集合,辛几何包含对象 fromElement(包含)之后的所有对象 |
HashSet 类和 TreeSet 类都是 Set 接口的实现类,他们都不允许有重复元素,但 HashSet 类在遍历集合中的元素是不关心元素的顺序,而 TreeSet 类则会按自然顺序(升序排列)遍历集合中的元素。
Map 集合
在存储具有映射关系的数据是,需要用到 Map 集合。
Map 接口虽然没有继承 Collection 接口,但提供了 key 到 value 的映射关系。Map 接口中不能包含相同的 key,并且每个 key 只能映射一个 value。
方法 | 功能描述 |
---|---|
put(Object key, Object value) |
向集合中添加指定的 key 与 value 的映射关系 |
cintainsKey(Object key) |
如果此映射包含指定 key 的映射关系,则返回 true |
contains Value(Object value) |
如果此映射将一个或多个 key 映射到指定值,则返回 true |
get(Object key) |
如果存在指定的 key 对象,则返回该对象对应的值,否则返回 null |
keySet() |
返回该集合中的所有 key 对象形成的 Set 集合 |
values() |
返回该集合中所有值对象形成的 Collection 集合 |
Map 接口常用的实现类有 HashMap 和 TreeMap 两种,分别如下:
- HashMap 类是 Map 接口的实现类。HashMap 类虽然能够通过哈希表快速查找其内部的映射关系,但不保证映射的顺序。在 key-value 对(键值对)中,由于 key 不能重变,所以最多只有一个 key 为 null,但可以有无数多个 value 为 null。
- TreeMap 类不仅实现了 Map 接口,还实现了 java.uil.SortedMap 接口。由于使用 TreeMap 类实现的 Map 集合存储 key-value 对时,需要根据 key 进行排序,所以 key 不能为 null。
建议使用 HashMap 类实现 Map 集合,因为由 HashMap 类实现的 Map 集合添加和删除映射关系的效率更高;而如果希望 Map 集合中的元素存在一定的顺序,应该使用 TreeMap 类实现 Map 集合。