第六天-2017-05-08
来源:互联网 发布:淘宝潮男秋装 编辑:程序博客网 时间:2024/06/07 21:34
第六天
今日内容:数组
数组的定义
数组是一组数的组合,数组其实一种引用数据类型,数组里面必须存放的是相同的数据类型——数组是存放一组相同数据类型的一个组合。
- 数组是引用数据类型。
- 数组里面存放的数据必须是同一类型。
如何定义数组
静态初始化
方式一:
数据类型 [ ] 变量名 = {对应的数据类型的值1,对应的数据类型的值1,对应的数据类型的值1,......}
例如:
int[] arr = {1,2,3,4,5,6,7,8,9};
方式二:
数据类型 [ ] 变量名= new 数据类型[]{对应的数据类型的值1,对应的数据类型的值1,对应的数据类型的值1,....};
例如:
int[] arr = new int[]{3,5,7,9,1,13};
动态初始化
所谓的动态初始化 其实是首先先声明数组的长度,之后分别给数组进行赋值。
例如:
String[] arr = new String[3];
总结:
对于动态初始化如果声明不同的数据类型的数字 数组里面会有对应类型的默认值。默认初始化值:
- int byte short long——0
- char——‘\u0000’
- boolean——false
- float double——0.0
- String——null
数组的使用
变量名[index] 其中index为数组对应的下标。
如何去取出数组中最后一个值 通过变量名[变量名.length - 1] 来获取 ,注意 数组最后一位的索引是变量名.length– 1 否则会报出异常(ArrayIndexOfBoundsException)。
数组的排序
冒泡排序
原理:比较两个相邻的元素,将直达的元素交换至右端。
class Demo6{public static void main(String[] args) {int[] arr = {34,12,45,87,1,44};for(int i = 0;i < arr.length-1;i++)//控制轮数{for(int j = 0;j< arr.length -i-1;j++)//控制比较的数{if(arr[j] > arr[j+1]){arr[j] = arr[j] ^ arr[j+1];arr[j+1] = arr[j] ^ arr[j+1];arr[j] = arr[j] ^ arr[j+1];}}}Demo5.printArr(arr);}}(Demo5见最后)
选择排序
原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕
class Demo7{public static void main(String[] args) {int[] arr = {34,12,45,87,1,44};for(int i = 0;i < arr.length-1;i++){for(int j = i + 1;j < arr.length;j++ ){if(arr[i] > arr[j]){arr[i] = arr[i] ^ arr[j];arr[j] = arr[i] ^ arr[j];arr[i] = arr[i] ^ arr[j];}}}Demo5.printArr(arr);}}(Demo5见最后)
插入排序
原理:从数组的第一个元素a[0]开始,将其后一个元素a[1]插入到a[0]的前面或者后面,接着继续这一过程。每次都是将a[i]插入到已经排序好的a[0]~a[i-1]中合适的位置。
class Demo8{public static void main(String[] args){int[] arr = {34,12,45,87,1,44};for(int i = 1 ; i < arr.length ; i++)//控制轮次 从脚标1开始{for(int j = i ; j > 0 ; j--)//脚标j = i =1开始与前一个开始比较,第一轮1与0,第二轮2与1,然后1与0(都是脚标){if(arr[j] < arr[j-1]){arr[j] = arr[j] ^ arr[j-1];arr[j-1] = arr[j] ^ arr[j-1];arr[j] = arr[j] ^ arr[j-1];}}}Demo5.printArr(arr);}}
自己补充
Demo5
/*int arr[] = {3,4,45,65,6}变为{3,4,65,6,0}*/class Demo5{public static void main(String[] args) {int arr[] = {3,4,45,65,6};for(int i = 0;i < arr.length;i++){if(i != arr.length -1){arr[i] = arr[i+1];}}arr[arr.length-1] =0;printArr(arr);}public static void printArr(int[] x)//数组的遍历{System.out.print("[ ");q:for(int i = 0;i <x.length;i++){if(i == x.length-1){System.out.println(x[i] + " ]");break q;}System.out.print(x[i]+" , ");}}}
- main的参数列表必须是String[ ];
- JVM寻找main函数,但是为什么其他以main为方法名,定义int[ ] a的参数列表并不报错?
因为主方法的参数列表必须是String[],如果不是JVM不将它视为主函数的入口,只视为是函数(方法)的重载。
- 数组长度方法:
int [] arr = new int[3];int len = arr.length;
- 字符串的长度方法:
String str = "abcdefg";int len = str.length();
0 0
- 第六天-2017-05-08
- 2017/7/29 第六天
- 2017暑假集训第六天
- 第六天
- 第六天
- 第六天
- 第六天
- 第六天
- 第六天
- 第六天
- 第六天
- 第六天
- 第六天
- 第六天
- 2017-10-16总结第六天
- 2017/12/13 第六天培训
- 第四天--第六天
- 第六章 05_String_5
- 自己写的一个内存修改库CheatLibrary
- 服务优化之一(初始化数据压缩存储优化)
- 规则表达式文法
- Web AppBuilder for ArcGIS(开发版)系列教程 2
- Nginx详细安装部署教程(转)
- 第六天-2017-05-08
- jsp 乱码问题
- Oracle 11g ORA-12560错误
- 多食大蒜洋葱防感冒
- HDU 1698Just a Hook(线段树 + Lazy Tag(延迟更新))
- 数据压缩 DPCM编码
- 配置MyEclipse中Dynamic Web Module 3.0版本时报错
- MIT18.06课程笔记16:最小二乘法,线性回归
- 【基于SSH框架的个人博客系统06】头像文件上传与前后端分页机制