A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙晓磊 中级黑马   /  2015-7-31 22:19  /  350 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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、选择排序
第一圈,最值出现在第一位
  1. package array;
  2. public class ArrayTest {
  3. public static void selectSort(int[] arr)
  4. {
  5.   for(int x=0;x
  6.   {
  7.    for(int y=x+1;y
  8.    {
  9.     if(arr[x]>arr[y])
  10.     {
  11.      int temp=arr[x];
  12.      arr[x]=arr[y];
  13.      arr[y]=temp;
  14.     }
  15.    }
  16.   }
  17. }
  18. public static void main(String[] args)
  19. {
  20.   int []arr={5,1,6,4,2,8,9};
  21.   //排序前
  22.   printArray(arr);
  23.   //排序
  24.   selectSort(arr);
  25.   //排序后
  26.   printArray(arr);
  27. }
  28. public static void printArray(int[] arr)
  29. {
  30.   System.out.print("[");
  31.   for(int x=0;x
  32.   {
  33.    if(x!=arr.length-1)
  34.     System.out.print(arr[x]+", ");
  35.    else
  36.     System.out.print(arr[x]);
  37.   }
  38.   System.out.println("]");
  39. }
  40. }
复制代码


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;
}

}



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马