Java基础--第六天

1:函数
  (1)定义在类中,有特定功能的一段小程序。
  (2)函数的格式:
    修饰符 返回值类型 函数名(形参类型 形式参数1,形参类型 形式参数2...)
    {
      函数体;
      reutrn 返回值;
    }

 1 /*
 2     函数定义:
 3         黑屏运行时,按任意键就可以退出;
 4         也可以使用exit命令退出
 5     函数的调用:
 6         单独调用--无返回值
 7         赋值调用--常用,返回值
 8         输出调用--演示
 9     函数的结束:
10         函数其实是以return结束;
11         函数执行完全,void类型函数默认,最后一行有return;语句
12         
13 */
14 
15 class FuntionDemo 
16 {
17     public static void main(String[] args) 
18     {
19         System.out.println("Hello World!");
20         //30;单独写个常数在程序中是不行的,编译不过
21         System.out.println(max(10,20));  //输出调用
22         System.out.println("-----------------------");
23 
24         int a = 20,b = 35;               //实际参数
25         int c = getMin(a,b);             //赋值调用
26         System.out.println("小值是:"+c);//打印输出
27         System.out.println("-----------------------");
28 
29         min(24,45);                      //单独调用,用常数直接做参数
30         System.out.println("-----------------------");
31 
32         return;   //默认有写,不必重复[可省略]
33     }
34     public static int max(int a,int b)         //函数以及变量名命名规则
35     {
36         return(a>b?a:b);                       //三元运算符
37     }
38 
39     public static int getMin(int a,int b)      //函数以及变量名命名规则
40     {
41         return(a<b?a:b);
42     }
43 
44     public static void min(int a,int b)        //函数以及变量名命名规则
45     {
46         if(a>b)
47             System.out.println("小值是:"+a);  //打印输出
48         else
49             System.out.println("小值是:"+b);
50     }
51 }

    A:修饰符 public static
    B:返回值类型 程序最终结果的数据类型
    C:函数名 其实就是函数的名称,方便我们调用。
    D:参数
      形参类型 数据类型
      形式参数 就是接收实际参数的变量
      实际参数 就是实际参与操作的变量(常量)
    E:函数体 就是按照正常的逻辑完成功能的代码。
    F:返回值 就是程序的最终结果
    G:reutrn 返回值 哪里调用程序,return就把结果返回到哪里。
  (3)函数的特点:
    A:函数与函数之间是平级关系。不能在函数中定义函数。
    B:运行特点 函数只有被调用才执行。
  (4)案例:
    有明确返回值的例子:

    A:求两个数据的和
    B:求两个数据的最大值
    C:比较两个数是否相等

/*
    数组:
        new关键字:申请开辟内存
        数组初始化;
        数组排序;
        获取最值;
*/
class ArraryDemo {
    public static void main(String[] args) {
        int[] arrary = new int[5];    //第一种初始化
        for(int i=0;i<5;i++){
            arrary[i] = i+1;
        }
        printArr(arrary);

        int max = getMax(arrary);//获取最大值
        System.out.println("max = "+max);

        int[] arr1 = new int[]{8,3,6,2,1,9,5};//第二种初始化
        printArr(arr1);
        sort(arr1);//基本排序
        printArr(arr1);

        int[] arr2 = {2,4,6,8,9,7,5,3,1};//第三种初始化
        int min = getMin(arr2);
        System.out.println("min = "+min);
        printArr(arr2);
        bubbleSort(arr2);
        printArr(arr2);

        int[] arr = {};//编译可以通过
        //基本查找
        int index = basicSearch(arr2,7);
        System.out.println("index = "+index);
        if(index>=0)
            System.out.println("验证数据:"+arr2[index]);
        index = basicSearch(arr2,17);
        System.out.println("index = "+index);
        if(index>=0)
            System.out.println("验证数据:"+arr2[index]);
    }

    //获取最小值
    public static int getMin(int[] arr){
        int min = 0;
        for(int i=0;i<arr.length;i++){
            if(arr[i]<arr[min])
                min = i;
        }
        return arr[min];
    }
    
    //获取最大值
    public static int getMax(int[] arr){
        int max = arr[0];
        for(int i=0;i<arr.length;i++){
            if(arr[i]>max)
                max = arr[i];
        }
        return max;
    }

    //排序,基本排序
    public static void sort(int[] arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=i+1;j<arr.length;j++){
                if(arr[i]<arr[j])
                    changeLocation(arr,i,j);
            }
        }
    }
    
    //冒泡排序
    public static void bubbleSort(int[]arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1])
                    changeLocation(arr,j,j+1);
            }
        }
    }

    //交换位置
    private static void changeLocation(int[] arr,int i,int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    //打印数组
    public static void printArr(int[] arr)
    {
        System.out.print("[");
        for(int i=0;i<arr.length-1;i++){
            System.out.print(arr[i]+"	");
        }
        System.out.print(arr[arr.length-1]+"]");

        System.out.print("
");
    }

    //基本查找
    public static int basicSearch(int[] arr,int key){
        for(int x=0;x<arr.length;x++){
            if(arr[x]==key)
                return x;
        }
        return -1;//返回值是索引值,不存在-1,表示没有查到
    }
    
}


    void类型例子:

    A:nn乘法表
    B:根据给定的行和列输出一个*组成的长方形
  (5)函数的调用
    A:有明确返回值
      a:单独调用 一般没有意义。
      b:输出调用 但是如果想拿结果继续操作,就有问题了。所以,不好。
      c:赋值调用 推荐方式。

    B:void类型
      单独调用
  (6)函数重载
    A:函数名相同,参数列表不同(个数不同,对应的类型不同)。
      与返回值类型无关。

    B:举例:
      public static int sum(int a,int b){...}
      public static int sum(int a,int b,int c){...}
      public static int sum(float a,float b){...}

2:数组
  (1)数组是存储同一种类型的多个元素的容器。
  (2)好处:数组中的元素会被自动从0开始编号,方便我们获取。
  (3)格式:
    A:int[] arr = new int[3];
    B:int arr[] = new int[3];//不推荐,C++
    C:int[] arr = new int[]{1,2,3};
    D:int[] arr = {1,2,3};

    推荐A和D。
  (4)Java内存图:
    A:栈 存储局部变量使用。
      使用完毕,立马消失。

    B:堆 所有new出来的都在堆里面。
      a:每一个实体都有地址值
      b:每一个实体内的内容都有默认值
        整数:0
        浮点数:0.0
        字符:'u0000'
        布尔:false
      c:在垃圾回收器空闲的时候被回收。

    C:方法区
    D:本地方法区
    E:寄存器
  (5)操作:

      数组的索引。
      数组的长度。
      数组名.length

    A:数组的遍历

    B:数组获取最值

    C:数组的查找
  (6)二维数组:
    格式:
      A:int[][] arr = new int[3][2];
      B:int[][] arr = new int[3][];
      C:int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};

      遍历:

      应用:遍历求和。

 1 /*
 2     二维数组的定义,初始化,应用---遍历
 3     三种定义方式:
 4         int[][] arr = new int[3][4];
 5         int[][] arr = new int[3][];
 6         int[][] arr = {{1,2,5,6},{1,2},{4,8,9}};
 7 */
 8 class Arrary2Demo{
 9     public static void main(String[] args) {
10         //定义
11         int[][] arr1 = new int[3][4];
12         int[][] arr2 = new int[3][];
13         int[][] arr3 = {{1,2,5,6},{1,2},{4,8,9}};
14         //应用--遍历输出
15         int[][] arr4 = {{1,2,5},{1,2},{4,8,9},{8,9,7}};//初始化每个季度中的每个月薪资
16         //第一应用:
17         //计算每个季度薪资总和:
18         int sum = 0;
19         for(int x=0;x<arr4[0].length;x++){
20             sum += arr4[0][x];
21         }
22         System.out.println("第一季度薪资总和:"+sum);
23 
24         //整体遍历,计算一年所有薪资
25         int salary = 0;
26         for(int x=0;x<arr4.length;x++){
27             for(int y=0;y<arr4[x].length;y++){
28                 salary += arr4[x][y];
29             }
30         }
31         System.out.println("一年薪资总和:"+salary);
32 
33 
34         // byte  a=0,b=3; 
35          //byte c =a+b;
36          for(;;);
37         // int other = (int) true;
38     }
39 }
原文地址:https://www.cnblogs.com/zhidianhcuan/p/4345735.html