JavaSE中部分类的理解与常用方法
JavaSE中部分类的理解与常用方法
内容基本是一些零碎的,但又容易遗忘的小细节,仅作为复习巩固用途。如有错误,请指出,谢谢。
0、 Scanner 类
这个主要是刷题读取的时候存在一些莫名的问题,后面碰到再添加
next() 与 nextLine() 区别
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
补:挺有意思,没用过
StringTokenizer类可以分解输入的整行得到的带空格的字符串。
默认情况下,StringTokenizer以空格,制表符,换行符和回车符作为分割依据。
1、File类
File类是io包中唯一代表磁盘文件本身的对象。
File类的对象主要用来获取文件本身的一些信息,如文件所在目录、文件的长度、文件读写权限等。
// 构造函数
// 利用路径名创建对象,路径名可以是目录或文件,路径名其实就是一个字符串,创建对象根本就不管你目录或文件存在与否
File(String pathname)
// pathname:是指路径名(包含文件名).
File(String parent ,String child)
File(File f ,String child)
// 常见方法
boolean exits() //判断文件或目录是否存在
boolean isFile() //判断此抽象路径名表示的文件是否为普通文件
boolean isDirectory() //判断此抽象路径名表示的是否是一个目录
boolean createNewFile() //当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。注意:这是创建文件。
boolean delete() // 删除由此抽象路径名表示的文件或目录。
boolean mkdirs() // 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。可创建多层文件包。其实就是递归创建。
//boolean mkdir() // 创建由此抽象路径名命名的目录。只能创建一层文件包。创建单层。
2、Pattern对象与Matcher
注:
1、Pattern利用字符串创建正则表达式,/斜杠不需要\反斜杠转义
2、\反斜杠本身需要\反斜杠转义
3、\d表示0-9数字
4、.*点星号表示匹配任意部分字符串
5、^开头$结尾
6、+匹配至少1个 ;*匹配至少0个 ;?匹配0次或1次
7、\w 匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。注意可能存在下划线
8、[xyz] 匹配集合
String bookInfo = "book2016/03/11hello";
String pattern = "\\d{4}/\\d{2}/\\d{2}";
Pattern compile = Pattern.compile(pattern);
Matcher matcher = compile.matcher(bookInfo);
if(matcher.find()){
System.out.println(matcher.group()); // 2016/03/11
}
// matcher.groupCount()匹配的个数,可能有多个匹配
// matcher.group(index) 按索引找出匹配组,有那么一个()分组过程,group(0)表示匹配完整项,group(1)表示匹配的第一个分组
// matcher.group() ,省略索引,找出第一个匹配项
3、Number 类的易混点
内置数据类型和包装类 :前者数值,后者引用类型
常用方法:
1、valueOf()
返回一个 Number 对象指定的内置数据类型。引用使用
2、parseInt()
将字符串解析为int类型。引用使用
3、equals()
判断number对象是否与参数相等。引用使用
4、toString()
以字符串形式返回值。引用使用
// Java 会对 -128 ~ 127 的整数进行缓存,超过范围不缓存
Integer a=123; // java 在编译 Integer i1 = 123 时,会翻译成 Integer i1 = Integer.valueOf(123)
Integer b=123;
System.out.println(a==b); // 输出 true
System.out.println(a.equals(b)); // 输出 true
a=128;
b=128;
System.out.println(a==b); // 输出 false
System.out.println(a.equals(b)); // 输出 true
// 这是新生成两个对象
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false,这是引用和引用比较
// 引用类型和内置数据类型比较,引用类型都会先拆箱,最后都是数值比较
Integer i1 = 200;
Integer i2 = new Integer(200);
int j = 200;
System.out.println(i1 == j);//输出:true
System.out.println(i2 == j);//输出:true
4、Character 类
常用方法,大大节省时间
1、isLetter()
是否是一个字母
2、isDigit()
是否是一个数字字符
3、判断/转换大小写
5、String 类、StringBuffer 和 StringBuilder 类
String 类的常用方法,特别有用
1、char charAt(int index)
返回指定索引处的 char 值。
2、boolean equals(Object anObject)
将此字符串与指定的对象比较。此外,还有忽略大小写的比较
3、contains(CharSequence chars)
判断是否包含指定的字符系列。
4、isEmpty()
判断字符串是否为空。
5、char[] toCharArray()
将此字符串转换为一个新的字符数组。刷题有人常用
6、String trim()
返回字符串的副本,忽略前导空白和尾部空白。
7、int indexOf()
返回指定字符/字符串在此字符串中第一次出现处的索引。此外,可指定搜索起始位置
8、String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
9、String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。一般切分个逗号或空格很常见
10、String substring(int beginIndex) 或 substring(beginIndex, endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
## 下面用到的较少
11、byte[] getBytes()
使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。此外,可指定输出的字符集
注:这条虽然使用很少,但用好就特别方便
12、String replaceAll(String regex, String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
StringBuffer 和 StringBuilder 类的常用方法,只举出两个
1、append()
将指定的字符/字符串串追加到此字符序列。
2、void setCharAt(int index, char ch)
将给定索引处的字符设置为 ch。
length() 方法,length 属性和 size() 方法的区别:
1、length() 方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
2、length 属性是针对 Java 中的数组来说的,要求数组的长度可以用其 length 属性;
3、Java 中的 size() 方法是针对泛型集合说的
需要特别注意:字符串的加运算,到底是纯字面值的加,还是掺杂引用的加
6、Arrays 类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
常用方法:
1、 给数组赋值:通过 fill 方法。
这个特别方便,以后就不需要循环遍历赋值,还可以指定部分区域赋值
2、 对数组排序:通过 sort 方法,默认按升序。
3、比较数组:通过 equals 方法比较数组中元素值是否相等。
4、查找数组元素,返回查到的索引:
通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
前提是必须排好序,用好了特别方便
数组容量如果不够用可以使用 Arrays.copyOf() 进行扩容:
特别方便,既达到扩容效果,前半部分又拷贝了。
内部实现其实是使用了 System.arrayCopy(),在内部重新创建一个长度为 newLength 的数组。如果自定义则调用后还需要赋值,太过麻烦
// Array.copy(E[] e,newLength);
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a= {10,20,30,40,50};
a= Arrays.copyOf(a,a.length+1);
for(int i=0;i<a.length;i++) {
System.out.println(a[i]); // 10 20 30 40 50 0
}
}
}
Java.util.Arrays 类的排序拓展:
Arrays.sort 只可以用于按升序排列数组,
若按降序排序可以使用 Arrays.sort(数组,Collections.reverseOrder())。