黑马程序员——第四天(Java数组)
来源:互联网 发布:淘宝投诉 编辑:程序博客网 时间:2024/05/10 13:24
---------------------- android培训、java培训、期待与您交流! ----------------------
一.数组(静态初始化-常见问题)
1.int [] arr = new int[]{3,4,6,2,5};//创建一个数组实体,并给数组的每一个位置上都添加了具体的元素
2.int [] arr = {3,6,3,6,7};//
ArrayIndexOutofBoundsException 操作数组时,访问到了数组中不存在的角标
NullPointerException 空指针异常 当引用没有任何指向 值为空的情况 该引用还在用于操作实体导致的
二.数组(常见操作-遍历)
//定义功能:用于打印数组中的元素,元素间用逗号隔开public static void printArray(int[] arr){System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i != arr.length-1) {System.out.print(arr[i]+", ");}else {System.out.println(arr[i]+"]");}}}
三.数组(常见操作-获取最值)
//获取最大值public static int getMax(int[] arr){int max = arr[0];/*for (int i = 0; i < arr.length; i++) {max = (max>arr[i])?max:arr[i];}return max;*/for (int i : arr) {max = (max > i)? max : i ;}return max ;}//获取最小值public static int getMin(int[] arr){int min = 0;for (int i = 0; i < arr.length; i++) {if(arr[i]<arr[min]){min = i ;}}return arr[min];}
四.数组(排序-选择排序)
//选择排序public static void selectSort(int[] arr){for (int i = 0; i < arr.length-1; i++) {//外循环控制次数for (int j = i+1; j < arr.length; j++) {//内循环if(arr[i] > arr[j]){int temp = arr[i]; arr[i] = arr[j];arr[j] = temp;}}}}
五.数组(排序-冒泡排序)
//冒泡排序 //第一圈 最值出现了最后位public static void bubbleSort(int[] arr){for (int i = 0; i < arr.length-1; i++) {for (int j = 0; j < arr.length-i-1; j++) {//-i 让每一次比较的元素减少 ; -1 避免角标越界if (arr[j]>arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}Arrays.sort(arr);
六.数组(排序-位置置换功能抽取)
public static void awap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
七.数组(折半查找)
public static int halfSearch(int[] arr , int key){int min = 0 , max = arr.length - 1 , mid = (min + max)/2 ;while(key!=arr[mid]){if(key > arr[mid])min = mid + 1 ;else if(key < arr[mid])max = mid - 1;if(min > max)return-1;mid = (min+max)/2;}return mid ;}
public static int halfSearch_2(int[] arr , int key){int min = 0 , max = arr.length - 1 , mid /*= (min + max)/2*/ ;while(min <= max){mid = (min + max)/2 ;if(key > arr[mid]) min = mid + 1 ;else if (key < arr[mid]) max = mid - 1 ; else return mid;}return -1 ;}折半查找
可以提高效率
但是必须保证数组是有序的
八.数组(十进制-二进制)
进制转换
/*十进制 ---> 二进制*/public static void toBin(int num){StringBuilder sb = new StringBuilder();while(num > 0 ){sb.append(num%2);num /= 2 ; }System.out.println(sb.reverse());}九.数组(十进制-十六进制)
/*十进制 ---> 十六进制*/public static void toHex(int num){StringBuilder sb = new StringBuilder();for (int i = 0; i < 8; i++) {int temp = num & 15;if(temp > 9)//System.out.println((char)(temp-10+'A'));sb.append((char)(temp - 10 + 'A'));else//System.out.println(temp);sb.append(temp);num = num >>> 4;}System.out.println(sb.reverse());}
十.数组(查表法:十进制-十六进制)
/*查表法将所有的元素临时存储起来,都建立对应关系,每一次&15后的值作为索引去查建立好的表,就可以找到对应的元素这样比 -10+‘A’ 简单的多这个表怎么建立呢?可以通过数组的形式来定义十六进制中的元素0 1 2 3 4 5 6 7 8 9 A B C D E F0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15//角标 */public static void toHex_2(int num){char[] chs = {'0','1','2','3', '4','5','6','7', '8','9','A','B', 'C','D','E','F'};//定义一个临时容器。char[] arr = new char[8];//'\u0000'一个空位 相当于空格int pos = arr.length ;//定义指针 while(num !=0 ) {int temp = num&15;arr[--pos] = chs[temp];num = num >>> 4 ;}//遍历存储的arr数组for (int i = pos; i < arr.length ; i++) {System.out.print(arr[i]+",");}}
十一.数组(查表法:十进制-二进制)
public static void toBin(int num){//定义二进制的表char[] chs = {'0','1'};//定义一个临时存储容器char[] arr = new char[32];//定义一个操作数组的指针int pos = arr.length;while(num != 0){int temp = num & 1;arr[--pos] = chs[temp];num = num >>> 1;}for (int i = pos; i < arr.length; i++) {System.out.print(arr[i]);}}十二.数组(进制转换优化)
/*十进制--->二进制*/public static void toBin(int num ){trans(num, 1, 1);}/*十进制--->八进制 */public static void toBa(int num ){trans(num, 7, 3);}/*十进制--->十六进制 */public static void toHex(int num ){trans(num, 15, 4);}public static void trans(int num , int base,int offset){if(num == 0 ){System.out.println(0);return;} char[] chs = {'0','1','2','3', '4','5','6','7', '8','9','A','B', 'C','D','E','F'};char[] arr = new char[32];int pos = arr.length;while(num != 0 ){int temp = num & base;arr[--pos] = chs[temp];num = num >>> offset;}for (int i = pos; i < arr.length; i++) {System.out.print(arr[i]);}}
十三.数组(二维数组)
数组中的数组
把数组作为元素存到了另一个数组当中 这个数组叫做 二维数组
int[][] arr = new int [3][4];//3是二维数组的长度 4是二维数组中 每一个一维数组的长度
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有四个元素
int[][] arr = new int[3][];
数组是引用数据类型 初始化值为null
//获取二维数组里所有元素的和int sum = 0;for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {sum += arr[i][j];}}System.out.println(sum);}---------------------- android培训、java培训、期待与您交流! ----------------------
- 黑马程序员——第四天(Java数组)
- 黑马程序员——>第四天<数组>
- 黑马程序员——java第四天:基础语法(函数、数组)
- 【黑马程序员】-Java基础语法(数组) 第四天
- 黑马程序员-第四天(数组)
- 黑马程序员java学习第四天,数组以及排序算法
- 黑马程序员--Java基础学习(数组)第四天
- 黑马程序员——Java(数组)
- 黑马程序员—Java数组
- 黑马程序员——从零开始学java程序(第四天)
- 黑马程序员--JAVA学习笔记第四天
- 黑马程序员——JAVA数组
- 黑马程序员Java笔记——数组
- 黑马程序员——JAVA 数组
- 黑马程序员——Java数组
- 黑马程序员——Java函数、数组
- 黑马程序员——Java之数组
- 黑马程序员——java---数组
- php的62进制转换代码
- #Java#Porject总结
- HTML input在火狐chrome和ie的差异
- Linux 下的文件操作
- 《Java程序员生存手册 为自己赢得一份IT名企职位》 - 书摘精要
- 黑马程序员——第四天(Java数组)
- 分享25个很棒的网页设计教程和资源网站
- 34个漂亮的应用程序后台管理系统界面(系列二)
- 132.Even reckoning makes long friends. 亲兄弟,明算帐
- 22个带给你灵感的网页联系表单设计案例
- 25个带单个输入框和提交按钮的表单设计案例
- 注册码
- 分享20个优秀的网页表单设计案例
- 60款很酷的 jQuery 幻灯片演示和下载