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() 方法的区别:
    1length() 方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法;
    2、length 属性是针对 Java 中的数组来说的,要求数组的长度可以用其 length 属性;
    3Java 中的 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())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值