JVM: Java Virtual Machine,Java虚拟机,是Java可以跨平台的核心所在,它只认识 .class文件,且同一段Java代码在编译后生成的.class文件都是同样的,jvm识别.class文件中的字节码指令并调用操做系统上的API(应用程序接口)完成动做,所以,编译一次,到处运行。java
JRE: Java Runtime Environment,Java运行时环境。它主要包含jvm 的标准实现和 Java 的一些基本类库。数组
JDK: Java Development Kit,Java 开发工具包。JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。因此安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具,打包工具等。jvm
三者之间的关系:使用JDK开发完成的java程序,经过编译工具把.java文件编译成.class文件,JVM先识别.class文件再调用API完成指令,在JRE(Java运行环境)运行,输出结果。工具
数据类型 | 占用空间(字节数) | 默认值 |
byte | 1 | (byte)0 |
short | 2 | (short)0 |
char | 2 | \u0000(null) |
int | 4 | 0 |
float | 4 | 0.0f |
double | 8 | 0.0d |
long | 8 | 0L |
boolean | - | false |
1 public class BubbleSort{ 2 public void bubbleSort (Intrger[] arr) { 3 for (int i=0; i < n; i++ ) { 4 for (int j = 0; j < n- i - 1) { 5 if (arr [ j ] > arr[ j+1]) { 6 int temp=arr [ j ]; 7 arr[ j ]=arr[ j+1 ]; 8 arr[ j+1 ]=temp; 9 } 10 } 11 } 12 } 13 }
public class SelectionSort { public static void SelectSort(int[] arr){ for(int i=0; i<arr.length-1; i++) { int index = i; for (int j = i; j < arr.length; j++) { if (arr[j] < arr[index]) { index = j; } } if(arr[index]!=arr[i]) { int temp=arr[index]; arr[index]=arr[i]; arr[i]=temp; } } } }
public class QuickSort { //对外开放调用的方法 public static <T extends Comparable<? super T>> void sort(T[] arr) { sort(arr, 0, arr.length - 1); } private static <T extends Comparable<? super T>> void sort(T[] arr, int left, int right) { if (left >= right) return; int p = partition(arr, left, right); sort(arr, left, p - 1); sort(arr, p + 1, right); } //核心方法 private static <T extends Comparable<? super T>> int partition(T[] arr, int left, int right) { T base = arr[left]; //从数组中选择的基准值 int j = left; for (int i = left + 1; i <= right; i++) { if (base.compareTo(arr[i]) > 0) { j++; swap(arr, j, i); } } swap(arr, left, j); return j; //返回一躺排序后基准值的下角标 } private static void swap(Object[] arr, int i, int j) { if (i != j) { Object temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } private static void printArr(Object[] arr) { for (Object o : arr) { System.out.print(o); System.out.print("\t"); } System.out.println(); } public static void main(String args[]) { Integer[] arr = {3, 5, 1, 7, 2, 9, 8, 0, 4, 6}; printArr(arr); //3 5 1 7 2 9 8 0 4 6 sort(arr); printArr(arr); //0 1 2 3 4 5 6 7 8 9 } }
要求:必须是顺序存储结构,必须按关键字有序排列。开发工具
1 public static int dichotomy (int find ,int[] arr){ //find 为数组中要查找的数 2 if(null == arr || arr.length < 0){ 3 return -1; 4 } 5 int minIndex = 0; 6 int maxIndex = arr.length - 1; 7 int middleIndex = (minIndex + maxIndex)/2; 8 while(minIndex <= maxIndex){ 9 if(find > arr[middleIndex]){ 10 minIndex = middleIndex + 1; 11 }else if(find < arr[middleIndex]){ 12 minIndex = middleIndex - 1; 13 }else{ 14 return middleIndex; 15 } 16 middleIndex = (minIndex + maxIndex)/2; 17 }
return -1; //目标未找到返回-1 18 }