黑马程序员——java学习2(31-61总结)——基础2

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1、for与while相比

for控制循环的变量只作用于for循环,执行完毕释放内存。
比while节省内存
 
2、重载
函数名同,参数列表不同
与返回值无关
 
3、 内存的划分:
(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、冒泡排序
java学习2(31-61总结)

第一圈,最值出现在最后位
 
  
 1 public static void bubbleSort(int[] arr)

 2  {

 3   for(int x=0;x

 4   {

 5    for(int y=0;y

 6    {

 7     if(arr[x]>arr[y])

 8     {

 9      int temp=arr[y];

10      arr[y]=arr[y+1];

11      arr[y]=temp;

12     }

13    }

 

 
 9、最快排序
希尔排序
 
PS:真实开发时Arrays.sort(arr);
 
10、数组中元素交换时,对数组的元素操作,而不是直接对元素操作
 
11、操作失败,通常返回-1
 
12、数组做查找时,存在多个key值时,获取key第一次出现在数组中的位置
 
13、折半查找
前提:数组有序
 1 package array;

 2 public class ArrayTest4 {

 3  public static void main(String[] args)

 4  {

 5   int[] arr={2,4,5,7,19,32,45};

 6   int index=halfSearch(arr,32);

 7   int index_2=halfSearch_2(arr,2);

 8   System.out.println("index="+index);

 9   System.out.println("index_2="+index_2);

10  }

11  public static int halfSearch(int[] arr,int key)

12  {

13   int min,max,mid;

14   min=0;

15   max=arr.length-1;

16   mid=(min+max)/2;

17   while(arr[mid]!=key)

18   {

19    if(key>arr[mid])

20     min=mid+1;

21    else if(key

22     max=mid-1;

23    if(min>max)//如果查找的值大于最大值,则min无限+1,便大于max

24     return -1;

25    mid=(max+min)/2;

26   }

27   return mid;

28  }

29  public static int halfSearch_2(int[] arr,int key)

30  {

31   int min=0,max=arr.length-1,mid;

32   while(min<=max)

33   {

34    mid=(max+min)>>1;

35   if(key>arr[mid])

36    min=mid+1;

37   else if(key

38    max=mid-1;

39   else

40    return mid;

41   }

42   return -1;

43  }

44  

45 }

 

 
14、进制转换
(1)十进制-二进制
%2
/2
 
(2)十进制-十六进制
 
>>>4
 
 1 package array;

 2 public class ArrayTest7 {

 3  public static void main(String[] args)

 4  {

 5   toBin(-6);

 6   toBa(15);

 7   toHex(60);

 8  }

 9  public static void toBin(int num)

10  {

11   //十进制转-二进制

12   trans(num,1,1);

13  }

14  

15  public static void toBa(int num)

16  {

17   //十进制转-二进制

18   trans(num,7,3);

19  }

20  

21  public static void toHex(int num)

22  {

23   //十进制转-十六进制

24   trans(num,15,4);

25  }

26  

27  

28  public static void trans(int num,int base,int offset)

29  {

30   if(num==0)

31   {

32    System.out.println(0);

33    return;

34   }

35   char[] chs={'0','1','2','3','4',

36     '5','6','7','8','9',

37     'A','B','C','D','E','F'};

38   char[] arr=new char[32];

39   int pos=arr.length;

40   while(num!=0)

41   {

42    int temp=num&base;

43    arr[--pos]=chs[temp];

44    num=num>>>offset;

45   }

46   for(int x=pos;x

47   {

48    System.out.print(arr[x]);

49   }

50   System.out.println("");

51  }

52 }

 

 
15、查表法
建立表格,内部存储0到F,表格有下标,可调整与进制内部对应
 
16、字符数组被定义时,空位都是\u0000
 
17、二维数组
(1)初始化
int [][]arr=new int[3][4];
s.o.p(arr);//[[I@XXXXX
s.o.p(arr[0]);//[I@XXXX
----------------------------------
int[][]arr=new int[3][];
s.o.p(arr[0]);//null
java学习2(31-61总结)

(2)定义
一维数组:int[] x; int x[];
二维数组:int[][]y; int[][]y; int[]y[];

你可能感兴趣的:(Java学习)