黑马程序员_数组知识总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一.排序


1选择排序
int[] arr = {1,5,2,4,6,8};
原理:如果拿0角标上的元素依次和后面的元素进行比较,
              第一次内循环结束后,最小值出现在了0角标位置。


arr[x]与arr[y]比较
数组长度是6
for (int x = 0;x < arr.length - 1;x++){
    for (int y = x + 1;y < arr.length;y++){
        if (arr[x] > arr[y]){
            int temp = arr[x];
            arr[x] = arr[y];
            arr[y] = temp;
        }
    }
}
2冒泡排序


int[] arr = {1,5,2,4,6,8};
原理:两个相邻元素进行比较,第一次比较完以后,最大值出现在了最大角标处。


for (int x = 0;x < arr.length - 1; x++){
    for (int y = 0;y < arr.length - 1 - x;y++){//6
        if (arr[y] > arr[y+1]){
            int temp = arr[y];
            arr[y] = arr[y+1];
            arr[y+1] = temp;
        }
    }
}
3,查找


A:无序数组
int[] arr = {1,5,2,4,6,8};
public static int getIndex(int[] arr,int key) {
    for (int x = 0;x < arr.length;x++){
        if (key == arr[x]){
            return x;
        }
    }
    return -1;
}
B:有序数组 二分查找
数组长度是6,最大角标值是5
public static int getIndex(int[] arr,int key) {
    int min = 0;
    int max = arr.length-1;
    int mid = (min + max)/2;
    while (key != arr[mid]){
        if (key > arr[mid]){
            min = mid + 1;
        }else if (key < arr[mid]){
            max = mid - 1;
        }
        if (min > max){
            return -1;
        }
        mid = (min + max)/2;
    }
    return mid;


}
二.Arrays工具类


sort()
binarySearch()
三.BigInteger


1.创建对象
可以使用BigInteger(String)来创建一个很大的整数, 精度可以无限大, 值创建之后不会被改变(类似String)
2.常用方法
BigInteger add(BigInteger val) //加
BigInteger subtract(BigInteger val) //减
BigInteger multiply(BigInteger val) //乘
BigInteger divide(BigInteger val) //除
BigInteger mod(BigInteger m ) //模
BigInteger max(BigInteger val) //两个数的最大值
BigInteger min(BigInteger val) //两个数的最小值
四.BigDecimal


1.创建对象
BigDecimal(double); //运算结果不精确
BigDecimal(String); //可以,但是每次都要传字符串给构造函数
static BigDecimal valueOf(double) //可以,而且可以直接传double数
因为double数是不精确,是无限接近那个数,用BigDemal这个类可以让其精确
2.常用方法
BigDecimal add(BigDecimal augend)
BigDecimal subtract(BigDecimal subtrahend)
BigDecimal multiply(BigDecimal multiplicand)
BigDecimal divide(BigDecimal divisor)
五.时间类


1.Date
比较古老的一个类, 大多数方法已过时, 但通常我们还会用它来获取当前时间,new Date()可以创建日期对象, 然后使用SimpleDateFormat可以将其格式化成我们需要的格式,通常使用的格式为: "yyyy-MM-dd HH:mm:ss", 具体格式说明详见SimpleDateFormat类yyyy年MM月dd日 E HH:mm:ss
a.获取当前时间的毫秒值
Date d = new Date();
d.getTime(); //获取的是1970年1月1日0时0分0秒到当前时间的毫秒值
System.currentTimeMillis();
b.将毫秒值转换成时间对象
Date d = new Date(毫秒值) //通过毫秒值获取时间对象
Date d = new Date(); //创建时间对象
d.setTime(毫秒值); //根据毫秒值修改时间对象
2.Calendar
很多方法都是替代了Date类的方法, 最常用的就是
int get(int field)(Calendar.YEAR) //通过传入的字段获取对应的值,(获取年对应的值)
void add(int field, int amount) //field代表传入的时间字段可以是年月日等,amount代表是数值,正数就是在传入的字段上加,负数减
void set(int field, int value) //field代表传入的时间字段可以是年月日等,value代表设置的值,想设置哪一年或月日等,就写哪个值
void set(int year, int month, int date)
可以对指定的字段获取, 设置, 以及增减 六.Math
提供了一些和数学运算相关的方法,
static double PI //获取π(派)的值
static double floor(double a) //是小于等于a这个double值的最大整数对应的double值
static double ceil(double a) //是大于等于a这个double值的最小整数对应的double值
static long round(double a ) //四舍五入,返回是一个long值
static double sqrt(double a) //开平方
static double pow(double a, double b) //a是底数,b是指数返回的是a的b次幂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值