第4章 流程控制与数组

1:顺序结构

        任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是自上而下逐行地执行,中间没有任何的判断与跳转。

2:分支语句

Java提供了两种常见的分支控制结构:if语句和switch语句。

    1:if条件语句

        if语句使用布尔表达式或布尔值作为分支语句条件进行分支控制。if语句有如下三种形式:①if②if-else③if-else if-else。if、else、else if后的条件执行体要么是一个花括号括起来的代码块,则这个代码块整体作为条件执行体;要么是以分号为结束符的一行语句,甚至可能是一个空语句(空语句是一个分号),那么就是只是这条语句作为条件执行体。如果省略了if条件后条件执行体的花括号,那么if条件只控制到跟该条件语句的第一个分号处。

    2:switch分支语句

        switch语句有一个控制表达式和多个case标签组成,和if语句不同的是,switch语句后面的控制表达式的数据类型只能是byte、short、char、int四种整数类型,枚举类型和java.lang.String类型,不能是boolean类型。switch语句往往需要在case标签后紧跟一个代码代码块,case标签作为这个代码块的标识。

public class text1 {
	public static void main(String[] args) {
		String season = "夏天";
		switch (season) {
		case "春天":
			System.out.println("春暖花开");
			break;
		case "夏天":
			System.out.println("夏日炎炎");
			break;
		case "秋天":
			System.out.println("秋高气爽");
			break;
		case "冬天":
			System.out.println("冬雪皑皑");
			break;
		default:
			System.out.println("错误!!!");
			break;
		}
	}
}

3:循环结构

    

    1:while循环语句

while(条件)
		{
			执行体;
		}    

    2:do while循环语句

do {
			执行体;
		}while(条件)

    3:for循环

for (语句1;语句2; 语句3) {
			执行体;
		}

        语句1:初始化语句;语句2:循环条件;语句3:循环迭代语句。

4:控制循环结构

        Java语言没有提供goto语句来控制程序的跳转,这种做法提高的程序流程控制的可读性,但降低了程序流程控制的灵活性。为了弥补这种不足,Java提供了continue和break来控制循环结构。除此之外,return语句可以结束整个方法。

        (1)break:break用于完全结束一个循环,跳出循环体。

        (2)continue:continue只是跳过本次循环,接着下一次循环,并不会终止循环。

        (3)return:return关键字并不是专门用于结束循环的,return的功能是结束一个方法。当方法执行到一个return语句时,这个方法将被结束。

5:数组类型

    数组是编程语言中最长常见的一种数据是够,可用于存储多个数据,每个数组元素存放一个数据,通常可通过数组元素的索引类访问数组元素,包括为数组元素赋值和取出数组元素的值。

    1:理解数组:数组也是一种类型

           Java的数组要求所有的数组元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据。而不能存储多种数据类型的数据。

           一旦数组的初始化完成,数组在内存中所占的空间就被固定下来,因此数组的长度是不可改变的。Java的数组既可以存储基本类型数据也可以存储引用类型的数据。数组也是一种数据类型,它本身是引用类型。

    2:定义数组

           Java语言支持两种语法格式类定义数组:①type[ ] arrayName;②type arrayName[ ];对于这两种语法格式而言,通常推荐第一种格式。数组是一种引用类型的变量,因此使用它定义一个变量时仅仅表示定义了一个引用变量,这个引用变量还未指向任何有效的内存,因此定义数组时不能指定数组长度。而且由于定义了一个引用变量,并未指向任何有效的内存空间,所以还没有没存空间的存储数组元素,因此这个数组也不能使用,只有对数组进行初始化后才能使用。注意定义数组是不能指定数组的长度。

   3:数组的初始化

        数组初始化有两种方式:静态初始化、动态初始化。
        (1)静态初始化:
int[] intArr;
		intArr=new int[] {11,22,33};
        (2)动态初始化:
int[] intArr = new int[4];
        注意:不要同时使用静态初始化和动态初始化,也就是说,不要为数组元素赋值,不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。、

    4:使用数组

            数组最常见的用法就是访问数组元素,包括对数组进行元素的赋值和取出数组 元素的值。Java语言的数组索引是从0开始的,也就是说,第一个数组元素的索引值为0,最后一个数组元素的索引值为数组长度减1。
            
int[] intArr = new int[] {1,2,3,4};
		for (int i = 0; i < intArr.length; i++) {
			System.out.println(i);
		}

    5:foreach循环

        foreach循环,这种循环遍历数组和集合更加简洁。使用foreach循环遍历数组和集合时无须获得数组和集合长度,无需根据根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每个元素。
int[] intArr = new int[] {1,2,3,4};
		for (int i : intArr) {
			System.out.println(i);
		}
        注意:使用foreach循环迭代数组元素时,并不能改变数组元素的值,因此不要对foreach的循环变量进行赋值。

    6:深入数组

        数组是一种引用类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的。
        实际的数组对象被存储在堆内存中;如果引用该数组对象的数组引用变量是一个局部变量,那么它被存储在栈内存中。

         1:基本类型的初始化

            对于基本类型数组而言,数组元素的值直接存储在对应的数组元素中,因此,初始化数组时,先为该数组分配内存空间,然后直接将数组元素的值存入对应数组元素中。
    
int[] intArr;
		intArr = new int[5];
		for (int i = 0; i < intArr.length; i++) {
			intArr[i] = i;
		}

        2:引用类型数组的初始化

            应用类型数组的数组元素是引用,因此情况变得更加复杂,每个数组元素里存储的还是引用类型,它指向另一块内存,这块内存里存储了有效数据。

    

 class Person {
		public String name;
		public void info() {
			System.out.println("名字是:"+name);
		}
}
public class text1 {
	public static void main(String[] args) {
		Person[] person;
		person=new Person[2];
		Person temp;
		temp=new Person();
		temp.name="小熊";
		person[0]=temp;
		person[0].info();
		temp.name="小猫";
		person[1]=temp;
		person[1].info();
	}
}
        

猜你喜欢

转载自blog.csdn.net/Hot_snail/article/details/79646491
今日推荐