黑马程序员--Java基础学习笔记【数组操作、基本数据类型包装类】

 

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

 

  • 数组排序和查找

  • // 选择排序

public static void selectSort(int[] array){

    // i: 0 --> array.length-1

    for(int i = 0; i <array.length; i++){

        // j: i+1 --> array.length-1

        for(int j = i + 1; j <array.length; j++)

            // 每一遍都用第一个元素与后面的元素分别比较

            if(array[i] >array[j]){

                int temp = array[i];

                array[i] = array[j];

                array[j] = temp;

            }

    }

}

 

  • // 冒泡排序

public static void bubbleSort(int[] array){

    for(int i = 0; i < array.length- 1; i++){

        for(int j = 0; j <array.leng - i - 1; j++){

            // 相邻两个元素比较,大数往后排

            if(array[j] >array[j+1]){

                int temp = array[j];

                array[j] = array[j+1];

                array[j+1] = temp;

            }

        }

    }

}

// 冒泡排序优化版

public static void bubbleSortOptimization(int[] array){

    boolean flag = false;

    for(int i = 0; i < array.length- 1; i++){

        for(int j = 0; j <array.length - i - 1; j++){

            if(array[j] >array[j+1]){

                flag = true;

                int temp = array[j];

                array[j] = array[j+1];

                array[j+1] = temp;

            }

        }

        if(!flag){

            break;

        }

    }

}

 

  • // 折半查找,返回关键字的索引(只适用于有序数组)

public static int binarySearch(int[] array, int key){

    int min = 0, max = array.length -1, middle = 0;

    while(min <= max){

        middle = (min + max) / 2;

        if(array[middle] < key){

            min = middle + 1;

        } else if(array[middle] >key){

            max = middle - 1;

        } else { // (array[middle] ==key)

            return middle;

        }

    }

    return -1;

}

 

  • Arrays类 java.util.Arrays

针对数组进行操作的工具类,提供排序、查找等功能

成员方法

    public static String toString(int[]a) // 数组 --> 字符串

    public static void sort(int[] a)// 对数组进行升序/自然顺序排序

    public static intbinarySearch(int[] a, int key) // 二分法查找

数组的复制

    Arrrays.copyOf

    类型[] newArray =Arrays.copyOf(类型[] original, int newLength);

    System.arraycopy

    System.arraycopy(Objectsrc, int srcPos, Object dest, int destPos, int length)

// 源数组,源数组起始位置,目标数组,目标数组起始位置,要复制长度

数组的扩容

    int[] a = {1, 2, 3, 4, 5};

    a = Arrays.copyOf(a, a.length + 1)

 

  • 基本类型包装类

包装类是不可变类,在构造了包装类对象后,不允许更改包装类在其中的值

包装类是final的,不能定义他们的子类

用途:

    作为和基本数据类型对应的类类型存在,方便涉及到对象的操作;

    包含每种基本数据类型的相关属性,如最大值、最小值等,以及相关的操作方法

 

Number及其主要用法

    抽象类Number是Byte、Double、Float、Integer、Long和Short类的父类

    包装类 --> 基本类型

byteValue(), shortValue(), int Value(), longValue(), floatValue(), doubleValue()

 

  • Integet常用功能

构造方法

    public Integer(int value) // int--> Integer

    public Integer(String s) // 字符串格式的整数 --> Integer

成员方法

    public int intValue() // 以int类型返回该Integer的值

    public static int paseInt(Strings) // 字符串 --> int

    public static String toString(inti) // 整数 --> 字符串

    public static Integer valueOf(inti) // int --> Integer

    public static IntegervalueOf(String s) // 字符串--> Integer

 

  • Character常用功能

构造方法

    public Character(char value)

成员方法

    public static booleanisUpperCase(char ch)

    public static booleanisLowerCase(char ch)

    public static boolean isDigit(charch)

    public static chartoUpperCase(char ch)

    public static chartoLowerCase(char ch)

 

  • 自动装箱和拆箱操作

        Integer i = 1; // Integer i =Integer.valueOf(1)

        i += 1; // i =Integer.valueOf(i.intValue() + 1);

since JDK5.0 编译器在编译期的“预处理”工作,装箱和拆箱是“编译器”认可的,而不是JVM。编译器在生成类的字节码时插入必要的方法调用。

 

    Integeri = new Integer(10);

    Integerj = new Integer(10);

    System.out.println(i== j); // false 不同的对象

    System.out.println(i.equals(j));// true 重写equals方法,比较的是数值

   

    Integera = 1000;

    Integerb = 1000;

    System.out.println(a== b); // false 自动装箱

    System.out.println(a.equals(b));// true

   

    Integeraa = 127;

    Integerbb = 127; // Integer bb = aa; 没有重新开辟存储空间

    // 自动装箱,取值范围在 byte 范围之内,节约资源

    System.out.println(aa== bb); // true

    System.out.println(aa.equals(bb));// true

 

  • 如何将int型变量转换成String类型变量?如何将String类型变量转换成int类型变量?

int --> String String类型的静态方法valueOf

String s = String.valueOf(i);

String --> int Integer类型的静态方法parseInt

int i = Integer.parseInt(s);


你可能感兴趣的:(数组操作,基本数据类型包装类)