数组高级:
冒泡排序:
数组:int[] arr = {24,69,80,57,13};
自己写代码实现:最后打印的结果是: 13,24,57,69,80
原理:相邻元素两两比较,大的往后走,第一次循环结束后,最大值就在最后(最大索引处)。
原值:24,69,80,57,13
第一:24,69,57,13,80 比较了:4次
第二:24,57,13,69,80 比较了:3次
第三:24,13,57,69,80 比较了:2次
第四:13,24,57,69,80 比较了:1
方法名:bubbleSort
for(int i = 0; i<arr.length-1 ; i++ ){ //总共要比较的次数
//内循环控制每次比较需要比较的次数
for(int j=0; j<arr.length-1-i; j++){ // -1是为了防止索引越界,-i是提高效率
//相邻元素两两比较,大的往后走
if(arr[j] > arr[j+1]){ //arr[j]=80 arr[j+1]=57
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
选择排序:
数组:int[] arr = {24,69,80,57,13};
自己写代码实现:最后打印的结果是: 13,24,57,69,80
原理:从最小索引处开始,那一个索引上的元素,依次与其他索引位置的元素比较,小的在前,大的在后。
二分(折半)查找:
前提条件:数组必须是有序的。
无序数组可以使用二分查找吗? 不可以,原因是因为二分查找的前提条件是数组必须是有序的,即使你对无序数组进行排序,那么也很有可能,元素的位置发生改变。
8 9 12 10 5 排序后:5 8 9 10 12 60
Arrays:数组工具类
public static String toString(int[] arr);
public static void sort(int[] arr);
public static int binarySearch(int[] arr,int key); 如果没找到,返回:-插入点-1
基本类型对应的包装类?
为什么要有基本类型的包装类?
大白话,把基本类型包装起来,包装成对象,那么它就可以来调用方法了。
常用操作:
在包装类和String之间做转换。(开发中常用的是:Integer类型和String类型之间的转换)
Integer类:
构造方法:
Integer(int i);
Integer(String str);
String和int类型之间的相互转换:
String ---》 int
public static int parseInt(String s);
总结:
基本类型的包装类有8种,其中7种都有parseXxx的方法(Character类除外),可以把这7种数据的字符串形式转成其基本类型。
int --->>> String
1、和""拼接。
2、public static String toString(int a);
JDK1.5以后的新特性:
自动装箱:把基本类型转成其对应的包装类。
自动拆箱:把包装类转成其对应的基本类型。
注意:使用Integer i = null; 来调用方法或者进行自动拆箱的时候,会报一个异常:NullPointerException。
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1==i2); 问:结果是什么?为什么?
答:true,-128~127之间的数据是byte的取值范围,如果在这个范围内做自动装箱,不会重新创建对象,而是去常量池(byte常量池)中找,超过这个范围,做自动装箱,会重新创建对象。
|
|