您的位置:首页 > 职场人生

黑马程序员 java编程基础学习笔记2

2014-06-23 22:06 459 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------函数:将某一个功能封装起来放在一个函数当中,这样可以提高代码

      的复用性,也可以增强代码的阅读性,还能方便以后的代码维护。

java中函数的定义格式;

      修饰符   返回值类型   函数名(参数类型  参数1,参数类型  参数2...)
 在定义一个函数之前必须要知道这个函数最终是否要返回一个数据,是个
 什么类型的数据,当然也可以不要返回值,那么返回值类型就用void,所有
 函数结尾处都有一个return,它的作用就是结束函数,空返回值的函数中,
 return可以不用写,但是它是存在的;   函数中可以传递参数(即函数名括号
 中),也可以不用传递参数,这个根据具体的函数的功能和需求来定。

      每一个程序中都有一个主函数,函数名位main。
 主函数的作用是什么呢?
 1,主函数能保证一个程序的独立运行;
 2,主函数是程序的入口;
 3,主函数被java虚拟机调用;

函数的重载:
 什么是函数重载呢?
 就是说,在一个类中,可以允许有一个或多个与类名相同的函数出现,只要这
 些函数的参数的类型或是个数不同就可以了。
 例如:
 class person
 {
 private String name;
 public void person()
 {
 }
 public void person(String name)
 {
this.name = name;
 }
 ......
 }
 上面的person类中定义了两个函数,与类名相同,但是各自的参数不同,所以
 这两个函数就是已重载的形式存在的。

 函数的重载与函数的返回值类型是没有关系的。

数组:数组其实就是同一数据类型的一组数据。

      定义格式:
 1,数据类型[] 数组名 = {数组元素};//byte[] b = {1,2,3};
 2,数据类型[] 数组名 =  new 数据类型[元素的个数];//int[] arr = new int[10];
 数组在创建时必须指定数组元素的个数,也就是数组创建后,它的长度是固定的。

 数组的每个元素都有对应的角标,多以操作起来很方便,这也是数组的一大特点。

遍历一个数组:
  public void method()
  {
int[] chs = {1,2,3,4,5};
for(int i=0;i<chs.length;i++)
  {
  System.out.println(chs[i]);
}
  }
  上面函数时对数组中的各个元素进行遍历打印输出到控制台上。

数组中的最值问题:
 例如找出一个数组中的最大值?
  //假如已经定义好了一个数组;
  int[] chs = {1,2,3,4,5};
  //通过对数组元素进行比较找出最大值并返回
  public int method(int[] chs)
  {
int max=0;
//将max的值和各个元素进行比较,
//若元素值>max,则max=该元素值;
for(int i=0;i<chs.length;i++)
   {
  if(max<chs[i])
{
       max=chs[i];
    }
}
return max;
  }

数组的排序:
 1,选择排序:(按照从小到大的顺序)
 方法:假定一个数组有十个元素,先用第一个元素和剩
 下的九个元素逐个比较,若第一个元素大则位置互换,
  这样一轮比较后,第一个元素中的值就是这个数组中的
  最小值;在进行下一轮,用数组第二个元素和后面的8个
  元素逐个比较,若第二个元素大则位置互换,这样一轮
  比较后数组中的第二小的元素就排在了角标为1的元素上,
  一次类推,当所有元素被比较玩后,整个数组就按从小
  到大得顺序排列好了。
  package practise001.selectsort;

           public class SelectSortDemo {

           public static void main(String[] args) {
//定义一个数组
int[] arr1 = new int[]{8,5,4,9,1,0,3,5,2,7};
selectSortMethod(arr1);
}
/**
* 换行函数
*/
public static void newLine() {
System.out.println("");
}
/**
* 选择排序算法
* 将数组从小到大进行排序
* @param arr
*/
public static void selectSortMethod(int[] arr) {
//外循环控制内循环执行的次数,内循环执行的次数等于arr.length-1
//循环一次后所有参与过比较的元素中的最小值会被排在这些元素的最前面。
for(int i=0;i<arr.length-1;i++)
{
/*
* 内循环中
* 第一次循环将a[0]和数组的其他元素逐个比较
* 第二次循环将a[1]和除了a[0]以外的所有元素进行逐个比较
* 第三次循环将a[2]和除了a[0],a[1]以外的所有元素进行逐个比较
* 循环的次数为arr.length-1
*/
for(int j=i+1;j<arr.length;j++)
{
//如果arr[i]大于arr[j]时就将元素位置进行互换
if(arr[i]>arr[j])
{
int temp =arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
//打印数组
for(int chs=0;chs<arr.length;chs++)
{
System.out.print(arr[chs]+"     ");
}
}
   }
数组排序的其他方法还有很多,例如冒泡法,快速排序法;

数组的查找:从数组中查找某一个元素。

int[] arr1 = new int[]{8,5,4,9,1,0,3,5,2,7};
问数字3是否存在于这个数组中,存在,那对应哪个角标呢?
定义一个这样的函数来查找;
public int  method(int[] arr1,int num)
{
int temp=0;
for(int i=0;i<arr1.length;i++)
{
if(num==arr1[i])
temp=i;
}
return temp;
}
上面这种方法虽然可以实现查找功能,但是还有不足之处,
万一要查找的那个数据不在数组中呢。还有就是查找的效率
比较低,因为每次都是从数组的第一个元素开始查找,若最终查找
到的元素在数组末尾,就比较低效。
折半查找法可以解决这一问题,不过有一个前提就是数组必须是有序的。
折半查找的方法:首先位于数组中间的那个元素,用这个元素将数组分成
两个部分,再判断要查找的那个数据位于哪个部分,这样就会比上面的
方法更高效。
折半查找法代码;
package practise004.binarychop;
public class binaryChopMethod {
public static void main(String[] args) {
//定义一个数组
int[] chs = new int[]{3,5,9,11,15,18,20,23,26,27};
System.out.println(binaryChopMethod1(chs,21));
}
public static int binaryChopMethod1(int[] chs,int num) {
int max,min,mid;
min = 0;
max = chs.length-1;
while(min<=max)
{
mid = (max+min)/2;
if(num>chs[mid])
min = mid + 1;
else if(num<chs[mid])
max = mid - 1;
else
return mid;
}
return -min-1;
}
}
折半查找法的局限性就是待查找的数据必须是有序的,否则就查找不了。----------------------
ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看:www.itheima.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐