黑马程序员笔记——Java函数

来源:互联网 发布:淘宝能开发票吗 编辑:程序博客网 时间:2024/05/01 05:35

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

函数

函数的定义格式

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

{

执行语句;

return   返回值;

}

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

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

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

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

return:用于结束函数。(当返回值类型为void时,return可以省略)

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

函数的特点

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

便于对功能进行复用

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

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

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

注意:

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

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

如何定义一个函数呢?
1,明确该功能运算后的结果。(明确返回值类型)
2,明确该功能实现过程中,是否需要未知内容参与运算。(明确函数的参数列表)

要定义一个加法运算功能。

int getSum(int x,int y){return x+y;}
 函数的特点:
有一种情况:函数执行一个功能,但没有具体值被返回。这时返回值类型不可以具体确定,那么用void关键字来表示。
当函数的返回值类型是void时,函数中的return语句可以省略不写。

以后书写代码的,其实就是在不断的实现功能,功能都由函数来体现的。
代码尽量就不要书写到main函数当中。main函数出现可以调用其他函数,以用来测试该功能是否可用。

函数的重载

重载的概念

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可、

重载的特点

与返回值类型无关,只看参数列表。

重载的好处

方便阅读,优化了程序的设计。

重载实例:

返回两个整数的和

int add (int  x,int  y){return  x+y}

返回三个整数的和
int add   (int x,int  y,int  z)  {return  x+y}

数组

数组的定义

格式1:元素类型[ ]  数组名 = new  元素类型[元素个数或数组长度];

实例:int  [ ]  arr  =  new  int [5]

格式2:元素类型[ ]  数组名 = new  元素类型 [元素个数或数组长度]

int [ ]  arr = {3,5,1,7}

内存结构

栈内存存储局部变量,当数据使用完,所占用空间会自动释放

堆内存

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

每个实体都有内存地址值

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

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

数组内存结构


数组操作的常见问题

//ArrayIndexOutOfBoundsException: 3:操作数组时,访问到了数组中不存在的角标。
//NullPointerException:空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。

数组的操作

遍历数组

public static void printArray(int arr[]){System.out.print("{");for (int x = 0;x<arr.length ;x++ ){if (x!=arr.length-1){System.out.print(arr[x]+",");}else System.out.println(arr[x]+"}");}}

获取最值

public static int getMax(int arr[]){int max =arr[0];for (int x = 1;x<arr.length ; x++){if (max<arr[x]){max=arr[x];}}return  max;}public static  int getMax1(int arr[]){int max = 0;for (int x = 1;x<arr.length ;x++){if (arr[max]<arr[x]){max = x;//arr[max]=arr[x];}}return  arr[max];}

数组排序

选择排序

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;}}}}

冒泡排序

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;*/swap(arr,y,y+1);}}}}

数组查找

//定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。public static int getIndex(int[] arr,int key){for(int x=0; x<arr.length; x++){if(arr[x]==key)return x;}return -1;}}

折半查找

/*折半的第二种方式。*/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;elsereturn mid;}return -1;}/*折半查找。提高效率,但是必须要保证该数组是有序的数组。*/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 void reverseArray(int[] arr){for(int start=0,end=arr.length-1; start<end ; start++,end--){/*int temp = arr[start];arr[start] = arr[end];arr[end] = temp;*/swap(arr,start,end);}}public static void swap(int[] arr,int a,int b){int temp = arr[a];arr[a] = arr[b];arr[b] = temp;

进制转换

/*十进制-->二进制*/public static void toBin(int num){trans(num,1,1);}/*十进制-->八进制*/public static void toBa(int num){trans(num,7,3);}/*十进制-->十六进制*/public static void toHex(int num){trans(num,15,4);}public static void trans(int num,int base,int offset){if(num==0){System.out.println(0);return ;}char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};char[] arr = new char[32];int pos = arr.length;while(num!=0){int temp = num & base;arr[--pos] = chs[temp];num = num >>> offset;}for(int x=pos; x<arr.length; x++){System.out.print(arr[x]);}return ;}

}


二维数组

格式:

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

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

3、int [ ][ ] arr = {{2,3,6},{3,5,8}{2,4,8}};

注意:int [ ]arr[ ] 开发不能这么写     int [ ] x,y[ ]  x为一维数组  y 为二维数组

二维数组所有元素的和

int[][] arr = {{3,5,1,7},{2,3,5,8},{6,1,8,2}};int sum = 0;for(int x=0; x<arr.length;x++){for(int y=0; y<arr[x].length; y++){sum = sum + arr[x][y];}}







      



----------- android培训java培训、java学习型技术博客、期待与您交流! ------------



0 0
原创粉丝点击