1. 数组排序
//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;//前 - 后 返回升序
    }
});
  1. 二分查找
//二分查找 找到返回下标 找不到返回 -p (p是元素应该插入的位置)
Arrays.binarySearch(a, 0);
  1. 复制数组
Arrays.copyOf(arr, len);
//将该数组前len个数值复制到新数组中,新数组的长度为len
Arrays.copyOfRange(arr, from, to);
//将该数组第from到第to个元素复制到新数组中,新数组的长度为to - from
  1. 填充数组
Arrays.fill(arr, from, to, value);
//将arr第from到第to个元素填充为value
  1. 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, 如果这个空间还不够,需要多大就给多大
*/
  1. 数组扩容
//不是真正的扩容,是将原数组的内容放到更大的数组中
System.arraycopy(old_arr, old_pos, new_arr, new_pos, copy_length);
//将old_arr从old_pos开始的总计copy_lebgth个元素复制到new_arr中
//其中,从new_arr的new_pos开始进行操作

  1. java类默认可以访问本包下的类
    java类默认导入java.lang包
    如果本包的类和其他包的类名相同,需要访问别的包的类时,直接写该类全名
  2. 类和对象
    面向对象三大特征:封装, 继承, 多态
  3. 构造方法
    构造函数对对象中的属性初始化操作,或者是准备资源
    系统会自动给每一个类添加一个无参构造方法
    如果自定义了构造方法,系统默认构造方法就不存在了
    子类的构造方法中,第一行必定是super(),即父类的构造方法。
  4. static
    通过static声明的属性和方法输入类的,可以通过调用类名直接调用
    一个类中,静态方法不能直接调用非静态方法和非静态属性
    因为在java中类先被加载, 这时对象还未生成
  5. 访问权限修饰符(访问权限由高到低)
    public     公共的 (在任何包中都可以调用)
    protected  受保护的 (家族性的) (仅限继承类使用)
    default    默认的 (本包下可使用)
    private    私有的 (只可被本类使用)
  6. 类中代码加载顺序
    静态代码块(必须使用才会加载,并且只在最初new的时候执行一次)->普通代码块(每次new都会执行)->构造方法
    执行顺序
    1-父类静态代码块
    2-子类的静态代码块
    3-父类的普通代码块
    4-父类的构造方法
    5-子类的普通代码块
    6-子类的构造方法
  7. 跳出循环
name : while(true) {
	while(true) {
		if(b == 0) {
			break name;
			//break后加name,代表跳出指定循环
			//如果只写break,则代表跳出当前循环
		}
	}
}