1、java能动态分配数组吗?

答:可以。 int i = 12;int[] myInt = new int[i]; 

2、我怎么知道数组的长度?

答: '.length' 属性获取

3、数组有没有length()这个方法? String有没有length()这个方法

答:数组没有length()这个方法,有length的属性。
   String有length()这个方法

4、Java中的任何数据类型都可以使用System.out.pritln方法显示

对基本数据类型而言,输出的往往是变量的值;

对于像数组这一类复杂的数据类型,输出的是其堆空间中存储位置的hashCode值 

5、操作二维数组的注意点

操作二维数组不应使用常数来控制维数。

具体方法是array.length表示行数,array[row].length来表示row行的列数。

这样当数组行数和列数不相等时,代码可以自动调整为正确的值。

6、显示输出:

1 String[] stringArray = new String[3]; // 各元素的值默认为null
2 for (int i = 0; i < stringArray.length; i++) { // 对各元素进行初始化,但没有赋值。
3     stringArray[i] = new String();
4     System.out.println(stringArray[i]);
5 }

 

答案:空  (有别于null)

7、面试题目:创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同

 1 class ArrayExer {
 2         public static void main(String[] args) {
 3             //方式一:
 4     //        int[] arr = new int[6];
 5     //        for (int i = 0; i < arr.length; i++) {// [0,1) [0,30) [1,31)
 6     //            arr[i] = (int) (Math.random() * 30) + 1;
 7     //
 8     //            boolean flag = false;
 9     //            while (true) {
10     //                for (int j = 0; j < i; j++) {
11     //                    if (arr[i] == arr[j]) {
12     //                        flag = true;
13     //                        break;
14     //                    }
15     //                }
16     //                if (flag) {
17     //                    arr[i] = (int) (Math.random() * 30) + 1;
18     //                    flag = false;
19     //                    continue;
20     //                }
21     //                break;
22     //            }
23     //        }
24     //
25     //        for (int i = 0; i < arr.length; i++) {
26     //            System.out.println(arr[i]);
27     //        }
28             //方式二:
29             int[] arr = new int[6];
30             for (int i = 0; i < arr.length; i++) {// [0,1) [0,30) [1,31)
31                 arr[i] = (int) (Math.random() * 30) + 1;
32                 
33                     for (int j = 0; j < i; j++) {
34                         if (arr[i] == arr[j]) {
35                             i--;
36                             break;
37                         }
38                     }
39                 }
40     
41             for (int i = 0; i < arr.length; i++) {
42                 System.out.println(arr[i]);
43             }
44         }
45     }

 

Java基础之数组练习_数组

8、回形数格式方阵的实现

从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出:

	1 2 
	4 3 

输入数字3,则程序输出:

	1 2 3 
	8 9 4 
	7 6 5

输入数字4, 则程序输出:

	1   2   3   4 
	12  13  14  5 
	11  16  15  6 
	10   9  8   7

方式一:

 1 class RectangleTest {
 2     public static void main(String[] args) {
 3         Scanner scanner = new Scanner(System.in);
 4         System.out.println("输入一个数字");
 5         int len = scanner.nextInt();
 6         int[][] arr = new int[len][len];
 7 
 8         int s = len * len;
 9         /*
10          * k = 1:向右 k = 2:向下 k = 3:向左 k = 4:向上
11          */
12         int k = 1;
13         int i = 0, j = 0;
14         for (int m = 1; m <= s; m++) {
15             if (k == 1) {
16                 if (j < len && arr[i][j] == 0) {
17                     arr[i][j++] = m;
18                 } else {
19                     k = 2;
20                     i++;
21                     j--;
22                     m--;
23                 }
24             } else if (k == 2) {
25                 if (i < len && arr[i][j] == 0) {
26                     arr[i++][j] = m;
27                 } else {
28                     k = 3;
29                     i--;
30                     j--;
31                     m--;
32                 }
33             } else if (k == 3) {
34                 if (j >= 0 && arr[i][j] == 0) {
35                     arr[i][j--] = m;
36                 } else {
37                     k = 4;
38                     i--;
39                     j++;
40                     m--;
41                 }
42             } else if (k == 4) {
43                 if (i >= 0 && arr[i][j] == 0) {
44                     arr[i--][j] = m;
45                 } else {
46                     k = 1;
47                     i++;
48                     j++;
49                     m--;
50                 }
51             }
52         }
53 
54         // 遍历
55         for (int m = 0; m < arr.length; m++) {
56             for (int n = 0; n < arr[m].length; n++) {
57                 System.out.print(arr[m][n] + "\t");
58             }
59             System.out.println();
60         }
61     }
62 }

 

 

Java基础之数组练习_数组_02

方式二:

 1 class RectangleTest1 {
 2 
 3     public static void main(String[] args) {
 4         int n = 7;
 5         int[][] arr = new int[n][n];
 6 
 7         int count = 0; // 要显示的数据
 8         int maxX = n - 1; // x轴的最大下标
 9         int maxY = n - 1; // Y轴的最大下标
10         int minX = 0; // x轴的最小下标
11         int minY = 0; // Y轴的最小下标
12         while (minX <= maxX) {
13             for (int x = minX; x <= maxX; x++) {
14                 arr[minY][x] = ++count;
15             }
16             minY++;
17             for (int y = minY; y <= maxY; y++) {
18                 arr[y][maxX] = ++count;
19             }
20             maxX--;
21             for (int x = maxX; x >= minX; x--) {
22                 arr[maxY][x] = ++count;
23             }
24             maxY--;
25             for (int y = maxY; y >= minY; y--) {
26                 arr[y][minX] = ++count;
27             }
28             minX++;
29         }
30 
31         for (int i = 0; i < arr.length; i++) {
32             for (int j = 0; j < arr.length; j++) {
33                 String space = (arr[i][j] + "").length() == 1 ? "0" : "";
34                 System.out.print(space + arr[i][j] + " ");
35             }
36             System.out.println();
37         }
38     }
39 }

 

 

Java基础之数组练习_i++_03

9、下面数组定义正确的有:

1 A.String strs[] = { ‘a’ ‘b’ ‘c’};  
2 B.String[] strs = {“a”, “b”, “c”};
3 C.String[] strs = new String{“a” ”b” ”c”};
4 D.String strs[] = new String[]{“a”, “b”, “c”};
5 E.String[] strs = new String[3]{“a”, “b”, “c”};

 

答案:
B_D

10、写出结果

 1 class Demo{
 2     public static void main(String[] args){
 3         String foo="blue"; 
 4         boolean[] bar=new boolean[2]; 
 5         if(bar[0]){   
 6             foo="green";
 7         } 
 8         System.out.println(foo);
 9     }
10 }

 

[输出]:blue

 

Java基础之数组练习_i++_04

11、练习Arrays工具类的使用:

1、从键盘输入本组学员的成绩,放到数组中
2、用for循环显示所有学员的成绩
3、排序:从低到高
4、查找是否有正好60分的,如果有返回位置
5、复制成绩最低三名构成新数组
6、用工具类打印成绩最低三名成绩

 1 /*
 2 练习:
 3 1、从键盘输入本组学员的成绩,放到数组中
 4 2、用foreach显示所有学员的成绩
 5 3、排序:从低到高
 6 4、查找是否有正好60分的,如果有返回位置
 7 5、复制成绩最低三名构成新数组
 8 6、用工具类打印成绩最低三名成绩
 9 */
10 import java.util.Scanner;
11 import java.util.Arrays;
12 
13 class TestArraysExer{
14     public static void main(String[] args){
15         //1、声明一个数组并创建一个数组
16         int[] scores = new int[5];
17         
18         //2、从键盘输入成绩
19         Scanner input = new Scanner(System.in);
20         for(int i=0; i<scores.length; i++){
21             //成绩存在数组的元素中
22             //为元素赋值
23             System.out.print("请输入第" + (i+1) + "个学员的成绩:");
24             scores[i] = input.nextInt();
25         }
26         
27         //3、显示成绩
28         //用foreach显示所有学员的成绩
29         System.out.println("本组学员的成绩如下:");
30         for(int s = 0; s < scores.length;s++){
31             System.out.println(scores[s]);
32         }
33         //4、排序:从低到高
34         Arrays.sort(scores);
35         
36         System.out.println("排序后的结果:" + Arrays.toString(scores));
37         
38         //5、查找60分
39         int index = Arrays.binarySearch(scores, 60);
40         if(index<0){
41             System.out.println("没有正好60分的");
42         }else{
43             System.out.println("60分的索引位置:" + index);
44         }
45         
46         //6、复制成绩最低三名构成新数组
47         //int[] newArray = Arrays.copyOfRange(scores, 0, 3);
48         int[] newArray = Arrays.copyOf(scores,  3);
49         
50         //7、用工具类打印成绩最低三名成绩
51         System.out.println("成绩最低的三名同学是:" +  Arrays.toString(newArray));
52     }
53 }

 

Java基础之数组练习_java_05

12、一维数组a[],用java代码将数组元素顺序颠倒

 1 public static void main(String[] args) {
 2         int[] a = new int[] { (int) (Math.random() * 1000),
 3                 (int) (Math.random() * 1000), (int) (Math.random() * 1000),
 4                 (int) (Math.random() * 1000), (int) (Math.random() * 1000) };
 5 
 6         System.out.println(a);
 7         System.out.println(Arrays.toString(a));
 8         swap(a);
 9         System.out.println(Arrays.toString(a));
10     }
11 
12     public static void swap(int a[]) {
13         int len = a.length;
14         for (int i = 0; i < len / 2; i++) {
15             int tmp = a[i];
16             a[i] = a[len - 1 - i];
17             a[len - 1 - i] = tmp;
18         }
19 }

 

Java基础之数组练习_java_06

Java基础之数组练习_i++_07