数组的三种定义方式
数组定义时,什么时候 [ ] 内可以加数字
在int [ ] array3 = new int [5];默认值是多少,int[1] 是多少
如果没有对数组进行初始化,数组中元素有默认值吗,还是随机值
不同类型的数组初始值是什么
如果没有对数组进行初始化,布尔类型的数组默认值是什么
动态初始化是什么
静态初始化是什么
静态初始化可以简写,省去后面的 new T[ ]
静态和动态初始化可以分为两步吗,怎么写,第二步可以省略 new T[ ]吗 JVM内存的布局
如何访问数组的元素
ArrrayIndexOutOfBoundsException 为数组越界异常
怎么获取数组的长度
实现数组遍历的两种方法
for-each (增强 for 循环)循环的代码实现
for-each 有限的地方
当输入 Arrays 时会自动导入 java.util.Arrays 的包
怎么实数组转字符串
怎么使用 Arrays.toString()
帮助文档的使用
JVM 内存的布局以及个区域是用来干什么的(学到哪个记住哪个)
程序计数器的作用
虚拟机栈的作用
本地方法栈的作用
堆的作用
方法区的作用
局部变量,方法调用开辟的内存在哪存储
new 对象在哪存储
基本类型变量和引用类型变量的区别(主要在内存存储上的区别)
数组属于对象
定义的数组所分配的内存在哪里(右边的框代表堆)
array1 = array2 意味着什么,这样的写法和以数组为参数传参差不多
当不知道数组指向的引用对象是谁时怎么做
int[ ] array1 = null; 是什么意思
NullPointerException 空指针异常
什么时候会出现空指针异常
一下代码,x 是多少, a 是多少
public static void func(int x) {
x *= 2;
System.out.println("x = "+x);
}
public static void main(String[ ] args) {
int a = 10;
fun(a);
System.out.println(a);
}
以下代码调用 test1 和 test2 的结果是什么
public static void test1(int[] array) {
array = new int[] {10,20,30,40,50};
}
public static void test2(int[] array) {
array[0] = 99;
}
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
test1(array);
test2(array);
System.out.prinln(Arrays.toString(array));
}
数组作为函数参数传递,参数传数组传的是引用,相当于说是地址,所谓的“引用”本质上只是存了一个地址,Java 将数组设定成引用类型,这样的话后续进行数组参数传递,其实只是将数组的地址传入到函数形参中,这样可以避免对整个数组的拷贝(数组可能比较长,拷贝开销大)
test1 在内存上的说明
test1执行完后 0x456 以及指向的堆上的空间被释放
test2
传地址什么时候能改变数组
数组作为函数返回的用法(打印斐波那契数列的前 N 项),注意也要用数组接收
自己编写一个方法 myToString 来模拟 Arrays.toString 、
==============================================
数组拷贝的代码实现
下述代码算不算拷贝,为什么
int[] array = {1,2,3,4,5};
int[] array2 = array;
for(int x : array2) {
System.out.print(x+" ");
}
System.out.println();
//不算拷贝,因为内存里只有一份数据
Arrays 里拷贝数组的方法
Arrays.copyOf 的用法
Arrays.copyOf 的具体实现
System.arraycopy 是怎么使用的,有几个参数,分别是什么
借助 System.arraycopy 来实现普通打印
以 native 修饰的方法开辟的内存在本地方法栈,一般底层是使用 C/C++ 来写的
实现数组拷贝的三种方法
怎么看方法的原码
鼠标放在这,按住 ctrl,有手形图标点进去即可
int[ ] array = Arrays.copyOf(array, array.length*2); 的效果是什么
怎么利用 Arrays.copyOf(array, array.length)实现扩容操作
怎么对数组进行范围拷贝
Arrays.copyOfRange() 的用法
以下代码打印的结果是什么
int[] array = {1,2,3,4,5};
int[] copy = Arrays.copyOfRange(array,1,3);
System.out.println(Arrays.toString(copy));
//打印结果为 [2,3]
深拷贝和浅拷贝的区别
查找数组中的特定元素(顺序查找)的代码实现
有序数组的二分查找的代码实现
怎么对一个无序的数组排序
冒泡排序(bubbleSort)的代码实现(两个 for 循环的具体代码、注意怎么简化运算)
怎么用 Arrays 给数组排序
怎么用 Arrays.Sort 实现局部数组排序
什么利用 Arrays 找出数组里特定的数
怎么利用 Arrays.binarySearch 实现局部二分查找
怎么判断两个数组是否一样
Arrays.equals 的用法
怎么给一个数组里全都填充成9
Arrays.fill 的 用法
怎么利用 Arrays.fill 实现范围填充
一个数组的奇数位于偶数之前的代码实现(注意数组越界的问题)
给定一个整数数组 nums 和一个整数目标值 target ,请你在该数组中找出和为目标之 target 的那两个整数(与返回数组相关)
找出数组中只出现一次的数字的代码实现(异或操作符的使用)
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 n/2 的元素
给你一个整数数组 arr,请你判断数组中是否存在连续三个数都是奇数,存在返回 true,不存在返回 false
二维数组是怎么定义的
Java 当中的二维数组是可以省略列的
二维数组的存储方式
二维数组的行数怎么表示
二维数组的列数怎么表示
array.length 表示的是什么
array[ i ].length 表示的是什么
怎么利用 for-each 实现二维数组的遍历
打印二维数组时,使用 Arrays.toString 与 使用 Arrays.deepToString 结果有什么区别
不规则二维数组是怎么定义的
int[][] array = new int[2][];
array[0] = new int[3];
array[1] = new int[5];