1、for与while相比
for控制循环的变量只作用于for循环,执行完毕释放内存。
比while节省内存
2、重载
函数名同,参数列表不同
与返回值无关
3、内存的划分:、(1)寄存器。
(2)本地方法区。
(1)寄存器。
(2)本地方法区。
(3)方法区。
(4)栈内存。局部变量
(5)堆内存。new出来的实体(数组、对象)
4、栈,自动释放内存
堆,java垃圾回收机制,不定时。
5、数组的两种异常
ArrayIndexOutOfBoundsException: 操作数组时,访问到了数组中不存在的下标。
NullPointerException: 空指针异常,当引用没有任何指向,值为null的情况,该引用还在用于操作实体。
6、s.o.p(arr)
[I@de6ced
数组,整数类型,地址为,哈希值(16进制)
7、选择排序
第一圈,最值出现在第一位
- package array;
- public class ArrayTest {
- public static void selectSort(int[] arr)
- {
- for(int x=0;x
- {
- for(int y=x+1;y
- {
- if(arr[x]>arr[y])
- {
- int temp=arr[x];
- arr[x]=arr[y];
- arr[y]=temp;
- }
- }
- }
- }
- public static void main(String[] args)
- {
- int []arr={5,1,6,4,2,8,9};
- //排序前
- printArray(arr);
- //排序
- selectSort(arr);
- //排序后
- printArray(arr);
- }
- public static void printArray(int[] arr)
- {
- System.out.print("[");
- for(int x=0;x
- {
- if(x!=arr.length-1)
- System.out.print(arr[x]+", ");
- else
- System.out.print(arr[x]);
- }
- System.out.println("]");
- }
- }
复制代码
8、冒泡排序
第一圈,最值出现在最后位
public static void bubbleSort(int[] arr)
{
for(int x=0;x
{
for(int y=0;y
{
if(arr[x]>arr[y])
{
int temp=arr[y];
arr[y]=arr[y+1];
arr[y]=temp;
}
}
9、最快排序
希尔排序
PS:真实开发时Arrays.sort(arr);
10、数组中元素交换时,对数组的元素操作,而不是直接对元素操作
11、操作失败,通常返回-1
12、数组做查找时,存在多个key值时,获取key第一次出现在数组中的位置
13、折半查找
前提:数组有序
package array;
public class ArrayTest4 {
public static void main(String[] args)
{
int[] arr={2,4,5,7,19,32,45};
int index=halfSearch(arr,32);
int index_2=halfSearch_2(arr,2);
System.out.println("index="+index);
System.out.println("index_2="+index_2);
}
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min=mid+1;
else if(key
max=mid-1;
if(min>max)//如果查找的值大于最大值,则min无限+1,便大于max
return -1;
mid=(max+min)/2;
}
return mid;
}
public static int halfSearch_2(int[] arr,int key)
{
int min=0,max=arr.length-1,mid;
while(min<=max)
{
mid=(max+min)>>1;
if(key>arr[mid])
min=mid+1;
else if(key
max=mid-1;
else
return mid;
}
return -1;
}
}