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" ...
随机推荐
- 记录java中常用的英文单词01
专业缩写 POJO(plain ordinary java object)--简单的java对象 Spring-jdbc--为了使JDBC更加易于使用,spring在JDBC API上定义了一个抽象层 ...
- 内网代理工具--EarthWorm
一.简介 EarthWorm是内网穿透的神器,拥有三项功能正向代理,反向代理,端口转发. 为实现这些功能,EarthWorm建立了六大功能模块.分别是ssocksd , rcsocks , rssoc ...
- Cobalt Strike之LINK木马
在同一目录下 新建一个exp.ps1 一个test.txt exp.ps1代码 $file = Get-Content "test.txt" $WshShell = New-Obj ...
- JavaScript 函数 (一 JavaScript 函数的声明与使用)
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. JavaScript 函数的声明与使用 实例 <!DOCTYPE html> <html> <head> ...
- MYSQL5.7详细安装步骤
0.更换yum源 1.打开 mirrors.aliyun.com,选择centos的系统,点击帮助 2.执行命令:yum install wget -y 3.改变某些文件的名称 mv /etc/yum ...
- 多线程笔记(学习尚硅谷java基础教程)
一.基本概念: 程序: 是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程: 是程序的一次执行过程,或是正在运行的一个程序.是一个动态的过程:有它自身的产生.存在和 ...
- 从字符串某位置开始的递增串(dfs)注意for循环中下标的错误
#include <iostream> #include <string> using namespace std; char res[50];int tag=1; void ...
- 使用IDEA开发SpringBoot不加载application.yml配置文件的解决方案
1.如果启动项目不加载application.yml配置文件,那么请确认下是否应用了Resources为项目资源文件夹 2.如果项目起初是可以正常使用的,突然不知道改了什么,然后进行启动项目的时候不加 ...
- 什么是 MyBatis 的接口绑定?有哪些实现方式?
接口绑定,就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑 定, 我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可 以有更加灵活的选择和 ...
- zookeeper 的应用
不建议使用(单独)zookeeper 做分布式队列,有几点原因,以下原因摘抄于curator的官网: 1.zookeeper有1MB的传输限制.而在队列中,拥有很多的数据节点,通常包括数千个,如果有较 ...