Java学习第四天:数组
来源:互联网 发布:虚拟机安装mac 编辑:程序博客网 时间:2024/06/14 03:29
UNTIL4
1)数组概念
2)静态初始化和常见问题
3)常见的操作-遍历
4)获取数组中的最值
5)数组的排序和练习
6)折半查找
7)进制之间的练习
8)查表法进行练习
9)二维数组和练习
一、数组概念
数组的概念:数组相同于是同一类型的容器!
内存的分配以及特点:方便操作数据和角标是从0开始的
创建数组时的内存结构:
小解:
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;}}
五、数组的排序和练习
选择排序:
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();}}
冒泡排序:
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
空指针异常
- Java学习第四天:数组
- JAVA学习第四课(数组)
- JAVA学习第四课(数组)
- JAVA基础第四天学习日记_数组
- 黑马程序员java学习第四天,数组以及排序算法
- 黑马程序员--Java基础学习(数组)第四天
- java 学习 第四天 核心类(数组)
- java数组_第四天
- JAVASE学习笔记:第四章 JAVA数组
- java学习第四天
- 学习Java第四天
- Java学习第四天
- java学习第四天
- JAVA 学习第四天
- Java学习第四天
- JAVA学习第四天
- JAVA学习第四天
- java学习第四天
- 可复用的顺序表
- 【平台】如何手工添加模型(模型层)
- 谷歌眼镜设计规范之菜单
- 谷歌眼镜设计规范之沉浸式
- 谷歌眼镜设计规范之度量和网格
- Java学习第四天:数组
- 【北美找实习找工作】如何有效使用Linkedin(精华帖)
- 谷歌眼镜设计规范之体验模式
- 谷歌眼镜设计规范之书写
- linux下导入、导出mysql数据库命令(被人未验证)
- android:shape 图形处理
- 谷歌眼镜设计规范之排版
- python 库安装,安装 numpy matplotlib opencv wxpython PIL(linux环境下)
- 赋值语句的执行顺序