分析Java数组面试题的实例
一、基础知识1.Java变量一定要初始化吗?不一定。Java数组变量是引用数据类型变量,它并不是数组对象本身,只要让数组变量指向有效的数组对象,即可使用该数组变量。对数组执行初始化,并不是对数组变量进行初始化,而是对数组对象进行初始化——也就是为该数组对象分配一块连续的内存空间,这块连续的内存空间就是数组的长度。2.基本类型变量都放在栈内存中?错。应该这样说:所有局部变量都放在栈内存里保存的,不管其是基本类型的变量,还是引用类型变量,都是存储在各自的方法栈区中;但是引用类型变量所引用的对象(包括数组、普通
一、基础知识
1.Java变量一定要初始化吗?
不一定。Java数组变量是引用数据类型变量,它并不是数组对象本身,只要让数组变量指向有效的数组对象,即可使用该数组变量。对数组执行初始化,并不是对数组变量进行初始化,而是对数组对象进行初始化——也就是为该数组对象分配一块连续的内存空间,这块连续的内存空间就是数组的长度。
2.基本类型变量都放在栈内存中?
错。应该这样说:所有局部变量都放在栈内存里保存的,不管其是基本类型的变量,还是引用类型变量,都是存储在各自的方法栈区中;但是引用类型变量所引用的对象(包括数组、普通java对象)则总是存储在堆内存中。
3.引用变量何时只是栈内存中的变量本身,何时又变为引用实例的java对象?
引用变量本质上只是一个指针,只要程序通过引用变量访问属性,或者通过引用变量来调用方法,该引用变量将会由他所引用的对象代替。
二、实例代码
旋转数组:
例如:数组中元素为 123456,翻转后为561234
给定一个数组,长度为n,要求把后k个元素移动到前面,前n-k个元素移动到后面。
//先改进面试题一中的方法,将从头到尾翻转改为从i到j翻转
public int[] changeArray2(int[] array, int i, int j) {
int temp = 0;
while (i < j) {
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
//实现旋转数组就可以通过下面的方式来实现
//1.翻转前半部分2.翻转后半部分3.反转整个数组
public int[] swap(int[] array, int k) {
int n = array.length - 1;// n=5
changeArray2(array, 0, n - k);
changeArray2(array, n - k + 1, n);
changeArray2(array, 0, n);
return array;
}
}
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















