[关闭]
@zhangyy 2017-11-29T10:36:50.000000Z 字数 4376 阅读 150

Java 的函数和数组

Java基础系列


1. 函数的定义

  1. 函数,function,方法 method
  2. 函数不可以嵌套定义
  3. 函数就是定义在类中的具有特定功能的一段独立小程序。
  4. 函数又称为方法。

1.1 Java的函数格式

  1. 函数格式
  2. 修饰符 返回值类型 函数名(类型 名称1,....)
  3. { //函数体
  4. .....
  5. return ; //返回值类型
  6. }
  7. 返回值类型,函数运行后的结果的数据类型
  8. 参数类型, 是形式参数的数据类型
  9. 形式参数:是一个变量,用于存储调用函数式传递给函数的实际参数
  10. 实际参数:是传递形式参数的具体数值
  11. return :用于结束函数
  12. 返回值:该函数运算后的结果,该结果会返回给调用者。

1.2 函数的特点

  1. 1. 定义函数可以将功能代码进行封装
  2. 2. 便于对该功能进行复用
  3. 3. 函数只有被调用才会被执行
  4. 4. 函数的出现提高了代码的复用性
  5. 5. 对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略 不写
  6. 注意:
  7. 1. 函数中 只能调用函数,不可以在函数内部定义函数
  8. 2. 定义函数时,函数的结果应该返回给调用者,交由调用者处理

1.3 函数的调用

  1. 1. 一般在主方法的中调用
  1. class funcationDemo{
  2. public static void main(String[] args){
  3. System.out.println("hello world");
  4. int a = 1
  5. int b = 2
  6. int c = add(a,b);
  7. System.out.println(c)
  8. }
  9. public static int add (int a, int b){
  10. // int res = a + b ;
  11. return a + b ;
  12. }
  13. }

image_1boof4b5p1qbj1rn1vqr1osk1ji5p.png-41.4kB

  1. package FuncationDemo;
  2. public class FuncationDemo {
  3. public static void main(String[] args) {
  4. int a =1;
  5. int b =2;
  6. int c = add(a,b);
  7. System.out.println("c="+c);
  8. hello("hello world");
  9. }
  10. public static int add (int a , int b) {
  11. return a + b ;
  12. }
  13. public static void hello(String mes) {
  14. System.out.println(mes);
  15. }
  16. }

image_1boofuguc1nn4u12rir1d4kt3216.png-49.7kB

  1. package day03;
  2. public class max {
  3. public static void main(String[] args) {
  4. // TODO Auto-generated method stub
  5. System.out.println(max(1,2,3));
  6. }
  7. public static int max(int a ,int b ,int c) {
  8. int max = a > b? a:b;
  9. max = max >c ? max : c ;
  10. return max ;
  11. }
  12. }

image_1boog92e63tu1nith5n51tsou1j.png-35.5kB

  1. package day03;
  2. public class he {
  3. public static void main(String[] args) {
  4. // TODO Auto-generated method stub
  5. System.out.println("sum ="+sum(100));
  6. }
  7. public static int sum(int a) {
  8. int sum = 0;
  9. for(int i = 1 ; i<=a ; i++ ) {
  10. sum +=i ;
  11. }
  12. return sum;
  13. }
  14. }

image_1boogoklg9aa13pqs9en9a1qcs30.png-40.2kB

  1. package day03;
  2. public class HeSumDemo {
  3. public static void main(String [] args) {
  4. jiujiu(9);
  5. }
  6. public static void jiujiu(int row) {
  7. for (int i =1 ; i <= row ; i++) {
  8. for(int j =1; j<=i ; j++) {
  9. System.out.print(j + "*" + i + "=" + (j * i) + "\t");
  10. }
  11. System.out.println();
  12. }
  13. }
  14. }

image_1booi5t3itng3kc1a706lde9q3t.png-65.7kB
- 1.3.2 递归

  1. // 阶乘计算递归
  2. package day03;
  3. public class JieChen {
  4. public static void main(String[] args) {
  5. // TODO Auto-generated method stub
  6. System.out.println("5!="+fanc(5));
  7. }
  8. public static int fanc(int n) {
  9. if (n == 1) {
  10. return 1;
  11. }
  12. return n* fanc(n-1);
  13. }
  14. }

image_1boovghlc1imrn9618h2lla1pd74a.png-49.2kB

1.4 函数的应用

  1. 一: 两个明确
  2. 1. 明确定义的功能最后的结果是什么?
  3. 2. 明确在定义该功能的过程中,是否需要未知内容参与运算
  4. 二: 示例:
  5. 1. 需求:定义一个功能,可以实现两个整数的加法运算。
  6. 2. 分析:
  7. 该功能的运算结果是什么? 两个数的和,也是一个整数(int
  8. 在实现改功能的过程中是否有未知内容参与运算?加数和被加数是不确定的 (两个参数int,int
  9. 代码:
  10. int getSum(int x ,int y){
  11. return x+y;
  12. }

1.5 函数的重载

  1. 重载的概念:
  2. 在同一个类当中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
  3. 重载的特点:
  4. 与返回值类型无关,只看参数列表、
  5. 重载的好处:
  6. 方便与阅读,优化了程序设计。
  7. 重载实例:
  8. // 返回两个整数的和
  9. int add(int x , int y){return x+y;}
  10. // 返回三个整数的和:
  11. int add(int x , int y , init z){return x+y+z;}
  12. //返回两个小数的和
  13. double add(double x , double y){return x+y;}

2. java 的数组

2.1 什么是数组:

  1. 概念:
  2. 同一种类型数据的集合,其实数组就是一个容器
  3. 数组的好处:
  4. 可以自动给数组中的元素从0开始编号,方便操作这些元组
  5. 格式1:
  6. 元素类型[] 数组名 = new 元素类型[元素个数或数组长度]
  7. 实例: int [] arr = new int[5];
  8. 格式2:
  9. 元素类型[] 数组名 = new 元素类型[] {元素,元素}
  10. int [] arr = new int[] {3,5,1,7};
  11. int [] arr = {3,5,1,7};

  1. package day03;
  2. public class arr01 {
  3. public static void main(String[] args) {
  4. // TODO Auto-generated method stub
  5. // 定义一个数组
  6. int [] arr = new int [5]; // 表示长度
  7. //java.lang.ArrayIndexOutOfBoundsException 数组的下标越界
  8. int [] arr01 = new int [] {8,7,6,5,4};
  9. int [] arr02 = {1,2,4,5,7,8};
  10. //java.lang.NullPointerException 空指针异常
  11. int [] arr03 = null;
  12. // length 是属性
  13. System.out.println(arr.length);
  14. System.out.println(arr01[1]);
  15. System.out.println(arr02[2]);
  16. System.out.println(arr03.length);
  17. }
  18. }
  1. 注意:
  2.   java 是没有指针
  3.    没有显示的指针操作,引用就是指针。指针就是对象的内存地址,null 对象不存在,不能访问其属性和方法,否则 就是会出现空指针异常。

2.2 数组的结构:

image_1bop2q0ur1gff1pfhbqm6hnml857.png-208.9kB
- 2.2.1:给定一个数组求最大值与最小值:

  1. package day03;
  2. public class ArrayTest {
  3. /**给定一个数组{5,1,6,4,2,8,9}获取数组中的最大值,以及最小值。
  4. * @param args
  5. */
  6. public static void main(String[] args) {
  7. // TODO Auto-generated method stub
  8. int []arr ={5,1,6,4,2,8,9};
  9. int max=getMax(arr);
  10. int min=getMin(arr);
  11. System.out.println("max="+max);
  12. System.out.println("min="+min);
  13. }
  14. public static int getMax(int []arr){
  15. int max = arr[0];
  16. for(int x=1;x<arr.length;x++){
  17. if(arr[x]>max)
  18. max=arr[x];
  19. }
  20. return max;
  21. }
  22. public static int getMin(int []arr){
  23. int min = arr[0];
  24. for (int x=1;x<arr.length;x++){
  25. if(arr[x]<min)
  26. min=arr[x];
  27. }
  28. return min;
  29. }
  30. }

image_1boqum7frosb4tifev159t1npq9.png-34.8kB
- 2.2.2 java 的冒泡排序:

  1.  冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
  2.   冒泡排序算法的运作如下:
  3. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  4. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  5. 针对所有的元素重复以上的步骤,除了最后一个。
  6. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
  1. public class BubbleSort{
  2. public static void main(String[] args){
  3. int score[] = {67, 69, 75, 87, 89, 90, 99, 100};
  4. for (int i = 0; i < score.length -1; i++){ //最多做n-1趟排序
  5. for(int j = 0 ;j < score.length - i - 1; j++){ //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
  6. if(score[j] < score[j + 1]){ //把小的值交换到后面
  7. int temp = score[j];
  8. score[j] = score[j + 1];
  9. score[j + 1] = temp;
  10. }
  11. }
  12. System.out.print("第" + (i + 1) + "次排序结果:");
  13. for(int a = 0; a < score.length; a++){
  14. System.out.print(score[a] + "\t");
  15. }
  16. System.out.println("");
  17. }
  18. System.out.print("最终排序结果:");
  19. for(int a = 0; a < score.length; a++){
  20. System.out.print(score[a] + "\t");
  21. }
  22. }
  23. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注