黑马程序员_ Java基础(函数,数组)

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

函数

1、函数的定义

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

函数的格式:

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

{

执行语句;

return 返回值;

}

2、函数的特点:

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

(2便于对该功能进行复用

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

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

(5对于函数没有具体返回值的情况,返回值类型用关键 字void表示,那么该函数中的return,语句如果在最后一行可以省略不写。

特别说明:

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

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

   (3两个明确:

明确返回值类型

明确函数的参数列表(参数的类型和参数的个数)

定义打印99乘法表的函数

 //修饰符 返回值类型 函数名()
 public static void print99()
 {
	  for(int i; i <=9; i++)//定义循环次数
	  {
		for(int j = 1; j <=i; j++)
		{
			System.out.println(j+"*"+i+"="+i*j+"\t");
		}
		System.out.println();
	  }
 }





3、函数的重载:

1重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者 参数类型不同即可,参数是有顺序的

2重载的特点:与返回值类型无关,只看参数列表

3重载的好处:方便阅读,优化了程序设计

函数重载的练习:

Void show(int a,char b,double c){}

Void show(int x,char y,double z)() //没有,因为和原函数一样

Int show(int a,double c,char b)//重载,因为参数类型不同,参数是有顺序的

Void show(int a,double c,char b)//重载,因为参数类型不同,重载和返回值类型无关

Boolean show(int c,char b)//重载了,因为参数个数不同

Double show(int x,char y,double z)//没有,这个函数不可以和给定函数同时存在一个类中

数组

1、同一种类型数据的集合,其数组就是一个容器!数组从0开始编号!

2定义数组的格式:

(1元素类型[] 数组名= new 元素类型[元素个数或数组长度] 如:int[] arr = new int[5]

(2元素类型[] 数组名= new 元素类型[]{元素,元素,……}

如int[] arr = new int[]{1,2,3,7};  int[] arr = {1,2,5,8};

3.内存结构

1、栈内存:

用于存储局部变量,当数据使用完,所占空间会自动释放。函数是存放在栈区的

(2)、堆内存:

数组和对象,通过new建立的实例都存放在堆内存中。

每一个实体都有内存地址值

实体中的变量都有默认初始化值

实体不再被使用,会在不确定的时间内被垃圾回收器回收

(3方法区,本地方法区,寄存器

4.数组常见操作

(1)、遍历 ,获取数组中的元素通常用到遍历

(2)、获取最值

3)、排序

1.选择排序

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

		public static void selectSort(int[] arr)
		{
			for (int i = 0; i < arr.length-1; i++)
			{
				for (int j = i+1; j < arr.length; j++) 
				{
					if(arr[j]<arr[i]){//先抽取第一个元素和后面的元素依次比较,找出最小值
						int temp = arr[i];//找到最小值,交换两个元素的位置
						arr[i] = arr[j];
						arr[j] = temp;
					}
				}
			}
		}



2.冒泡排序

思路:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

            2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

            3.针对所有的元素重复以上的步骤,除了最后一个。

            4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

           

		public static void bubbleSort(int[] arr) 
		{
			for (int i = 0; i < arr.length-1; i++) 
			{
				//每次比较相邻的两个元素把较小的数和较大的数交换位置,最多比较n-1次,就可以排序完成
				for (int j = 0; j < arr.length-1-i; j++)
				{
					if(arr[j]>arr[j+1]){
						int temp = arr[j];
						arr[j] = arr[j+1];
						arr[j+1] = temp;
					}
				}
			}
		}

4)查找


1.二分查找 

假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功,

否则利用中间位置记录将表分成前、后两个子表,继续查找,直到找到满足条件的记录

//数组必须是有序的,键值为key
public static int binarySearch(int[] arr,int key)
{
	int max,min,mid;
	min = 0;
	max = arr.length-1;
	while(max>=min)
	{
		mid = (min+max)>>1;//从中间开始找起
		if(key>arr[mid])//如果key大于中间的值,那么从右半边开始继续找
			min = mid + 1;
		else if(key<arr[mid])//如果key小于中间的值,那么从左半边开始继续找
			max = mid - 1;
		else
			return mid;//查找到该key值,返回该key值在数组中的下标
	}
	return -1;//如果改值不存在,返回-1
}


二维数组

格式一

int[][] arr = new int[3][2];

定义了名称为arr的二维数组。二维数组中有三个一维数组每个一维数组中有两个元素。

一维数组的名称分别为arr[0],arr[1],arr[2]

格式二

int[][] arr = new int[3][];

二维数组中有三个一维数组,每个一维数组的默认初始化值是null

可以对这三个一维数组分别进行初始化

arr[0] = new int[3];

arr[1] = new int[1];

arr[2] = new int[2];

格式三

int[][] arr = {{1,5,8},{6,6,36,58},{74}};

int[][] arr = new int[3][2];

System.out.println(arr[0].length);//打印二维数组中第一个数组的长度

System.out.println(arr);//打印二维数组

System.out.println(arr[0]);//打印二位数组中角标为0的,一维数组

System.out.println(arr[0][1]);//打印二位数组中角标为0的,一维数组中角标为1的元素 



-------- android培训java培训、期待与您交流!--------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值