- 数组排序
//1.parallelSort方法
Arrays.parallelSort();
//2.Sort方法
Arrays.sort();
//3.重载方法
Integer arri[] = new Integer[] {72, 7, 65, 72, 91, 91, 91, 89, 65, 58, 87, 9};
Arrays.sort(arri, new Comparator<Integer>() {
//arri数组的类型必须和< >中的类型一致
public int compare(Integer a, Integer b) {
return b - a;//后 - 前 返回降序
// return a - b;//前 - 后 返回升序
}
});
- 二分查找
//二分查找 找到返回下标 找不到返回 -p (p是元素应该插入的位置)
Arrays.binarySearch(a, 0);
- 复制数组
Arrays.copyOf(arr, len);
//将该数组前len个数值复制到新数组中,新数组的长度为len
Arrays.copyOfRange(arr, from, to);
//将该数组第from到第to个元素复制到新数组中,新数组的长度为to - from
- 填充数组
Arrays.fill(arr, from, to, value);
//将arr第from到第to个元素填充为value
- String类型
(1) 字符串不是基本数据类型
(2) String不是关键字
(3) String在java.lang包下
(4) 字符串拼接 ’ + ’
(5) 任意类型和字符串拼接后得到的结果都是字符串
//查找子串第一次出现的下标位置
A.indexOf(B);
//查找该字符串B在A中的第一次出现的位置 找到返回下标 找不到返回-1
//若B有很多字符,则返回第一个字符的下标
//查找子串最后一次出现的下标位置
A.lastIndexOf(B);
//查找该字符串B在A中的最后一次出现的位置 找到返回下标 找不到返回-1
//获取A字符串第no个字符
A.charAt(no);
//截取字符串
A.substring(begin, end);
//不包含end位置的值
//返回字符数组
char[] a = s.toCharArray();
//分割字符串
String result[] = ori.split("6");//用'6'来切割字符串
String result[] = ori.split("[68]");//用'6','8'来切割字符串
//切割字符串后,该字符消失
//字符替换replace(old, new);
String result = ori.replace("1","0");
//用new来替换old
//比较字符串的值是否一样
A.equals(B);
//拼合字符串
String [] str_arr = {"12", "34", "56", "78"};
String str = "";
for (int i = 0; i < str_arr.length; i++) {
str += str_arr[i];
}
/**
*StringBuffer && StringBuilder
*StringBuffer 线程安全 慢
*StringBuilder 线程不安全
*/
A.append(B);//往StringBuffer内添加字符串
/**
* 为什么要使用StringBuffer 和StringBuilder?
* 在字符串拼接过程中会产生中间量,大数量的拼接会导致程序变慢
* StringBuffer中使用一个数组来存储拼接的内容
* 拼接完成后将该数组转为一个字符串,这样就避免中间量的生成
* 执行append方法,向value数组追加字符,
* 在追加过程中,value数组不能存储要追加的部分,
* 如果数组value的长度不够就需要扩容
* 扩多大?
* (value.length<<1)+2, 如果这个空间还不够,需要多大就给多大
*/
- 数组扩容
//不是真正的扩容,是将原数组的内容放到更大的数组中
System.arraycopy(old_arr, old_pos, new_arr, new_pos, copy_length);
//将old_arr从old_pos开始的总计copy_lebgth个元素复制到new_arr中
//其中,从new_arr的new_pos开始进行操作
- 包
java类默认可以访问本包下的类
java类默认导入java.lang包
如果本包的类和其他包的类名相同,需要访问别的包的类时,直接写该类全名 - 类和对象
面向对象三大特征:封装, 继承, 多态 - 构造方法
构造函数对对象中的属性初始化操作,或者是准备资源
系统会自动给每一个类添加一个无参构造方法
如果自定义了构造方法,系统默认构造方法就不存在了
子类的构造方法中,第一行必定是super(),即父类的构造方法。 - static
通过static声明的属性和方法输入类的,可以通过调用类名直接调用
一个类中,静态方法不能直接调用非静态方法和非静态属性
因为在java中类先被加载, 这时对象还未生成 - 访问权限修饰符(访问权限由高到低)
public 公共的 (在任何包中都可以调用)
protected 受保护的 (家族性的) (仅限继承类使用)
default 默认的 (本包下可使用)
private 私有的 (只可被本类使用) - 类中代码加载顺序
静态代码块(必须使用才会加载,并且只在最初new的时候执行一次)->普通代码块(每次new都会执行)->构造方法
执行顺序:
1-父类静态代码块
2-子类的静态代码块
3-父类的普通代码块
4-父类的构造方法
5-子类的普通代码块
6-子类的构造方法 - 跳出循环
name : while(true) {
while(true) {
if(b == 0) {
break name;
//break后加name,代表跳出指定循环
//如果只写break,则代表跳出当前循环
}
}
}