- int[] array1 = new int[10]; // 创建一个可以容纳10个int类型元素的数组
- double[] array2 = new double[5]; // 创建一个可以容纳5个double类型元素的数组
- String[] array3 = new double[3]; // 创建一个可以容纳3个字符串元素的数组
- int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
- double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
- String[] array3 = new String[]{"hell", "Java", "!!!"};
- int[] array1 = {0,1,2,3,4,5,6,7,8,9};
- double[] array2 = {1.0, 2.0, 3.0, 4.0, 5.0};
- String[] array3 = {"hell", "Java", "!!!"};
- int[] array1;
- array1 = new int[10];
- int[] array2;
- array2 = new int[]{10, 20, 30};
- public static void main(String[] args) {
- boolean[] f = new boolean[2];
- System.out.println(f[0]);
-
- }
【 注意事项 】1. 数组是一段连续的内存空间,因此 支持随机访问,即通过下标访问快速访问数组中任意位置的元素。2. 下标从 0 开始,介于 [0, N )之间不包含 N , N 为元素个数,不能越界,否则会报出下标越界异常。
- int[]array = new int[]{10, 20, 30, 40, 50};
- for(int i = 0; i < array.length; i++)
- {
- System.out.println(array[i]);
- }
- int[] array = {1, 2, 3};
- for (int x : array)
- {
- System.out.println(x);
- }
- import java.util.Arrays;
- public static void main5(String[] args) {
- int[] array = {1,2,3,4,5};
- System.out.println("=======Arrays=toString=======");
- //为了让我们更好的去操作数组,提供了一系列的方法,这些方法在工具类Arrays当中
- String ret = Arrays.toString(array);//将你传进来的数组,以字符串的形式进行输出
- System.out.println(ret);
- }
- public static void main(String[] args) {
- int[] array1 = new int[3];
- array1[0] = 10;
- array1[1] = 20;
- array1[2] = 30;
- int[] array2 = new int[]{1,2,3,4,5};
- array2[0] = 100;
- array2[1] = 200;
- array1 = array2;
- array1[2] = 300;
- array1[3] = 400;
- array2[4] = 500;
- for (int i = 0; i < array2.length; i++) {
- System.out.println(array2[i]);
- }
- }
输出结果:100 200 300 400 500
- public static void func()
- {
- int a = 10;
- int b = 20;
- int[] arr = new int[]{1,2,3};
- }
从上图可以看到,引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该地址,引用变量便可以去操作对象。有点类似C语言中的指针,但是Java中引用要比指针的操作更简单。
- public class Test2 {
- public static void func1(int[] array) {
- array = new int[]{1,2,3};
- }
- public static void func2(int[] array) {
- array[0] = 99;
- }
- public static void main(String[] args) {
- int[] array = {9,8,7};
- func1(array);
- for (int i = 0; i < array.length; i++) {
- System.out.print(array[i]+ " ");
- }
- func2(array);
- for (int i = 0; i < array.length; i++) {
- System.out.print(array[i]+ " ");
- }
- }
- }
输出结果是:9 8 7 99 8 7
- public static void main(String[] args)
- {
- int[] array = {1, 2, 3};
- for(int i = 0; i < array.length;++i)
- {
- System.out.println(array[i] + " ");
- }
- }
- public static void main(String[] args)
- {
- int num = 0;
- func(num);
- System.out.println("num = " + num);
- }
- public static void func(int x)
- {
- x = 10;
- System.out.println("x = " + x);
- }
- // 执行结果 x = 10 num = 0
- public static void main(String[] args)
- {
- int[] arr = {1, 2, 3};
- func(arr);
- System.out.println("arr[0] = " + arr[0]);
- }
- public static void func(int[] a)
- {
- a[0] = 10;
- System.out.println("a[0] = " + a[0]);
- }
- // 执行结果 a[0] = 10 arr[0] = 10
- public class TestArray
- {
- public static int[] fib(int n)
- {
- if(n <= 0)
- {
- return null;
- }
- int[] array = new int[n];
- array[0] = array[1] = 1;
- for(int i = 2; i < n; ++i)
- {
- array[i] = array[i-1] + array[i-2];
- }
- return array;
- }
- public static void main(String[] args)
- {
- int[] array = fib(10);
- for (int i = 0; i < array.length; i++)
- {
- System.out.println(array[i]);
- }
- }
- }
import java . util . Arraysint [] arr = { 1 , 2 , 3 , 4 , 5 , 6 };String newArr = Arrays . toString ( arr );System . out . println ( newArr );// 执行结果[ 1 , 2 , 3 , 4 , 5 , 6 ]
- import java.util.Arrays;
-
- public static void func()
- {
- // newArr和arr引用的是同一个数组
- // 因此newArr修改空间中内容之后,arr也可以看到修改的结果
- int[] arr = {1,2,3,4,5,6};
- int[] newArr = arr;
- newArr[0] = 10;
- System.out.println("newArr: " + Arrays.toString(arr));
-
- // 使用Arrays中copyOf方法完成数组的拷贝:
- // copyOf方法在进行数组拷贝时,创建了一个新的数组
- // arr和newArr引用的不是同一个数组
- arr[0] = 1;
- newArr = Arrays.copyOf(arr, arr.length);
- System.out.println("newArr: " + Arrays.toString(newArr));
-
- // 因为arr修改其引用数组中内容时,对newArr没有任何影响
- arr[0] = 10;
- System.out.println("arr: " + Arrays.toString(arr));
- System.out.println("newArr: " + Arrays.toString(newArr));
-
- // 拷贝某个范围.
- int[] newArr2 = Arrays.copyOfRange(arr, 2, 4);
- System.out.println("newArr2: " + Arrays.toString(newArr2));
- }
- public static int[] copyOf(int[] arr)
- {
- int[] ret = new int[arr.length];
- for (int i = 0; i < arr.length; i++)
- {
- ret[i] = arr[i];
- }
- return ret;
- }
4.3 求数组中元素的平均值
- public static void main(String[] args)
- {
- int[] arr = {1,2,3,4,5,6};
- System.out.println(avg(arr));
- }
- public static double avg(int[] arr)
- {
- int sum = 0;
- for (int x : arr)
- {
- sum += x;
- }
- return (double)sum / (double)arr.length;
- }
-
- // 执行结果 3.5
- public static void main(String[] args)
- {
- int[] arr = {1,2,3,10,5,6};
- System.out.println(find(arr, 10));
- }
- public static int find(int[] arr, int data)
- {
- for (int i = 0; i < arr.length; i++)
- {
- if (arr[i] == data)
- {
- return i;
- }
- }
- return -1; // 表示没有找到
- }
-
- // 执行结果 3
啥叫有序数组?有序分为 "升序" 和 "降序"如 1 2 3 4 , 依次递增即为升序.如 4 3 2 1 , 依次递减即为降序
- public static void main(String[] args)
- {
- int[] arr = {1,2,3,4,5,6};
- System.out.println(binarySearch(arr, 6));
- }
- public static int binarySearch(int[] arr, int toFind)
- {
- int left = 0;
- int right = arr.length - 1;
- while (left <= right)
- {
- int mid = (left + right) / 2;
- if (toFind < arr[mid])
- {
- // 去左侧区间找
- right = mid - 1;
- }
- else if (toFind > arr[mid])
- {
- // 去右侧区间找
- left = mid + 1;
- }
- else
- {
- // 相等, 说明找到了
- return mid;
- }
- }
- // 循环结束, 说明没找到
- return -1;
- }
-
- // 执行结果 5
算法思路假设排升序:1. 将数组中相邻元素从前往后依次进行比较,如果前一个元素比后一个元素大,则交换,一趟下来后最大元素就在数组的末尾2. 依次从上上述过程,直到数组中所有的元素都排列好
- public static void main(String[] args) { int[] arr = {9, 5, 2, 7};
- bubbleSort(arr); System.out.println(Arrays.toString(arr)); }
冒泡排序性能较低. Java 中内置了更高效的排序算法
- public static void main(String[] args)
- {
- int[] arr = {9, 5, 2, 7};
- Arrays.sort(arr);
- System.out.println(Arrays.toString(arr));
- }
- public static void main(String[] args)
- {
- int[] arr = {1, 2, 3, 4};
- reverse(arr);
- System.out.println(Arrays.toString(arr));
- }
- public static void reverse(int[] arr)
- {
- int left = 0;
- int right = arr.length - 1;
- while (left < right)
- {
- int tmp = arr[left];
- arr[left] = arr[right];
- arr[right] = tmp;
- left++;right--;
- }
- }
基本语法数据类型 [][] 数组名称 = new 数据类型 [ 行数 ][ 列数 ] { 初始化数据 };
int [][] arr ={{ 1 , 2 , 3 , 4 },{ 5 , 6 , 7 , 8 },{ 9 , 10 , 11 , 12 }};for ( int row = 0 ; row < arr . length ; row ++ ){for ( int col = 0 ; col < arr [ row ]. length ; col ++ ){System . out . printf ( "%d\t" , arr [ row ][ col ]);}System . out . println ( "" );}// 执行结果1 2 3 45 6 7 89 10 11 12