首页 / JAVA / java自学随笔3.10
java自学随笔3.10
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java自学随笔3.10,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5287字,纯文字阅读大概需要8分钟。
内容图文
![java自学随笔3.10](/upload/InfoBanner/zyjiaocheng/600/bbf98959496b410794aa670fd55d2636.jpg)
一. 什么是数组
1.1 数组的定义
- 数组是相同类型数据的有序集合
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
- 每一个数据称作为一个数组元素,每一个数组元素都可以通过下标来访问他们
二. 数组的声明和创建
2.1 数组的声明
package com.liu.array;
public class Demo01 {
public static void main(String[] args) {
// 变量类型[] 变量名 = new 变量类型[数量];
int[] nums = new int[10];
nums[0] = 12;
nums[1] = 112;
nums[2] = 122;
nums[3] = 132;
nums[4] = 11;
nums[5] = 1312;
nums[6] = 1142;
nums[7] = 1223;
nums[8] = 1112;
nums[9] = 162;
System.out.println(nums[8]);
}
}
三. 三种初始化及内存分析
3.1 内存分析
3.2 初始化
package com.liu.array;
public class Demo02 {
public static void main(String[] args) {
// 静态初始化: 创建 + 赋值
int[] a = {1,2,3,4,5,6,7,8};
System.out.println(a[4]);
// 动态初始化: 包含默认初始化
int[] b = new int[10];
b[0] = 1;
b[1] = 1;
// 默认初始化,没有赋值的会拥有默认值
System.out.println(b[1]);
System.out.println(b[2]);
System.out.println(b[3]);
}
}
四. 下标越界及小结
4.1 数组的四个基本特点
1. 其长度是确定的,数组一旦被创建,他的大小就是不可改变的
2. 其元素必须是相同类型,不允许出现混合类型
3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型
4. 数组的变量属引用类型,数组也可以看做对象,每一个元素都相当于该对象的成员变量,数组本身就是对象,Java中对象实在堆中的因此数组无论保存原始类型,还是其他对象类型,数组对象本身就是在堆中的
4.2 下标越界
1. 下标合法区间[0- length-1]
2. 下标越界会报错 ArrayIndexOutBoundsException 数组下标越界异常
五. 数组的使用
5.1 数组遍历方式
package com.liu.array;
public class Demo03 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("==============");
// 计算所有元素的和
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println(sum);
// 获取最大值
int max = arr[0];
for (int x: arr) {
if (x > max) {
max = x;
}
}
System.out.println(max);
System.out.println("========================");
printArr(arr);
System.out.println("========================");
int[] arr1 = reverse(arr);
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]);
}
}
// 打印数组
public static void printArr(int[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
// 翻转数组
public static int[] reverse(int[] args) {
int[] result = new int[args.length];
for (int i = 0, j=result.length-1; i < result.length; i++,j--) {
result[i] = args[j];
}
return result;
}
}
六. 多维数组
package com.liu.array;
public class Demo04 {
public static void main(String[] args) {
// 二维数组
int[][] arr = {{1,2},{1,2},{1,2},{1,2}};
System.out.println(arr[0][0]);
}
}
七. Arrays类讲解
1. Arrarys是一个数组方法集
package com.liu.array;
import sun.rmi.runtime.Log;
import java.util.Arrays;
public class Demo05 {
public static void main(String[] args) {
int[] arr = {123151,51512,3213,41111,31235,6};
System.out.println(arr);
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
// 打印数组元素
// System.out.println(Arrays.toString(arr));
// printArr(arr);
}
// 不用自己造已经有的轮子
public static void printArr(int[] args) {
for (int i = 0; i < args.length; i++) {
if (i==0) {
System.out.print("[" + args[i] + ",");
} else if (i==args.length-1){
System.out.print(args[i] + "]");
} else {
System.out.print(args[i] + ",");
}
}
}
}
八. 冒泡排序
package com.liu.array;
import java.util.Arrays;
public class Demo06 {
public static void main(String[] args) {
int[] arr = {1213,53262,6326,7547,2342,8327,9362};
int[] sort = sort(arr);
System.out.println(Arrays.toString(sort));
}
// 冒泡排序
public static int[] sort(int[] args) {
// 定义临时变量
int temp = 0;
// 每遍历一个数,就会将这个数推到最大或最小所以length - 1
for (int i = 0; i < args.length - 1; i++) {
// 定义标识符
boolean flag = false;
for (int j = 0; j < args.length - 1 -i; j++) {
// 如果后一项大于前面当前项,则调换位置
if (args[j+1] < args[j]) {
temp = args[j];
args[j] = args[j+1];
args[j+1] = temp;
flag = true;
}
}
if (!flag) {
break;
}
}
return args;
}
}
九. 稀疏数组
package com.liu.array;
public class Demo07 {
public static void main(String[] args) {
// 稀疏数组
// 模拟棋盘 0是空白 1是黑棋 2是白棋
int[][] inta = new int[11][11];
inta[1][3] = 1;
inta[2][4] = 2;
// 保存有效数数量
int count = 0;
for (int i = 0; i < inta.length; i++) {
for (int j = 0; j < inta[i].length; j++) {
if (inta[i][j] != 0) {
count++;
}
System.out.print(inta[i][j] + "\t");
}
System.out.println("");
}
System.out.println("有效数" + count);
System.out.println("===================");
// 定义稀疏数组
int[][] xishu = new int[count+1][3];
// 保存原有数组信息
xishu[0][0] = 11;
xishu[0][1] = 11;
xishu[0][2] = count;
// 保存对应行数
int num = 0;
// 遍历将数组有效数字添加到稀疏数组中
for (int i = 0; i < inta.length; i++) {
for (int j = 0; j < inta[i].length; j++) {
if (inta[i][j] != 0) {
// 每有一个有效数字,稀疏数组的行数加1,保存对应信息
num++;
xishu[num][0] = i;
xishu[num][1] = j;
xishu[num][2] = inta[i][j];
}
}
}
// 输出稀疏数组
for (int i = 0; i < xishu.length; i++) {
System.out.println(xishu[i][0] + "\t"
+ xishu[i][1] + "\t"
+ xishu[i][2]
);
}
System.out.println("===================");
// 还原稀疏数组
int[][] arr2 = new int[xishu[0][0]][xishu[0][1]];
for (int i = 1; i < xishu.length; i++) {
// 第几行/第几列 = 值
// 没有的采用默认值0
arr2[xishu[i][0]][xishu[i][1]] = xishu[i][2];
}
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.print(arr2[i][j] + "\t");
}
System.out.println("");
}
}
}
内容总结
以上是互联网集市为您收集整理的java自学随笔3.10全部内容,希望文章能够帮你解决java自学随笔3.10所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。