Java 之数组自查

数组的三种定义方式

数组定义时,什么时候 [ ] 内可以加数字

在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];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值