Java基础知识(下)

---------------------- QQ:371524846 期待与您交流! ----------------------

一、流程控制

  1 顺序结构,(从左到右,从上到下的运行结构)
  2 选择结构,(条件语句:if , switch)
  3 循环结构,(for循环【一般都用】,while【一般常用】,do while【一般不用】)

  2.1 if...else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2;
    三元运算符:
    好处是简化if...else代码;但是因为是运算符,所以必须要有一个结果。
  2.2 switch语句特点:
    a. switch语句选择的类型只有四种:byte, short, int,char.
    b. case 之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
    c. 结束switch语句的两种情况:遇到break,执行switch语句结束。
    d. 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直接遇到break或者switch结尾结束。
    e. 什么时候使用switch?
     要比对的值为整型;
     比对的值是有限的值。
     要比对的值个数太多,就不要再使用switch了。
      default 可以放到任何位置!只有所有case都不匹配时,才使用default作为入口点。
  3.1 循环结构:while 、do while 和 for
    (1)while: 先判断条件,只有条件满足才执行循环体。格式如下:
      While(条件表达式)
      {
        循环体 执行语句;
      }
    (2)do while:先执行循环体,在判断条件,条件满足,再继续执行循环体。
      也就是 do while 无论条件是否满足,循环体至少执行一次。格式如下:
      do
      {
        循环体 执行语句;
      }While(条件表达式);
      
    (3)for 语句 格式如下:
      for(初始化表达式;循环条件表达式;循环后的操作表达式)
      {
        执行语句;
      }
    特点:当多表达式出现时,可以用“,”隔开;
    对于for循环来说,不写条件表达式,默认的就是true。
    eg:
      for(int i = 1; i <= 10; i++)   //i是局部变量,出了这个块就死亡
      {
        int j = 1;
      }
    注:
      无限循环的最简单表现形式:
      for(;;){} while(true){}
    不是规律的规律:
      尖朝上,可以改变条件,让条件随着外循环变化;
      尖朝下,可以改变初始化值,让初始化值随着外循环变化。
    other:其他流程控制语句:
    break(跳出当前所在的循环,标号除外), continue(继续)
    break语句:应用范围:选择结构和循环结构。
    continue语句:应用于循环结构。
    :a, 这两个语句离开了应用范围,存在是没有意义的。
      b, 这个两个语句单独存在,下面都不可以有语句,因为执行不到。
      c, continue语句是结束本次循环继续下次循环。
      d,标号的出现,可以让这两个语句作用于指定的范围。

二、函数

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

  2. 函数定义的格式:
    修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,..)
    {
      执行语句;
      return 返回值; //可以省略
    }
    返回值类型:函数运行后的结果的数据类型。
    参数类型:是形式参数的数据类型。
    形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
    实际参数:传递给形式参数的具体数值。
    return: 用于结束函数。
    返回值:该值会返回给调用者。

  3.如何定义一个函数呢?
    (1)既然函数是一个独立的功能,那么先明确该功能的运算结果是什么;
      因为这是在明确函数的返回值类型。
    (2)再明确在定义该功能的过程中是否需求未知的内容参与运算;
      因为这是在明确函数的参数列表(参数的类型和参数的个数)。

  4. 函数的重载(overload) :
    概念:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
    重载的特点:与返回值类型无关,只看参数列表。
    重载的好处:方便与阅读,优化了程序设计。
   什么时候用重载?
    当定义的功能相同,但参与运算的未知内容不同。
    那么,这时就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
eg:

 1     public class FunctionOverload {
 2         public static void main(String[] args) {
 3             add(3,6);
 4             add(2,3,6);
 5         }
 6         //获取两个整数的和
 7         public static int add(int x ,int y){
 8             return x+y;
 9         }
10         //获取三个整数的和
11         public static int add(int x ,int y,int z){
12             return x+y+z;
13         }
14     }

三、数组

  1.数组的定义:
    概念: 同一个类型数据的集合。其实数组就是一个容器。
    数组是引用类型,它是我们真正学习引用类型的开始。

    数组的好处:数组有下标(角标),用来访问数组中的元素。可以自动给数组中的元素从0开始编号,到"长度-1"结束。方便操作这些元素。最大的好处(与循环配

    合使用)。

  2.数组定义的格式
    格式1:
    元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
    eg: int[] arr = new int[5];
    格式2:
    元素类型[] 数组名 = new 元素类型[]{元素, 元素,......};
    eg: int[] arr = new int[]{3,5,1,7};
    int[] arr ={3,5,1,7};

  3.数组的排序:
    选择排序: 内循环结束一次,最值出现在头角标位置上。
    冒泡排序:相邻的两个元素进行比较,如果符合条件就换位。
    第一圈:最值出现最后一位。
    注意:不能让角标越界
    位置置换抽取功能:无论什么排序,都需要对满足条件的元素进行位置置换,所以可以把这部分相同的代码抽取出来,单独封装成一个函数。
    折半查找(二分搜索法):提高效率,但是必须要保证该数组是有序的数组。

eg:

 1 classSortArray{
 2       public static void main(String[] args) {
 3           int[] arr = { 9, 8, 3, 5, 2 };
 4           System.out.print("排序前:");             
 5           printArray(arr);                        //打印原数组
 6           sortArray(arr);                           //调用排序方法
 7           System.out.print("排序后:");             
 8           printArray(arr);                        // 打印排序后的数组
 9       }
10       public static void printArray(int[] arr) {             //定义打印数组方法
11           System.out.print("[");
12           for (int x = 0; x < arr.length; x++) {
13               if (x != arr.length - 1)
14                   System.out.print(arr[x] + ", ");
15               else
16                   System.out.println(arr[x] + "]");
17           }
18       }
19     public static void bubbleArray(int[] arr) {     //选择排序
20         for (int x = 0; x < arr.length - 1; x++) {
21               for (int y = x+1; y < arr.length; y++) {
22                   if (arr[x] > arr[y]) {
23                       int temp = arr[x];
24                       arr[x] = arr[y];
25                       arr[y] = temp;
26                   }
27               }
28           }
29     }
30       public static void sortArray(int[] arr) {        // 定义对数组排序的方法(冒泡排序)
31           for (int x = 0; x < arr.length - 1; x++) {
32               for (int y = 0; y < arr.length - x - 1; y++) {
33                   if (arr[y] > arr[y + 1]) {
34                       int temp = arr[y];
35                       arr[y] = arr[y + 1];
36                       arr[y + 1] = temp;
37                   }
38               }
39           }
40       }
41   }



  4.二维数组:
    定义二维数组的样式:
      int[][] arr=new int[10][20];
      int[][] arr=new int[3][];
      int[][] arr=new int[][]{{},{},{}};

      int arr[][]=… (平时不用,考别人用)
      int[] arr[]=… (平时不用,考别人用)
      int[] a={1,2,3};
      int[] b={4,5};
      int[][] ab={a,b};

---------------------- QQ:371524846 期待与您交流! ----------------------

原文地址:https://www.cnblogs.com/Lt-Java13/p/3260736.html