数组01:什么是数组
数组是同类型数据的集合
数组的下标从0开始
数组02:数组的声明和创建
首先必须声明数组变量,才能在程序中使用数组。
dataType[] arrayRefVar; //首选方法
或
dataType arrayReVar[];
java语言使用new操作符来创建数组,语法如下:
dataType[] arrayReVar = new dataType[arraySize];
package array;
public class ArrayDemo01 {
public static void main(String[] args) {
//变量类型 变量名字 = 变量的值;
//数组类型
int[] nums; //首选方法√
int nums2[]; //不是首选方法
//new一个数组
nums = new int[10]; //长度为10的int类型数组;或者说这个数组可以存放10个int类型数据
}
}
package array;
public class ArrayDemo01 {
public static void main(String[] args) {
//变量类型 变量名字 = 变量的值;
//数组类型
int[] nums; //首选方法√ 声明一个数组
nums = new int[10]; //创建一个数组
nums[0]= 1; //给数组元素中赋值
nums[1]= 2;
nums[2]= 3;
nums[3]= 4;
nums[4]= 5;
nums[5]= 6;
nums[6]= 7;
nums[7]= 8;
nums[8]= 9;
nums[9]= 10;
//计算所有元素的和
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum = sum + nums[i];
}
System.out.println(sum);
}
}
经典二合一
// int[] nums; //首选方法√ 声明一个数组
// nums = new int[10]; //创建一个数组
int[] nums = new int[10]; //经典二合一
获取数组的长度 arraty.length 数组名.length
数组03:三种初始化及内存分析
静态初始化
动态初始化
数组的默认初始化
package array;
public class ArrayDemo02 {
public static void main(String[] args) {
//静态初始化: 创建+赋值
int[]a = {1,2,3,4,5,6,7,8,9};
Man[] men = {new Man(1,1),new Man(2,2)};
//动态初始化:包含默认初始化
int[]b = new int[10];
}
}
数组04:下标越界及小结
数组一旦被创建,长度大小不可改变。
数组元素必须是相同类型,不允许出现混合类型。
数组元素可以是任何数据类型,包括基本类型和引用类型。
数组属于引用类型,数组也可以看作是对象,数组的每个元素相当于该对象的成员变量。
数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的
数组05:数组的使用
package array;
public class ArrayDemo03 {
public static void main(String[] args) {
int[] arrsys = {1,2,3,4,5};
for (int i = 0; i < args.length ; i++) {
System.out.println(arrsys[i]);
}
int sum = 0;
for (int i = 0; i < arrsys.length; i++) {
sum +=arrsys[i];
}
System.out.println("sum=" + sum);
int max =arrsys[0];
for (int i = 0; i < arrsys.length; i++) {
if (arrsys[i]>max){
max=arrsys[i];
}
}
System.out.println("max=" + max);
}
}
package array;
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
//直接for循环,无下标
for (int array : arrays){
System.out.println(array);
}
printArrsy(arrays);
System.out.println( );
System.out.println("========================");
int[] reverse = reverse(arrays);
printArrsy(reverse);
}
//打印数组元素
public static void printArrsy(int[] arrays){
for(int i = 0; i<arrays.length;i++){
System.out.print(arrays[i]+" ");
}
}
//反转数组
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
//反转操作
for (int i = 0,j = result.length-1; i < arrays.length; i++,j--) {
result[j] = arrays[i];
}
return result;
}
}
数组06:二维数组、多维数组
package array;
public class ArratDemo05 {
public static void main(String[] args) {
int[][] array = {{1,2},{2,3},{3,4},{4,5}};
/**
* array[0][0] = 1 array[0][1] = 2 {1,2}
* array[1][0] = 2 array[1][1] = 3 {2,3}
*/
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
}
}
数组07:Arrays类讲解
数组的工具类 java.util.Arrays
package array;
import java.lang.reflect.Array;
import java.util.Arrays;
public class ArrayDemo06 {
public static void main(String[] args) {
int[] array = {1,2,36565,895645,5648754,87,68,12,3};
System.out.println(Arrays.toString(array)); //打印数组全部内容
Arrays.sort(array); //数组排序,从小到大
System.out.println(Arrays.toString(array));
Arrays.fill(array,0);
System.out.println(Arrays.toString(array));
}
}
查看JDK帮助文档,知道具体方法。
给数组赋值 fill方法
对数组排序 sort方法
比较数组 equals方法
查找数组元素 binarySearch方法(能对排序好的数组进行二分查找)
数组08:冒泡排序
八大排序算法之一
package array;
import java.util.Arrays;
public class ArrayDemo07 {
public static void main(String[] args) {
//冒泡排序
int[] a = {1,3,6,2,9,8,0};
int[] sort = sort(a);
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array){
int temp = 0;
for (int i = 0; i < array.length-1; i++) {
boolean flag = false;
for (int j = 0; j < array.length-1-i; j++) {
if (array[j+1] < array[j]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if (flag==false){
break;
}
}
return array;
}
}
数组09:稀疏数组
数据结构的内容,减少存储空间的使用
for .each循环,遍历数组的简单写法。
for(int[] ints : 数组名){
}
package array;
public class ArrayDemo08 {
public static void main(String[] args) {
int[][] array1 = new int[11][11];
array1[1][2]=1;
array1[2][3]=2;
System.out.println("输出原始数组");
for (int[] ints :array1){
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
//转换为稀疏数组
/**
*
*/
//获取有效值的个数
int sum = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (array1[i][j]!=0){
sum++;
}
}
}
//创建一个稀疏数组
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
//遍历二维数组,将非0的值,存放在稀疏数组中
int count = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j]!=0){
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array1[i][j];
}
}
}
System.out.println("==============================");
System.out.println("输出稀疏数组");
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i][0]+"\t"+
array2[i][1]+"\t"+
array2[i][2]+"\t"
);
}
System.out.println("==============================");
//读取稀疏数组
int[][] array3 = new int [array2[0][0]][array2[0][1]];
for (int i = 1; i < array2.length; i++) {
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
System.out.println("输出还原数组");
for (int[] ints :array3){
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}
原创文章:https://www.qqhhs.com,作者:起航®,如若转载,请注明出处:https://www.qqhhs.com/30.html
版权声明:本站提供的一切软件、教程和内容信息仅限用于学习和研究目的,请于下载的24小时内删除;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集整理,如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!