Java学习第四天:数组

来源:互联网 发布:虚拟机安装mac 编辑:程序博客网 时间:2024/06/14 03:29
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

UNTIL4

1)数组概念

2)静态初始化和常见问题

3)常见的操作-遍历

4)获取数组中的最值

5)数组的排序和练习

6)折半查找

7)进制之间的练习

8)查表法进行练习

9)二维数组和练习

 

一、数组概念

数组的概念:数组相同于是同一类型的容器!

内存的分配以及特点:方便操作数据和角标是从0开始的

创建数组时的内存结构:

 黑马程序员_JAVA语言基础 数组 - dqg522 - dqg522的博客

小解:

1、  内存结构:java程序在运行时,会在内存中开辟出五个内存区间,分别是:栈内存、堆内存、方法区、本地方法区、寄存器。

 2、  栈内存:用于存储局部变量,当数据作用域代码执行完,所占空间会自动释放。

 3、  堆内存:通过关键字new创建的实体都放在堆内存中,每一个实体都有内存地址值,实体中的变量都有默认初始化值。

实体不再被使用,会在不确定的时间内被垃圾回收器回收。

二、静态初始化和常见问题

数组的初始化:1 int arr[] = new int[2];

2、int[] arr = new int[]{1,2,3,4};

3、Int[] arr = {1,2,3,4};

注意数组的角标越界异常和空指针异常!

如果直接在控制台输出数组:[I@.......

三、常见的操作-遍历

数组的遍历用到for循环。

public class example_arr {public static void main(String[] args) {// 数组的遍历用到for循环int[] arr = {10,29,2,2,2,3,4,5,};for(int x = 0;x<arr.length;x++){if(x==arr.length-1)System.out.print(arr[x]);elseSystem.out.print(arr[x]+",");} } } 


四、获取数组中的最值

 public class getArray { public static void main(String[] args) {int[] arr = {1,2,3,4,5,6,7,9,0,100};int max = getMax(arr);System.out.println(max);int min = getMin(arr);System.out.println(min); }//获取数组中的最大值public static int getMax(int[] arr){int max = 0;for(int x = 0;x<arr.length;x++){if(arr[x]>max){max = arr[x];}}return max;}//获取数组中的最小值public static int getMin(int[] arr){int min = 0;for(int x = 0;x<arr.length-1;x++){if(arr[x]<min){min = arr[x];}}return min;}} 


五、数组的排序和练习

选择排序:

黑马程序员_JAVA语言基础 数组 - dqg522 - dqg522的博客

public class ss { public static void main(String[] args) {int[] arr = {9,2,4,6,8,0,1};prin(arr);selectSort(arr);prin(arr);}//选择排序 一个值去和剩下元素进行比较  得出最值再进行第二次比较!耗费资源public static void selectSort(int[] arr){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;}System.out.println(arr[x]);}}}public static void prin(int[] arr){for(int x = 0;x<arr.length;x++){if(x==arr.length-1)System.out.print(arr[x]);elseSystem.out.print(arr[x]+",");}System.out.println();}}


冒泡排序:

黑马程序员_JAVA语言基础 数组 - dqg522 - dqg522的博客

public class bubblesort { public static void main(String[] args) {// 冒泡排序是相邻元素之间进行比较 条件符合的进行换位//而且比较的次数是总元素-1次!int[] arr = {9,2,4,6,8,0,1};prin(arr);bubbles(arr);prin(arr);}public static void bubbles(int[] arr){for(int x = 1;x<arr.length;x++){for(int y = 0;y<arr.length-x;y++){if(arr[y]>arr[y+1]){int temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}}public static void prin(int[] arr){for(int x = 0;x<arr.length;x++){if(x==arr.length-1)System.out.print(arr[x]);elseSystem.out.print(arr[x]+",");}System.out.println();}}


位置置换:

其实就是提取置换的那几行代码!

Public static void swap(int[] arr,int x,int y){int temp = arr[x];arr[x] = arr[y];arr[y] = arr[x];}


六、折半查找(前提!数组是有序数组)

public class halfSearch { public static void main(String[] args) {//折半查找int[] arr = {9,2,4,6,8,0,1};System.out.println(half(arr,2));}public static int half(int[] arr,int key){int max,min,mid;min = 0;max = arr.length-1;mid = (max+min)/2;while(arr[mid]!=key){if(arr[mid]>key)max = mid-1;else if(arr[mid]<key)min = mid+1;if(min>max)return -1;mid = (max+min)/2;}return mid;} }


七、进制之间的练习

public class switchTool { public static void main(String[] args) {// TODO Auto-generated method stubtoBin(6);toHex(60);}//十进制转换成二进制public static void toBin(int x){StringBuffer sb = new StringBuffer();while(x>0){sb.append(x%2);x = x/2;}System.out.println(sb.reverse());}//十进制转换成八进制//public static void to//十进制转换成十六进制public static void toHex(int num){String[] arr = {"","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};/*StringBuffer sb = new StringBuffer();for(int x = 0;x<8;x++){int temp = num & 15;if(temp!=0){if(temp>9)sb.append(arr[temp-10]);elsesb.append(temp);}num=num>>4;}System.out.println(sb.reverse());*/String[] s= new String[8];int pos = 0;while(num!=0){int temp = num & 15;s[pos++] = arr[temp];num = num>>>4;}for(int x = pos-1;x>=0;x--){System.out.print(s[x]);}}} 


九、二维数组和练习

二维数组格式:

1、int[][] arr = new int[3][3]

2、Int[][] arr = new int[3][]

或者呢!Int[][] arr = {{},{},{}};

涉及的异常: 

ArrayIndexOutOfBoundsException

数组角标越界异常

NullPointerException

空指针异常

 


---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
0 0
原创粉丝点击