Arrays:针对数组操作的工具类 (提供了一些针对数组排序和二分搜索法)
(2)、常用方法:
public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序
public static int binarySearch(int[] a,int key):二分搜索法: 在int类型的数组中查找key元素的索引
//以后在实际开发中,只要有引用类型,在对引用类型数据进行操作的时候,对引用类型的对象进行非空判断,
//防止空指针异常(NullPointerException)
public static String toString(int[] a) {
if (a == null) //对数组进行非空判断
return "null";
int iMax = a.length - 1; //arr.length-1 //a--->arr
if (iMax == -1)
return "[]";
在Arrays进行二分搜索法时,当所搜索的元素不存在时,返回值的计算过程
int low = fromIndex; //最小索引
int high = toIndex - 1;// 最大索引 4
while (low <= high) { //如果最小索引小于=最大索引
int mid = (low + high) >>> 1; >>> :无符号右移动(位运算符) //中间索引:mid = 2 ,3 ,4
位^:位异或
位&:位与
位|:位或
<< :左移动
有符合的数据表示法(原码,反码,补码)
计算机底层运算数据的时候:通过补码进行运算的
int midVal = a[mid]; // 查找中间索引对应的元素:arr[2] = 57 69 80
if (midVal < key) //判断:中间索引对应的元素 < key =577
low = mid + 1; //low = mid + 1; mid = (取到最大的mid的值) 4+1 = 5
2(1)、Calendar类:日历类
(2)、是一个抽象类,如何实例化?
public static Calendar getInstance() :通过一个静态功能来创建日历了对象
Date类:(重点)
public final void set(int year, int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
3(1)、System 类包含一些有用的类字段和方法。它不能被实例化。
public static long currentTimeMillis()返回以毫秒为单位的当前时间
src:原数组 srcPos :从原数组的哪个位置开始
dest:目标数组 destPos:到目标数组的哪个位置结束 length:长度
(2)、 构造方法:
public Date()表示分配它的时间(精确到毫秒)。
public Date(long date):创建一个日期对象,指定毫秒值 (需要将long 时间毫秒值转换成Date对象)
public void setTime(long time):设置毫秒值
中间的转换:使用中一个中间类:DateFormat,并且DateFormat是一个抽象类,抽象意味着不能实例化,所以应该考虑用它的子类:
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpelDateFormat的构造方法:
public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,根据pattern(模式:规则)
SimpleDateFormat sdf = new SimpleDateFormat("xxx年xx月xx日") ;
日期和时间模式 年: yyyy 月: MM 日: dd
时: hh 分: mm 秒: ss
//Date---String:(格式化)
//创建一个日期对象
Date d = new Date() ;
//创建SimpleDateFormat类对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//public final String format(Date date):格式化
String str = sdf.format(d) ;
System.out.println("str:"+str);
System.out.println("----------------------");
//String:日期文本格式:---->Date:日期格式
// public Date parse(String source):解析
String strDate = "2018-6-25" ;
//创建SimpleDateFormat类对象
// SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日") ;
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd") ;
// 注意 :simpleDateFormat在解析文本格式的时候,里面 模式(规则)一定要和文本格式的模式一直,否则就出现PareseException
Date dd = sdf2.parse(strDate) ;
System.out.println("dd:"+dd);
5(1)、Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
public static int abs(int a):绝对值
public static double ceil(double a):向上取整
public static double floor(double a):向下取整
public static int max(int a,int b):求最大值
public static int min(int a,int b):求最小值
public static double pow(double a,double b):a的b次幂
public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0
public static int round(float a):四射五入
public static double sqrt(double a):一个数的正平方根
-->实际开发中:中间变量的方式进行互换
--> 位异或,位^的特点:一个数据被另一个数据位^两次,其值是它本身
System.out.println(a^b^b);
System.out.println(a^b^a);
System.out.println("a:"+a+",b:"+b);
//=号左边: a ,b,a
//=右边: a^b
a = a ^ b ;
b = a ^ b ;//b = a^b ^ b
a = a ^ b ;
6(1)、Random:是一个可以获取随机数的
(2)、public Random():无参构造方法
public Random(long seed) :指定long类型的数据进行构造随机数类对象
public int nextInt():获取随机数,它的范围是在int类型范围之内
public int nextInt(int n):获取随机数,它的范围是在[0,n)之间
7(1)、patten:正则表达式验证qq号,邮箱等
字符
x 字符 x
\\ 反斜线字符
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\A 输入的开头
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
1)长度区别:
数组长度固定
集合长度可变
2)内容的区别
数组可以存储同一种类型的元素
集合可以存储多种类型的元素
3)存储类型的区别
数组:可以存储基本类型,也可以存储引用类型 String[] str = {"hello","world","java",100} ; 错误的
集合:只能存储引用类型
JDK 不提供此接口的任何直接 实现:它提供更具体的子接口,更具体的实现类
基本功能:
添加功能:boolean add(Object e)
add()方法的源码
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true; //只要添加就返回true,所以直接添加即可,不用赋值输出;
}
删除功能: void clear() :删除集合中所有元素(暴力删除)
boolean remove(Object o):删除集合中的指定元素
判断功能: boolean contains(Object o):集合中是否包含指定的元素
获取功能: int size() :获取集合中的元素数
boolean retainAll(Collection c) :交集功能: A集合对B集合取交集元素 :思考
boolean removeAll(Collection c):删除一个集合中所有元素:
转换功能:Object[] toArray() :将集合转换成数组