Java面试题-Java基础(五)-数组(下)
数组
1.用一句话描述数组
在内存中一块连续的空间,存储相同数据类型的值,长度是固定的
2.数组各个类型的默认值
整型: 0
浮点: 0.0
字符: \u0000
布尔: false
其他: null (比如String类型 二维数组(数组类型))
3.Arrays类toString,copy0f,sort,binarySearch方法的作用
toString是将数组中的元素转换为字符串
copyof复制数组
sort 排序升序排序
binarySearch 二分查找
4.复制数组的几种方式
1.编写循环实现复制数组
2.System.arraycopy(原数组,起始位置,新数组,起始位置,长度)
3.Arrays.copyof(原数组,新长度)
5.手写冒泡排序
for(n - 1){
for(n恭 - 1- i)
if(条件成立X)
{交换位置}}
6.冒泡排序如何优化?
可以在外层循环中定义标记,在需要交换位置的情况,改变标记的值,在一轮比较完成以后,判断标记是否被改变,如果没有被改变,则表示数列已经排列正确,不需要继续比 较,可以提前结束循环.
7.二分查找的比较原理和前提要求 ?
前提要求: 数列必须是有序的
比较原理: 将一个序列一分为二,比中间值小的,在左边查找,比中间值大的,在右边差找,如果等于中间,则返回中间值对应的下标。重复以上过程
8.描述局部变量特点,从以下几个方法面: 定义位置,作用范围,是否可以重名,默认值等
定义在方法体内
离当前变量最近的大括号以内
重合的作用范围不能重名
没有默认值,必须先赋值才能使用
基本数据类型存在栈中,引用数据类型,名字在栈中,值在堆中
随着方法的入栈而生效,随着方法的出栈而死亡
9.选择排序的比较原理
使用一个固定位置的元素,依次与其他元素比较大小,遇到需要交换位置的元素,先不交换位置,而是交换比较的元素,使用新的元素继续往后比较,一轮比较完成以后,交换一次位置。
10.值传递和引用传递的区别?
基本数据类型属于值传递,传递的是一个值的拷贝,副本,在方法体内,对值的修改不会影响原变量
引用数据类型属于引用传递,传递的是一个地址,在方法体内,根据地址对地址指向的值修改,将影响所有指向此地址的变量。
Java中只有值传递,"引用传递”也属于值传递,只不过这个值是一个地址值
11.二维数组的概念
数组中的元素还是一维数组