JAVA_(程序的运行顺序、数组)

一、程序的运行顺序:
顺序结构:从程序开始,到程序结束
分支结构:在顺序结构基础上,根据条件进行选择执行方向。
循环结构:在顺序结构基础上,根据条件进行多次执行相同的或相似的代码

(一)分支结构:根据条件的成立与否,选择执行方向。
1、if分支结构:

      语句1;
      if(条件表达式){
          代码块//条件成立时,执行的逻辑
      }
     **重点内容** 语句2;

执行逻辑:执行完语句1后,碰到if,一定会执行条件表达式,结果为true,就执行代码块,然后再执行语句2。结果为false,就跳过代码块,执行语句2

if(条件表达式){
   代码块1//  条件成立时执行此代码块
  }else{
   代码块2//  条件不成立时执行此代码块
  }

执行逻辑:当程序执行到if时,一定会执行条件表达式进行判断,结果为true,就执行代码块1。结果为false,跳过代码块1,执行代码块2

 if(条件1){
      代码块1;
 }else if(条件2){
  代码块2
 }else if(条件3){
      代码块3
 }else{
      代码块4
 }

执行逻辑:程序执行到if时,一定会执行条件1,进行判断结果为true,执行代码块1;结果为false,执行条件2,进行判断;结果为true,执行代码块2.;结果为false,执行条件3,进行判断…………。

注意:当if语句中含有else{}部分时,一定会执行其中一条分支。没有else{}部分时,有可能一条分支都不执行。

2、switch-case语句

格式:
switch(整数表达式){
case value1: 代码块1;[break];
case value2: 代码块2;[break];
..........
[default: 代码块n;]---[]表示可有可无
}

整数表达式:即能获得一个整数的表达式。但是jdk1.7版本以后,支持字符串表达式;case后的值与()内的结果类型要相同,break:有打断,毁掉,跳出,结束的含义

执行逻辑:当程序遇到switch时,计算表达式的值,然后匹配case后的值,然后,执行对应的分支逻辑。如果此分支有break.就结束分支结构,如果此分支没有break,就继续执行下一条分支逻辑,直到遇到break或default或全部执行完后续的所有分支。

(二) 循环结构:当重复执行相同的代码或者是相似的代码时。

循环三要素:
1) 循环变量的声明:用于控制循环次数的循环因子
2) 循环条件: 用于判断是否执行相同或相似内容(循环体)的条件
3) 循环变量的改变方向:向着循环结束的方向改变。

(1)for循环:

语法:
  for(变量的声明和初始化;循环条件;变量的改变方向){
    循环体;
  }

执行逻辑:程序遇到for时,一定执行变量的声明和初始化,然后执行循环条件的判断;如果为false,会跳过循环结构,执行后续代码。如果为true,执行循环体,然后再执行变量的改变再执行循环条件的判断…….。

循环体:是要重复执行的相同或相似逻辑

break关键字:用在循环结构中时,表示结束/打断循环

continue关键字:用在循环结构中,表示结束当次循环体,继续下一次循环

双层for循环:
外层执行一次,内层执行一遍

(2)while循环

语法:
while(循环条件){
   循环体
}

执行逻辑:当程序遇到while时,一定执行循环条件,如果判断结果为false,就结束循环结构,执行后续代码;如果判断结果为true,就执行循环体,然后再判断循环条件……

(3)do-while循环

语法:
  do{
   循环体
  }while(循环条件);

执行逻辑:当程序遇到do关键字时,一定先执行一次循环体,然后再判断循环条件,如果条件为false,结束循环结构,执行后续代码;如果条件为true,再执行一次循环体,然后再判断条件的成立与否……..

while/do-while/for的区别:

1) while/do-while:适合不知道循环次数的逻辑
for:适合知道循环次数的逻辑

2) while/for一般先判断条件,再执行循环体
do-while:一定先执行一次循环体,再判断条件

二、数组:
1、概念:一组相同类型的数据的组合。数组也是一种引用类型,

2、名称:数组名称不是固定的,与存放的数据的类型有关。
如: 存放一组int类型的数据,

      数组名称   int[]

3、元素的概念:
数组中的每个数据,都是这个数组的元素。

4、数组的声明与初始化
声明:

元素类型[]  变量名;
元素类型   变量名[];--不建议此写法

变量的初始化的时机**:**2种
(1)声明时直接初始化
(2)先声明,再初始化(使用前初始化)

**数组的变量初始化:**3种情况
(1)静态初始化

      String[] names = {"A","B"};
      int[] nums = {};

(2)动态初始化
规定数组长度的写法:int[] ages = new int[length];

不同类型数组的默认元素:
整数类型:默认是0
浮点数类型:默认0.0
字符类型:默认’\u0000’
布尔类型:默认false
引用数据类型:默认值null

不规定长度的写法

int[] ages = new int[]{};
double[] counts = new double[]{1.2,3.14};

5、数组的长度:即数组元素的个数
表示方式:变量名.length;

6、数组的下标(index):
下标从0开始,最后一个元素的下标为:length-1;
下标范围:0~length-1

7、数组元素的访问(查看):
通过下标进行查看
语法:变量名[index];

元素的遍历(从头到尾依次查看)

  for(int i=0;i<变量名.length;i++){
    System.out.println(变量名[i]);
  }

8、数组元素的覆盖(赋值,替换)

     语法:变量名[index] = value;

9、数组间的赋值
就是指变量之间的赋值。

通过一个变量对数组的元素进行修改,那么与之相关的变量对应的数组的元素也会发生变化。

10、数组下标越界异常:

   java.lang.ArrayIndexOutOfBoundsException

出现的原因:访问数组元素时的下标超出了范围;正确范围:0~length-1
错误下标:变量名[-1];变量名[length]

11、引用类型之Arrays
是数组的工具类。此类提供了很多对数组操作的功能方法
如:

 String info = Arrays.toString(数组名);
 Arrays.toString():此方法是将数组的元素一一拼接成字符串.格式如下:
 "[元素1,元素2,.....元素length-1]"

12、数组的复制
数组的特点:一经创建,长度不可变。

System.arraycopy(src,start1,des,start2,length);
   src:源数组,即被复制的数组名
   start1:源数组复制的开始下标
   des:目标数组,即复制到的数组名
   start2:目标数组复制的开始下标
   length:复制的长度 

工具类提供的复制方法:

  元素类型[] 变量名=Arrays.copyOf(src,newLength);
  src:源数组
  newLength:新数组的长度

功能解释:从src的下标为0的元素开始复制复制到长度为newLength的新数组中新数组存放元素的开始位置为0。

13、二维数组
概念:数组的元素依然是数组

     int[] a = {1,2,3,4}
     int[][] b={{1,2},{2,3,4,5,6},{1,2,3}}

14、数组的访问:

     数组的访问:
     b[0]-->{1,2}
     b[1]-->{2,3,4,5,6}
     b[2]-->{1,2,3}
     二维数组的访问:
     b[0][0] -->1
     b[0][1] -->2
     .....
     b[1][3] -->5
     b[1][4] -->6
     ...
     b[2][1] -->2

15、二维数组的初始化:
1)静态初始化:

     如:int[][] a = {{1},{1,2},{2,3,4}};

2)动态初始化:
(1)等长式初始化

     int[][] a = new int[3][2];

表示a有三个元素,每个元素都是2个长度的数组。

(2)只规定高维数组的长度

      int[][] a = new int[3][];

表示a有三个元素,但是都是null。null在使用时,需要新建数组对象(长度任意)

 x={
    {1,2,3},
    {1,2,3},
    {4,5,6}
         }

x数组的元素:都是等长的数组,类似于矩阵。

   y ={
       {1,2},
       {1,2,3},
       {1}
      }

y数组的元素:不是等长的数组。

猜你喜欢

转载自blog.csdn.net/zd1204473783/article/details/81272969
今日推荐