黑马程序员__java基础视频day3、day4

来源:互联网 发布:网络任务平台有哪些 编辑:程序博客网 时间:2024/05/22 00:54

---------------------- android培训、java培训、期待与您交流! ----------------------

 看前两天的视频的时候还觉得游刃有余呢,都是快进看的。但是看完这两天的觉得内容有点多啊,特别是第四天的进制转换部分,也许是用的比较少吧,我感觉听起来有点吃力。接受倒是还能接受就是要我写出来代码的话就会有点困难了。

    第三天的循环和函数对我来说还算是蛮容易的,不过还是写一些觉得和重要的东西跟大家共同分享下吧。关于循环:两个最简单的无限循环:for(;;){}   while(true){} 。循环的注意事项:一定要明确哪些语句需要参与循环,哪些不需要。这个需要特别注意,当你写出的代码于宁出来的结果不是你想要的,那么首先注意的就是这一点。我记得以前用for循环的时候,定义一个sum求和,但是经常把sum的初始化在循环的内部,结果代码运行出来的结果一直不正确。关于函数的定义,在定义一个函数的时候你首先要明确该函数需要需要实现的功能是什么,以及它的返回值类型是什么还有就是函数是否需要参数。关于函数的重载,函数的重载简单来说就是函数名一直,参数类表不一致。重载和返回值类型没关系。例如void show(int a,char b,String c)与double show(int x,char y,String z)不是重载关系,他们不允许同时存在在一个类中。而void show(int a,char b,String c)与int show(int a,String c,char b)是重载关系。你要说他们的参数类表其实看上去是一样的,都是那几个类型,但是参数列表是有顺序的。所以其实它们的参数是不一致的,因此他们是重载关系。数组:数组中的重点:栈和堆内存。java在内存中启动的时候划分了5快地方来存储数据,栈内存,堆内存,方法区,本地方法区,寄存器。函数中的局部变量都在栈内存中开辟空间,凡是new出来的都在堆中开辟空间,不管是数组还是对象。在栈中,数据使用完之后会自动释放,而堆内存中的数据,每个在堆内存中的数据都会有一个地址,都有默认的初始值,数据使用完之后不会自动清空,而是通过垃圾回收机制来回收。boolean数组的初始值都为false,char型数组的初始值都为' '。在栈中的两个引用指向同一个数组,其中一个引用对数据做了改变,则当另一个引用进行取值的时候,它所取出的值已经是变化了之后的值了。
第四天:
    数组的定义比较常用的就不说了,下面说一种不常用的定义方式:int[] arr=new int[]{3,4,5,5,6}。
    求数组中最大值的时候需要用到临时变量,临时变量的值可以初始化为数组中的任意一个值也可以初始化为任意一个交表。以前在用的时候要不就初始化为一个最大值要不就是一个最小值,就没想到过初始化为数组中的一个数,因为要求得数也为数组的数,这样也比较方便。
    数组排序的常用的两种方式:选择和冒泡。选择排序基本思路就是遍历数组中的元素,将第一个元素与其后面的每一个元素进行比较。冒泡排序相对来说没那么好理解。它的基本思想就是:相邻的两个元素进行比较,如果符合条件的话这两个元素互换,每比完一圈下来所要求的最值往后沉。第二轮比较的时候则最后一个元素就不需要进行比较了。这里还是写上一段代码吧:for(int x=0;x<arr.length-1;x++)
                                                                                                                                                         for(int y=0;y<=x;y++)
                                                                                                                                                             { if(arr[y]>arr[y+1])两个元素互换}
最快的排序方法是希尔排序,但是一般不怎么样。只在面试的时候可能会用到。
    数组查找:折半查找。折半查找的前提,数组必须是有序的。不多说了还是把代码记下来,到时候留着复习的时候用,这个方法当初学的时候也理解了蛮久才理解透的,但是现在又有点犯迷糊了。
代码一:
public static int halfSearch(int[] arr,int key)
 {
  int min, max,mid;
  min=0;max=arr.length;mid=(min+max)/2
   while(arr[min!=key])
  {
   if(key>arr[mid])
    min=mid+1;
   else if(key<arr[mid])
    max=mid-1;
   if(min>max)
    return -1;
   mid=(min+max)/2;
  }
  return mid;
 }
代码二:
public static int halfSearh_2(int[] arr,int key)
 {
  int min=0,max=arr.length,mid;
  while(min<=max)
  {
   mid=(min+max)>>1;
   if(key>arr[mid])
    min=mid+1;
   else if(key<arr[mid])
    max=mid-1;
   else
    return mid;
   
  }
  return -1;
 }
    最后再补充一点二位数组的知识点:二维数组的初始化:int[][]=new int[3][];arr[0]=new int[3];arr[1]=new int[2];arr[2]=new int[3];
二维数组还可以这样定义 int[] y[];    表达式int[] x,y[]; 的意思是x是一维的,y是二维的。
    感觉要总结的东西好多啊,鉴于此以后还是每看完一天的视频就写总结好了,不把两天的一起总结了。
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
原创粉丝点击