1数组的排序

1.1.选择排序

  • 从第一个位置元素到倒数第二个位置元素依次和后面每个元素作比较,依次得到每个位置上的最值。
package ArrayDemo;
import util.ArrayUtil;
public class ArrayDemo1 {
	public static void main(String[] args) {
		int[] arr = {10,5,40,3,20,16};
		selectSort(arr, true);
		ArrayUtil.printArr(arr);
	}
	
	public static void selectSort(int[] arr, boolean isAsc) {
		// isAsc: true升序,false降序
		for (int i=0;i<arr.length-1;i++) {
			for (int j=i+1;j<arr.length;j++) {
				if (isAsc?arr[i] > arr[j]:arr[i] < arr[j]) {
					int tmp = arr[i];
					arr[i] = arr[j];
					arr[j] = tmp;
				}
			}
		}
	}
}

1.2 冒泡排序

  • 它重复走访要排序的数列,依次比较两个元素,如果他们顺序错误就把他们交换过来,走访数列的工作是重复地进行知道没有再需要交换,也就是说该数列已经完成。这个算法的名字由来是因为越大的元素会经由交换慢慢"浮"到数列的顶端,所以叫"冒泡排序"。
package ArrayDemo;

import util.ArrayUtil;

public class ArrayDemo2 {
	public static void main(String[] args) {
		int[] arr = {1,42,33,2,45,66};
		bubbleSort(arr,false);
		ArrayUtil.printArr(arr);
	}
	public static void bubbleSort(int[] arr, boolean isAsc ) {
		for (int i=1;i<arr.length;i++) {
			for (int j=0;j<arr.length-i;j++) {
				if (isAsc?arr[j] > arr[j+1]:arr[j] < arr[j+1]) {
					int tmp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = tmp;
				}	
			}
		}
	}
}

1.3 二分查

public static int binarySearch(int[] arr, int key) {
    int start = 0;
    int end = arr.length-1;
    while (start <=end) {
        int middleIndex = (start + end) / 2;
        int middle = arr[middleIndex];
        if (key == middle) {
            return middleIndex;
        } else if (key > middle) {
            start = middleIndex + 1;
        } else {
            end = middleIndex - 1;
        }
    }
    return -1;
}

2.Arrays工具类用法

  • 引包
import java.util.Arrays;
  • toString 把数组转换字符串
int[] arr = {1,2,3,4,6};
System.out.println(Arrays.toString(arr));// [1, 2, 3, 4, 6]
  • sort 排序
// 只能进行升序排序
Arrays.sort(arr);
  • binarySearch: 找到数组数据索引
System.out.println(Arrays.binarySearch(arr, 3));

3.包装类

  • 分别为:
byte	Byte
short	Short
int		Integer
long	Long
float	Float
double	Double
boolean	Boolean
char	Character
  • 装箱和拆箱:
  • 装箱: 把基本数据类型转成包装类
  • 拆箱:把包装类转成基本数据类型
// 示例
// 装箱
int a = 10;
Integer a2 = Integer.valueOf(a);
// 拆箱
int a3 = a2.intValue();
// 上述示例是jdk1.5之前书写方式,需要自己手动装箱拆箱

JDK1.5之后可以自动装箱和拆箱

int a = 10;
// 装箱
Integer a4 = a;
// 拆箱
int a5 = a4
  • int如何转换String
int b = 100;
// 方式1:
Stirng s1 = b + "";
// 方式2:
String s2 = String.valueOf(b);
  • String 转 int(sting转int 前提string是一个数)
String s3 = "100";
// 方式1:
// 返回值是Integer类型
Integer b = Integer.valueOf(s3);
// 方式2:
// 返回值是int类型
int b = Integer.parseInt(s3);
// 方式3:
Integer b = new Integer(s3);
  • Integer中进制转换的方法
1.toBinaryString 转成二进制字符串
    System.out.println(Integer.toBinaryString(100));
2.toOctalString 转成八进制字符串
    System.out.println(Integer.toOctalString(100));
3.toHexString 转成16进制字符串
    System.out.println(Integer.toHexString(100));
4. toString 转成几进制
    System.out.println(Integer.toString(100,36));// 把100转换成36进制 范围(2-36进制)。超出36进制返回自己。
5.parseInt 其他进制转实际值
    System.out.println(Integer.parseInt("abc",16));// 把16进制abc转成成10进制
  • Character用法
1.isUpperCase 判断是否是大写字母
    System.out.println(Character.isUpperCase('a'));
2.isLowerCase 判断是否是小写字母
    System.out.println(Character.isLowerCase('d'));
3.isDigit 判断是否为数字
    System.out.println(Character.isDigit('6'));
4.toUpperCase 字母转大写
    System.out.println(Character.toUpperCase('a'));
5.toLowerCase 字母转小写
    System.out.println(Character.toLowerCase('b'));
  • Math方法
1. 常量值
    Math.PI
    Math.E
2. abs 求绝对值
    System.out.println(Math.abs(-12));
3. ceil 向上取整
    System.out.println(Math.ceil(15.3));
4. floor 向下取整
    System.out.println(Math.floor(15.3));
5. pow(a,b) 求a的b次方
    System.out.println(Math.pow(14,2));
6. random 求随机数0-1之间
    System.out.println(Math.random());
7. round 四舍五入
    System.out.println(Math.round(3.5));
8. sqrt 求算数平方根
    System.out.println(Math.sqrt(16));// 4.0
  • System类方法
1.gc 用于垃圾回收
2.exit 退出
3.currentTimeMillis 获取当前时间毫秒值 时间基准值:1970年1月1日0:0:0
	System.out.println(System.currentTimeMillis());
4.nanoTime 获取当前时间纳秒值
5.arraycopy 数组拷贝
    参数: src 源数组,srcPos 从哪拷贝,dest 拷贝到哪里,destPost 目标数组的位置, length 拷贝长度
    int[] arr = {12,34,2,4,66,44,5};
    int[] arr2 = new int[6];
    // 从arr index为2位置开始拷贝,拷贝位置到arr2的index为1起始,拷贝3个长度
    System.arraycopy(arr, 2, arr2, 1, 3);
    ArrayUtil.printArr(arr2);// [0,2,4,66,0,0]
  • Date类 日期
import java.util.Date;
Date d = new Date();
System.out.println(d);//Tue Oct 13 00:14:31 CST 2020

Date d2 = new Date(0);
System.out.println(d2);

// getTime 把日期对象转成毫秒值
// setTime 当前日期设置为毫秒值
d.getTime()
d.setTime(0)