------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);