黑马程序员 java语法(二)

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

  

 

1.函数

 

1.1 函数的定义

 

    函数就是定义在类中的具有特定功能的一段独立小程序。

    函数也称为方法。

  

    函数的格式:

     修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,)

         { 

                            执行语句; 

                            return 返回值;

         }

         返回值类型:函数运行后的结果的数据类型。

         参数类型:是形式参数的数据类型。 

         形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。 

         实际参数:传递给形式参数的具体数值。 

         return:用于结束函数。

         返回值:该值会返回给调用者。

 

 

 1.2函数的特点

 

     定义函数可以将功能代码进行封装

     便于对该功能进行复用

     函数只有被调用才会被执行

     函数的出现提高了代码的复用性

     对于函数没有具体返回值的情况,返回值类型用关键字void表示,

     那么该函数中的return语句如果在最后一行可以省略不写。

 

    注意:

        函数中只能调用函数,不可以在函数内部定义函数。

        定义函数时,函数的结果应该返回给调用者,交由调用者处理。

 

 

1.3函数的应用

 

    两个明确

        明确要定义的功能最后的结果是什么?

        明确在定义该功能的过程中,是否需要未知内容参与运算

    示例:

      需求:定义一个功能,可以实现两个整数的加法运算。

      分析:

           该功能的运算结果是什么?两个数的和,也是一个整数(int)

           在实现该功能的过程中是否有未知内容参与运算?加数和被加数是不确定的。

                   (两个参数int,int)

      代码:

                   int  getSum(int x,int y)

                   {

                            return x+y;

                   }

 

 

1.4函数的重载



 函数的功能一样,仅仅是参与运算的未知内容不同时,

 可以定义多函数,却使用统一函数名称,这样方便阅读。

 在调用时,虚拟机通过参数列表的不同来区分同名函数。

 

 

 

2.数组

 

2.1数组的定义

 

2.2数组的内存结构

 

       数组中其实存储的是数据的地址



 

2.3数组操作的常见问题  

        角标越界和空指针异常

 


 

 

2.4数组的常见操作

 

         获取最值(最大值,最小值)

         

class ArrayTest 
{

	/*
	获取数组中的最大值。
	思路:
	1,获取最值需要进行比较。每一次比较都会有一个较大的值。因为该值不确定。
	通过一个变量进行临储。
	2,让数组中的每一个元素都和这个变量中的值进行比较。
	如果大于了变量中的值,就用该该变量记录较大值。
	3,当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值了。

	步骤:
	1,定义变量。初始化为数组中任意一个元素即可。
	2,通过循环语句对数组进行遍历。
	3,在变量过程中定义判断条件,如果遍历到的元素比变量中的元素大,就赋值给该变量;
	
	需要定义一个功能来完成。以便提高复用性。
	1,明确结果,数组中的最大元素 int。、
	2,未知内容:一个数组。int[]
	*/
	public static int getMax(int[] arr)
	{
		int max = arr[0];

		for(int x=1; x<arr.length; x++)
		{
			if(arr[x]>max)
				max = arr[x];
		}
		return max;
	}


	/*
	获取最大值的另一种方式。
	可不可以将临时变量初始化为0呢?可以。这种方式,其实是在初始化为数组中任意一个角标。


	*/
	public static int getMax_2(int[] arr)
	{
		int max = 0;

		for(int x=1; x<arr.length; x++)
		{
			if(arr[x]>arr[max])
				max = x;
		}
		return arr[max];
	}


	/*
	获取最小值。
	*/
	public static int getMin(int[] arr)
	{
		int min = 0;
		for(int x=1; x<arr.length; x++)
		{
			if(arr[x]<arr[min])
				min = x;
		}
		return arr[min];
	}

	public static void main(String[] args)
	{
		int[] arr ={5,1,6,4,2,8,9};

		int max = getMax_2(arr);
		int min = getMin(arr);
		System.out.println("max="+max);
		System.out.println("min="+min);
	}

}

 

 

   选择排序



 

/*
	选择排序。
	内循环结束一次,最值出现头角标位置上。
	*/
	public static void selectSort(int[] arr)
	{
		for (int x=0; x<arr.length-1 ; x++)
		{
			for(int y=x+1; y<arr.length; y++)
			{
				if(arr[x]>arr[y])
				{
					/*
					int temp = arr[x];
					arr[x] = arr[y];
					arr[y]= temp;
					*/
					swap(arr,x,y);
				}
			}
		}
	}

 

 

 

冒泡排序



 

/*
冒泡排序
*/

public static void bubbleSort(int[] arr)
{
	for(int x=0; x<arr.length-1; x++)
	{									
		for(int y=0; y<arr.length-x-1; y++)
		//-x:让每一次比较的元素减少,-1:避免角标越界。
		{
			if(arr[y]<arr[y+1])
			{
				
				int temp = arr[y];
				arr[y] = arr[y+1];
				arr[y+1] = temp;
				
				
			}
		}
	}
}

 

 

折半查找(二分法查找)

     前提:数组必须是有序的。

/*
	折半查找。提高效率,但是必须要保证该数组是有序的数组。
	*/
	public static int halfSearch(int[] arr,int key)
	{
		int min,max,mid;
		min = 0;
		max = arr.length-1;
		mid = (max+min)/2;

		while(arr[mid]!=key)
		{
			if(key>arr[mid])
				min = mid + 1;
			else if(key<arr[mid])
				max = mid - 1;

			if(min>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<arr[mid])
				max = mid - 1;
			else
				return mid;
		}
		return -1;
	}

 

 

 

 

2.5 二维数组

      二维数组就是数组中的数组

    


 

 

    

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值