Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值
在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类。
在某些情况下,Java编译器会自动创建一个Character对象。
例如,将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。
方法 | 描述 |
isLetter() | 是否是一个字母 |
isDigit() | 是否是一个空白字符 |
isWhitespace() | 是否是一个空白字符 |
isUpperCase() | 是否是大写字母 |
isLowerCase() | 是否是小写字母 |
toUpperCase() | 指定字母的大写形式 |
toLowerCase() | 指定字母的小写形式 |
toString() | 返回字符的字符串形式,字符串的长度仅为1 |
数组专用工具类指的是 java.util.Arrays
类,基本上常见的数组操作,这个类都提供了静态方法可供直接调用。
具体来说,数组操作可分为以下 9 种
- 创建数组
- 比较数组
- 数组排序
- 数组检索
- 数组转流
- 打印数组
- 数组转 List
- setAll(没想好中文名)
- parallelPrefix(没想好中文名)
本章只学习标红
使用 Arrays 类创建数组可以通过以下三个方法:
- copyOf,复制指定的数组,截取或用 null 填充
- copyOfRange,复制指定范围内的数组到一个新的数组
- fill,对数组进行填充
copyOf
String[] intro = new String[] { "沉", "默", "王", "二" };
String[] revised = Arrays.copyOf(intro, 3);
String[] expanded = Arrays.copyOf(intro, 5);
System.out.println(Arrays.toString(revised));
System.out.println(Arrays.toString(expanded));
结果
[沉, 默, 王]
[沉, 默, 王, 二, null]
copyOfRange
String[] intro = new String[] { "沉", "默", "王", "二" };
String[] abridgement = Arrays.copyOfRange(intro, 0, 3);
System.out.println(Arrays.toString(abridgement));
copyOfRange()
方法需要三个参数,第一个是指定的数组,第二个是起始位置(包含),第三个是截止位置(不包含)。来看一下输出结果:
结果
[沉, 默, 王]
fill
String[] stutter = new String[4];
Arrays.fill(stutter, "沉默王二");
System.out.println(Arrays.toString(stutter));
使用 new 关键字创建了一个长度为 4 的数组,然后使用 fill()
方法将 4 个位置填充为“沉默王二”,来看一下输出结果:
结果
[沉默王二, 沉默王二, 沉默王二, 沉默王二]
如果想要一个元素完全相同的数组时, fill()
方法就派上用场了。
Arrays 类的 equals()
方法用来判断两个数组是否相等。
String[] intro = new String[] { "沉", "默", "王", "二" };
boolean result = Arrays.equals(new String[] { "沉", "默", "王", "二" }, intro);
System.out.println(result);
boolean result1 = Arrays.equals(new String[] { "沉", "默", "王", "三" }, intro);
System.out.println(result1);
true false
Arrays 类的 sort()
方法用来对数组进行排序,来看下面这个例子
String[] intro1 = new String[] { "chen", "mo", "wang", "er" };
String[] sorted = Arrays.copyOf(intro1, 4);
Arrays.sort(sorted);
System.out.println(Arrays.toString(sorted));
[chen, er, mo, wang]
可以看得出,按照的是首字母的升序进行排列的。
因为数组是一个对象,直接 System.out.println
的话,
结果是这样的:[Ljava.lang.String;@3d075dc0
使用 Arrays.toString()打印
5、数组转list
尽管数组非常强大,但它自身可以操作的工具方法很少,比如说判断数组中是否包含某个值。如果能转成 List 的话,就简便多了,因为 Java 的集合框架 List 中封装了很多常用的方法。
String[] intro = new String[] { "沉", "默", "王", "二" };
List rets = Arrays.asList(intro);
System.out.println(rets.contains("二"));
不过需要注意的是,Arrays.asList()
返回的是 java.util.Arrays.ArrayList
,并不是 java.util.ArrayList,它的长度是固定的,无法进行元素的删除或者添加。
rets.add("三");
rets.remove("二");
这个在编码的时候一定要注意,否则在执行这两个方法的时候,会抛出异常:
Exception in thread "main" java.lang.UnsupportedOperationException at java.base/java.util.AbstractList.add(AbstractList.java:153) at java.base/java.util.AbstractList.add(AbstractList.java:111)
要想操作元素的话,需要多一步转化,转成真正的 java.util.ArrayList
:
List rets1 = new ArrayList<>(Arrays.asList(intro));
rets1.add("三");
rets1.remove("二");