黑马程序员笔记——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学习型技术博客、期待与您交流! ------------
- 黑马程序员笔记——Java函数
- 黑马程序员—java 函数
- 黑马程序员——Java基础笔记---函数
- 黑马程序员——java基础:函数
- 黑马程序员——Java函数、数组
- 黑马程序员——Java函数/调用
- 黑马程序员—Java基础—函数
- 黑马程序员—JAVA基础知识之函数
- 黑马程序员—JAVA主函数
- 黑马程序员—Java的函数
- 黑马程序员-java学习笔记-函数
- 黑马程序员----------java构造函数笔记
- 黑马程序员Java笔记——数组
- 【黑马程序员】 java笔记——异常
- 【黑马程序员】 java笔记——集合
- 黑马程序员笔记——Java基础
- 黑马程序员笔记——Java-String
- 黑马程序员——Java概述笔记
- iOS----将NSString转换成UTF8编码的NSString
- 娱乐郑爽张翰拍婚纱照打破分手传闻 往日亲密私照曝光
- eclipse使用技巧总结
- leetcode第一刷_Climbing Stairs
- 数据库连接池Demo
- 黑马程序员笔记——Java函数
- android 程序运行出现 java.lang.NoClassDefFoundError的原因与解决方法之一
- ios学习重点
- ant 语法
- 在OpenCasCade的获得一个曲面的边界线
- 触发器系列(2) DataTrigger
- 如何使用搜索技巧来成为一名高效的程序员(很好的总结)
- Android的getSystemService(String)
- ios 下创建,删除文件夹的方法