黑马程序员_Java基础语法2

时间:2021-08-11 00:50:54

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


Java基础语法2

一:函数


1.函数的定义:

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


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

                       执行语句;

                       return 返回值;

                }


2.函数的特点:

(1).定义函数可以将功能代码进行封装,便于对该功能进行复写。


(2).函数只有被调用才会被执行。


(3).函数的出现提高了代码的复用性。


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

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


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


3.函数的重载:

(1).重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数 和参数类型不同即可。


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


(3).什么时候用重载?

    当定义的功能相同,但参与运算的未知内容不同,那么,这时就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数。


二.数组


1.数组的定义:

(1).概念:同一种类型数据的集合。其实数组就是一个容器。


(2).好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。


(3).格式:


a.元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

b.元素类型[] 数组名 = new 元素类型[]{元素,元素,......};


(4).数组的内存结构:

黑马程序员_Java基础语法2


a.内存里有5个区:栈内存,堆内存,方法区,本地方法区,寄存器。


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


c.堆内存:

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

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

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

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


(5).数组操作常见问题:


A.数组角标越界异常(ArrayIndexOutOfBoundsException):操作数组时,访问到了数组中不存在的角标。

B.空指针异常(NullPointerException):当引用没有任何指向值为null的情况,该引用还在用于操作实体。


(6).数组的常见操作:


A.获取数组中的元素,通常会用到遍历:

class Demo {

      public static void main(String[] args) {

             array();

      }


      public static void array() {

             int[] arr = new int[]{1,2,3,4,5,6};

             for(int x = 0; x < arr.length; x++) {

                     System.out.println("arr["+x+"]"+"="+arr[x];

             }

      }

}


B.获取最值:


最大值:

class Demo {

      public static void main(String[] args) {

             int[] arr = {1,4,2,5,6,0,-1,32,3};

                                                 int max = getArray(arr);

             System.out.println("max="+max);

      }

      public static int getArray(int[] arr) {

             int max = arr[0];

             for(int x = 1; x < arr.length; x++) {

                    if(max < arr[x])

                    max = arr[x];

             }

                                                  return max;

      }

}


最小值:

class Demo {

      public static void main(String[] args) {

             int[] arr = {1,4,2,5,6,0,-1,32,3};

             int min = getArray1(arr);

             System.out.println("min="+min);

      }


      public static int getArray1(int[] arr) {

             int min = 0;

             for(int x = 1; x <arr.length; x++) {

                    if(arr[min] > arr[x])

                    arr[min] = arr[x];

             }

             return arr[min];

      }

}


C.排序:


选择排序:

class Demo {

      public static void sort(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 z = arr[x];

                                   arr[x] = arr[y];

                                   arr[y] = z;

                          }

                    }

             }

      }


      public static void array(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 void main(String[] args) {

             int[] arr = {3,1,7,5,2,8,4,0,6,9};

                        array(arr);

             sort(arr);

             array(arr);

      }

}


冒泡排序:

public static void bubbleSort(int[] arr) {

       for(int x=0; x<arr.length-1; x++) {

             for(int y=0; y<arr.length-1-x; y++) {

                   if(arr[y]>arr[y+1])

                   swap(arr,y,y+1);

             }

       }

}


//对数组元素进行位置置换。

public static void swap(int[] arr,int index1,int index2) {

       int temp = arr[index1];

       arr[index1] = arr[index2];

       arr[index2] = temp;

}


三:二维数组


1.二维数组:其实元素就是一个一维数组。


2.格式:

(1).方式1:int[][] arr = new int[3][2];


解释:

定义了名称为arr的二维数组

二维数组中有3个一维数组

每一个一维数组中有2个元素

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

给第一个一维数组1索引位赋值为78写法是:arr[0][1] = 78;


(2).方式2:int[][] arr = new int[3][];


二维数组中有3个一维数组

每个一维数组都是默认初始化值null

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

arr[0] = new int[3];

arr[1] = new int[1];

arr[2] = new int[2];


(3).方式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};


3.二维数组的遍历


思路:

(1).二维数组的每一个元素是一维数组。

获取到每一个一维数组。

(2).一维数组的遍历。


class Array2Demo {

      public static void main(String[] args) {


             //二维数组的遍历

             int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};


             //arr.length 获取二维数组的长度,其实也就是一维数组的个数

             for(int x=0; x<arr.length; x++) {


                  //arr[x].length 获取的是每一个一维数组的长度

                    for(int y=0; y<arr[x].length; y++) {

                          //arr[x][y] 获取的是二维数组的元素

                            System.out.print(arr[x][y]+"\t");

                    }

                    System.out.println();

             }

      }

}