java从零到项目实践(五)
2022/1/15 22:04:08
本文主要是介绍java从零到项目实践(五),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Day 4(数组)
到此为止,java基础语法部分全部结束,为坚持到这的自己加个油!
文章目录
- Day 4(数组)
- java数组
- 数组概述
- 数组声明创建
- 三种初始化及内存分析
- 数组边界
- 数组使用
- 多维数组
- Arrays类
- 拓展:冒泡排序
- 稀疏数组
java数组
数组概述
要点:相同类型数据、按一定先后次序、下标从0开始(下标为0对应第一个元素)
数组声明创建
示例代码:
public class creatDemo01 { public static void main(String[] args) { //创建数组: 变量类型 + 变量名 = 变量值 int[] x; //声明一个int类型的数组x x = new int[5]; //用new分配一个大小为10的空间给x,这里才是实际创建数组x //声明数组也可采用c/c++的方式 //int y[]; //创建数组也可一步到位: int[] y = new int[10]; //定义数组中的元素 x[0] = 1; x[1] = 2; x[2] = 3; x[3] = 4; x[4] = 5; //计算总和 int sum = 0; for (int i = 0; i < x.length; i++) {//length属性获取数组长度 sum = sum + x[i]; //显示数组元素 //System.out.println("x[" + i + "]: " + x[i]); } System.out.println(sum); } }
三种初始化及内存分析
声明创建时的内存管理:
三种初始化:
示例代码:
public class arrayDemo02 { public static void main(String[] args) { //静态初始化: 创建+赋值 int[] a = {1,2,3,4,5}; System.out.println(a[0]); System.out.println("======================"); //动态初始化: 包含了默认初始化(即所有数据在未赋值前均以默认值为初始值),例如这里除了b[0]和b[1]外,所有数组元素全为0 int[] b = new int[5]; b[0] = 12; b[1] = 3; for (int i=0; i<b.length; i++){ System.out.println(b[i]); } } }
数组边界
数组使用
示例代码:
public class arrayDemo03 { public static void main(String[] args) { int[] a = {1,2,3,4,5}; //普通for循环使用 for (int i = 0; i < a.length; i++) { System.out.println("普通for循环打印:" + a[i]); } System.out.println("==================="); //for-each增强for循环,只适用于遍历打印数组元素,无下标操作JDK1.5 for (int i : a) { System.out.println("for-each打印: " + i); } System.out.println("==================="); Array(a); System.out.println("===================="); int[] P = pArray(a); Array(P); } //数组作为方法入参 public static void Array(int[] a) { for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } //数组作为返回值 //数组翻转 public static int[] pArray(int[] a) { int[] value = new int[a.length]; //翻转的操作 for (int i=0,j=a.length-1; i<a.length; i++, j--){ value[i] = a[j]; } return value; } }
多维数组
多维数组实质是数组的嵌套,即数组的每个元素仍然为一个数组
示例代码:
public class arrayDemo04 { public static void main(String[] args) { //二维数组 /* 1,2 a[0] 2,3 a[1] 3,4 a[2] 4,5 a[3] */ int[][] a = {{1,2},{2,3},{3,4},{4,5}};//两个[]表示二维数组 Array(a[0]); System.out.println("========"); //遍历数组中的所有元素 for (int i=0; i<a.length; i++){ for (int j=0; j<a[i].length; j++){ System.out.print(a[i][j]); } } } //打印数组中的元素 public static void Array(int[] a) { for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } }
Arrays类
拓展:冒泡排序
示例代码:
import java.util.Arrays; public class maopaoDemo05 { public static void main(String[] args) { int[] a = {1,3,2,2,4,5,4,33,1,546,12,343,3}; int[] b = array(a); //打印数组元素时,不能直接打印,要么通过自己写方法遍历出来,要么用Arrays类提供的Arrays.toString(参数) //System.out.println(b);//[I@135fbaa4, System.out.println(Arrays.toString(b)); } //冒泡法: /* 1.比较数组中两个相邻的元素,如果第一个数比第二个数大(或小),就交换位置 2.每一次比较都会产生一个最大或最小的数字 3.下一轮排序次数依次减少 4.依次循环,直到结束 */ public static int[] array(int[] a) { int temp = 0; //用来实现数据交换的媒介 for (int i=0; i<a.length-1; i++){ for (int j=0; j<a.length-1-i; j++){ if (a[j+1]<a[j]){ temp = a[j+1]; a[j+1] = a[j]; a[j] = temp; } } } return a; } }
稀疏数组
稀疏数组主要解决的问题是,当前数组中存储了大量无意义的0元素时,采用该方法进行有效的压缩操作。
以上表格为例:
【0】行表示,该数组共有6行、7列、8个有效数字
【1】行表示,第一个有效数字为22,在第0行、3列
【2】行表示,第二个有效数字为15,在第0行、6列
……
示例代码:
public class arrayDemo06 { public static void main(String[] args) { //需求:编写一个矩阵,将其转化为稀疏矩阵并实现还原 int[][] a1 = new int[10][10]; a1[1][2] = 1; a1[2][3] = 2; //输出原始的数组 System.out.println("原始数组:"); array(a1); //调用方法array输出数组 //转换为稀疏数组保存 //1.获取有效值的个数 int sum = 0; for (int i=0; i<a1.length; i++){ for (int j=0; j<a1.length; j++){ if (a1[i][j]!=0){ sum++; } } } System.out.println("==============="); System.out.println("有效个数为:" + sum); //2.声明创建一个稀疏数组 //行数:有效个数+1; 列数:3 int[][] a2 = new int[sum+1][3]; //3.根据系数矩阵特点赋值 //稀疏数组第一行:存储的是原数组整体信息 a2[0][0] = a1.length; //a1的行数 a2[0][1] = a1.length; //a1的列数 a2[0][2] = sum; //有效数据个数 //稀疏数组第二行开始:每行依次存储第i个有效数字以及所在的行列信息 int count = 0;//记录有效数字出现次数,对应记录在稀疏数组的相应行上 //找到有效数字所在位置 for (int i=0; i<a1.length; i++){ for (int j=0; j<a1.length; j++){ if (a1[i][j]!=0){ count++; a2[count][0] = i; a2[count][1] = j; a2[count][2] = a1[i][j]; } } } System.out.println("输出稀疏数组:"); array(a2);//调用方法array输出数组 System.out.println("================="); //将稀疏数组还原为原始数组 //1.声明创建一个原始数组 //稀疏数组[0][0]和[0][1]元素即为原数组的行列数 int[][] a3 = new int[(a2[0][0])][(a2[0][1])]; for (int i=1; i<a2.length; i++){ a3[(a2[i][0])][(a2[i][1])] = a2[i][2]; } array(a3); } //输出数组元素 public static void array(int[][] a){ for (int i=0; i<a.length; i++){ for (int j=0; j<a.length; j++){ System.out.print(a[i][j] + "\t"); } System.out.println(); } } }
这篇关于java从零到项目实践(五)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide