数组(十一)
数组(十一)
我原本以为Java中的数组与Python中的list差不多,学习之后发觉还是有很大的区别的,总体感觉Java的数组限制要严格许多。
声明和创建数组
数组的创建有两种方式,静态创建(即创建出一个确定值的数组)和动态创建(即创建一个空的数组,可以后续往里面添加值)。
package com.luca.arrays;
public class ArrayDemo1 {
public static void main(String[] args) {
//静态创建
int[] nums = {1, 2, 3, 4, 5};
//动态创建
//1.声明和创建分两步
int[] nums2; //先声明一个数组
nums2 = new int[5]; //然后创建一个数组
//2.声明和创建放在一起
int[] nums3 = new int[5];
for (int i : nums3) {
System.out.println(i); //这里nums3没有进行赋值,则会输出默认值0
}
}
}
关于栈和堆
我们创建一个数组,需要先声明然后创建(就是new),然后再往里面赋值;这当中就涉及到了栈和堆的概念。
数组的使用
-
遍历数组中的值
package com.luca.arrays; public class ArrayDemo2 { public static void main(String[] args) { int[] nums = new int[5]; nums[0] = 1; nums[1] = 2; nums[2] = 3; nums[3] = 4; nums[4] = 5; //遍历数组 //普通for循环遍历 for (int i = 0; i < nums.length; i++) { System.out.print(nums[i]+" "); } System.out.println(); //使用增强型for循环遍历 for (int num : nums) { System.out.print(num+" "); } } }
-
方法参数和返回值为数组
package com.luca.arrays; public class ArrayDemo3 { public static void main(String[] args) { int[] nums = {1, 2, 3, 4, 5}; //遍历返回的新数组 int[] result = revert(nums); for (int i: result) { System.out.print(i+" "); } } public static int[] revert(int[] arrays) { //将数组倒序存放在新数组result中并返回 int[] result = new int[arrays.length]; for (int i = 0, j = arrays.length - 1; i < arrays.length; i++, j--) { result[j] = arrays[i]; } return result; } }
Arrays类的使用
-
常用方法1:toString() 打印数组
package com.luca.arrays; import java.util.Arrays; public class ArrayDemo4 { public static void main(String[] args) { //Arrays类的使用 int[] nums = {4, 99, 67, 123, 23, 77}; //Arrays类常用方法:1.toString() 打印数组 System.out.println(nums); //[I@28d93b30 直接打印的是数组对象的哈希值 System.out.println(Arrays.toString(nums)); printArray(nums); //打印效果:[4, 99, 67, 123, 23, 77] } //自己实现数组打印方法 public static void printArray(int[] arrays) { if (arrays.length==0) { System.out.println("this is a empty array."); } else { for (int i = 0; i < arrays.length; i++) { if (i==0) { System.out.print("["+arrays[i]+","); } else if (i==arrays.length-1) { System.out.print(" "+arrays[i]+"]"); } else { System.out.print(" "+arrays[i]+","); } } } } }
-
常用方法2:fill() 填充数组
package com.luca.arrays; import java.util.Arrays; public class ArrayDemo5 { public static void main(String[] args) { int[] nums = {4, 99, 67, 123, 23, 77}; //Arrays类常用方法:2.fill() 填充 //将数组所有的值都填充66 Arrays.fill(nums, 66); System.out.println(Arrays.toString(nums)); //打印结果:[66, 66, 66, 66, 66, 66] //将数组第二个到第四之间填充77(不包含第四个) Arrays.fill(nums, 2, 4, 77); System.out.println(Arrays.toString(nums)); //打印结果:[66, 66, 77, 77, 66, 66] } }
-
常用方法3:sort() 排序数组
package com.luca.arrays; import java.util.Arrays; public class ArrayDemo6 { public static void main(String[] args) { int[] nums = {4, 99, 67, 123, 23, 77}; mySort(nums); //Arrays类常用方法 3.sort() 排序数组 Arrays.sort(nums); System.out.println(Arrays.toString(nums)); //打印结果:[4, 23, 67, 77, 99, 123] } //自己实现冒泡排序方法 public static void mySort(int[] arrays) { for (int i = 0; i < arrays.length-1; i++) { for (int j = 0; j < arrays.length-i-1; j++) { if (arrays[j] > arrays[j+1]) { int cont = arrays[j]; arrays[j] = arrays[j+1]; arrays[j+1] = cont; } } } System.out.println(Arrays.toString(arrays)); } }