Java数组-2022年4月17日
数组
数组Array
ArrayList概念:一个连续的空间,存储多个相同数据类型的值
特点:
1. 类型相同
2. 长度固定
数组的创建
数组类型[] 数组名 = new 数组类型[数组长度];
//长度大小决定了你数组存储的大小
数组的声明和赋值:
| 数组的声明方式 | 具体声明赋值方法 |
| 先声明、分配空间 | 数据类型[] 数组名; 数组名 = new 数组类型[长度]; |
| 声明并分配空间 | 数据类型[] 数组名 = new 数据类型[长度]; |
| 声明并赋值{复杂版本} | 数据类型[] 数组名 = new 数据类型[]{value1,value2,....} |
| 声明并赋值(简单版本) | 数据类型 数组名[] = {value1,value2,.....} |
注意:数组的下标是从0开始计数的
数组的常见异常
数组的使用: 创建数组,依次赋值,依次取值
有效下标范围: 0~(数组长度-1)
常见的数组异常就是数组下标越界:
报错: java.lang.ArrayIndexOutOfBoundsException: n ====>>此处的N表示的是你所访问的超出数组下标的无效下标
数组的遍历
- 就是从头到尾对数组每一个元素的访问
可以通过下标依次进行访问,也可以通过循环来获取每个下标对应的数组中的值
//通过下标依次获取(for循环)
public void Test(){
int i[] = {1,2,3,5,6,7,8};
for (int i = 0; i<i.length;i++){
System.out.println(i[i]);
}
}
数组的扩容
扩容的思路:
1. 创建大于原数组长度的新数组;
2. 将数组中的元素依次赋值给新的数组中
赋值的方式:
循环遍历依次赋值(for);
System.arraycopy(原数组,原始数组起始,新数组,新数组长度,长度);
java.util.Array.copyOf(原数组,新长度); //返回带有原值的新数组
数组类型的返回值
创建新数组,长度为原数组的两倍,新数组中保持原有数据,返回新数组
public static void main(String args[]){
int[] oa = {111,222,333,444,555,666};//0x0000A111
int[] na = expand(oa);
for (int i = 0;i<na.length;i++){
System.out.println(na[i]);
}
}//主函数
public static int[] expand(int[] oldArray){
int[] newArray = new int[oldArray.length*2];
for (int i = 0;i < oldArray.length;i++){
newArray[i] = oldArray[i];
}
return newArray;
}//数组扩容
可变长数组
public static void printArray(int... Array){
for (int i=0;i<Array.length;i++){
System.out.println(Array[i]);
}
}//可变长数组
排序算法
public static void bubbleSort(int[] array){
//相邻的两个数值比较大小,互换位置
System.out.println("bubbleSortTest=========");
System.out.println(Arrays.toString(array));
for (int i=0;i<array.length-1;i++){
for (int j=0;j<array.length-1-i;j++){
int temp = 0;
if (array[j]>array[j+1]) {
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
forArray(array);
}//冒泡排序
public static void selectionSort(int[] array){
//固定值与其他值依次比较大小,互换位置
System.out.println("selectionSortTest========");
System.out.println("原始数据值:"+Arrays.toString(array));//转换成字符串输出
for (int j = 0;j<array.length;j++){//需要经过N次对比
int min_index = j;//假定这是最小值的下标
for (int i=j+1;i<array.length;i++){//每轮需要对比的个数
if (array[i]<array[min_index]){//比较前面确定的最小值和后面值的大小,如果后买的值值比面的值小就将下标进行替换
min_index=i;//把最小的下标转换过去
}
}
if (j != min_index){//比较两个下标是否一样,一样的话就直接跳过
int tmp = array[j];//将原始值赋值给tmp
array[j] = array[min_index];//将最小值赋值给array[i]
array[min_index] = tmp;//将最小值替换给tmp
}
}
System.out.println("原始数据值:"+Arrays.toString(array));
forArray(array);
}//选择排序
public static void jdkSort(int[] array){
//调用Java函数进行排序(java.util.Array.sort(数组名);===>默认升序)
Arrays.sort(array);
forArray(array);
}//JDK排序
二维数组
概念:二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。
public static void PrintAr2(){
int[][] array;
array = new int[][]{{1,2,3,4},{4,3,2,1}};
// System.out.println(Arrays.toString(array[0]));//输出数组的内容
// System.out.println(array[1][1]);//访问通过数组的下标进行访问{}==》代表的就是一个维度,合数组访问类似
//遍历二位数组
for (int i=0;i<array.length;i++){for (int j=0;j<array[i].length;j++){
System.out.println(array[i][j]);
}}
}//二维数组创建和遍历
测试代码
public class demo_3 {
public static void main(String args[]){
int[] oa = {222,111,333,555,444,666};//0x0000A111
int[] na = expand(oa);
// for (int i = 0;i<na.length;i++){
// System.out.println(na[i]);
// }
// printArray(oa);
// bubbleSort(oa);
//
selectionSort(oa);
PrintAr2();
}//主函数
public static int[] expand(int[] oldArray){
int[] newArray = new int[oldArray.length*2];
for (int i = 0;i < oldArray.length;i++){
newArray[i] = oldArray[i];
}
return newArray;
}//数组扩容
public static void printArray(int... Array){
for (int i=0;i<Array.length;i++){
System.out.println(Array[i]);
}
}//可变长数组
public static void forArray(int[] array){
for (int i = 0; i < array.length; i++) {
System.out.println("Count is:" + array[i]);
}
}//遍历数组
public static void bubbleSort(int[] array){
//相邻的两个数值比较大小,互换位置
System.out.println("bubbleSortTest=========");
System.out.println(Arrays.toString(array));
for (int i=0;i<array.length-1;i++){
for (int j=0;j<array.length-1-i;j++){
int temp = 0;
if (array[j]>array[j+1]) {
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(array));
forArray(array);
}//冒泡排序
public static void selectionSort(int[] array){
//固定值与其他值依次比较大小,互换位置
System.out.println("selectionSortTest========");
System.out.println("原始数据值:"+Arrays.toString(array));//转换成字符串输出
for (int j = 0;j<array.length;j++){//需要经过N次对比
int min_index = j;//假定这是最小值的下标
// System.out.println(min_index);
for (int i=j+1;i<array.length;i++){//每轮需要对比的个数
if (array[i]<array[min_index]){//比较前面确定的最小值和后面值的大小,如果后买的值值比面的值小就将下标进行替换
min_index=i;//把最小的下标转换过去
}
}
if (j != min_index){//比较两个下标是否一样,一样的话就直接跳过
int tmp = array[j];//将原始值赋值给tmp
array[j] = array[min_index];//将最小值赋值给array[i]
array[min_index] = tmp;//将最小值替换给tmp
}
}
System.out.println("原始数据值:"+Arrays.toString(array));
forArray(array);
}//选择排序
public static void jdkSort(int[] array){
//调用Java函数进行排序(java.util.Array.sort(数组名);===>默认升序)
Arrays.sort(array);
forArray(array);
}//JDK排序
public static void PrintAr2(){
int[][] array;
array = new int[][]{{1,2,3,4},{4,3,2,1}};
// System.out.println(Arrays.toString(array[0]));//输出数组的内容
// System.out.println(array[1][1]);//访问通过数组的下标进行访问{}==》代表的就是一个维度,合数组访问类似
/** 遍历二位数组*/
for (int i=0;i<array.length;i++){for (int j=0;j<array[i].length;j++){
System.out.println(array[i][j]);
}}
}//二维数组创建和遍历
}
Java数组-2022年4月17日的更多相关文章
- java课堂实践(5月17日)20155317 王新玮
对P145 MathTool.java 代码托管 在IDEA中,使用JUnit进行单元测试,测试用例不少于三个,要包含正常情况,边界情况.提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. ...
- Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容
2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...
- 2016年12月17日 星期六 --出埃及记 Exodus 21:12
2016年12月17日 星期六 --出埃及记 Exodus 21:12 "Anyone who strikes a man and kills him shall surely be put ...
- 2015年8月17日,杨学明老师《产业互联网化下的研发模式转型》在中国科学院下属机构CNNIC成功举办!
2015年8月17日,杨学明老师为中国网络新闻办公室直属央企中国互联网络中心(CNNIC)提供了一天的<产业互联网化下的研发模式转型>内训课程.杨学明老师分别从产业互联网化的问题与挑战.传 ...
- 8月17日 Power-BI关于全国房地产开发投资情况分析 QQ群视频交流开课啦
<ignore_js_op> 数读|中国的经济只剩下房地产了么? 引言: 近日一则标题为“房奴们又立功啦,7月份新增贷款几乎都来自房贷!”的报道吸引了大众的目光.该报道指出在央行8月13日 ...
- 2016年11月17日 星期四 --出埃及记 Exodus 20:8
2016年11月17日 星期四 --出埃及记 Exodus 20:8 "Remember the Sabbath day by keeping it holy.当记念安息日,守为圣日.
- 2016年10月17日 星期一 --出埃及记 Exodus 19:1
2016年10月17日 星期一 --出埃及记 Exodus 19:1 In the third month after the Israelites left Egypt--on the very d ...
- 西安Uber优步司机奖励政策(1月11日~1月17日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Java Calendar获取年、月、日、时间
Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00" ...
随机推荐
- python 命令行参数学习(一)
用了这么久,还没怎么学习python的命令行参数,是在惭愧. 参考文章地址:http://www.cnblogs.com/jianboqi/archive/2013/01/10/2854726.htm ...
- UNIX网络编程--学习日记
今天在学习accept函数的时候,在执行服务器程序的时候,碰到了如下的出错信息: bind error: Address already in use 其原因在于服务器程序使用了13号的端口; 然而在 ...
- 面试官:知道ThreadLocal嘛?谈谈你对它的理解?(基于jdk1.8)
https://zhuanlan.zhihu.com/p/99150038 西北工业大学 计算机技术硕士在读 在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,提问的 ...
- Java Output流写入包装问题
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); OutputStreamWriter output ...
- 客户端回调 Watcher ?
客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher. 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了.
- MyBatis 实现一对多有几种方式,怎么操作的?
有联合查询和嵌套查询.联合查询是几个表联合查询,只查询一次,通过在 resultMap 里面的 collection 节点配置一对多的类就可以完成:嵌套查询是先查 一个表,根据这个表里面的 结果的外键 ...
- Java 中 LinkedHashMap 和 PriorityQueue 的区别是 什么?
PriorityQueue 保证最高或者最低优先级的的元素总是在队列头部,但是 LinkedHashMap 维持的顺序是元素插入的顺序.当遍历一个 PriorityQueue 时,没有任何顺序保证,但 ...
- 滑动窗口法——Leetcode例题
滑动窗口法--Leetcode例题(连更未完结) 1. 方法简介 滑动窗口法可以理解为一种特殊的双指针法,通常用来解决数组和字符串连续几个元素满足特殊性质问题(对于字符串来说就是子串).滑动窗口法的显 ...
- vulnhub靶机Tr0ll:1渗透笔记
Tr0ll:1渗透笔记 靶场下载地址:https://www.vulnhub.com/entry/tr0ll-1,100/ kali ip:192.168.20.128 靶机和kali位于同一网段 信 ...
- stm32 中库函数、结构体、地址的强制类型转换、相应特殊功能寄存器之间的关系
以一个挂接在APB2上的外设函数使能为例 A : RCC_APB2PeriphClockCmd():时钟使能函数 1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFI ...