Java第四章【流程控制与数组、数组的操作【遍历、排序、查找】】

1.分支结构:用于实现根据条件来选择地执行某段代码。if  switch

2.循环结构:用于实现根据循环条件重复执行某段代码。while 、do  while 、for 、foreach循环以更简单的方式来遍历集合和数组元素。

一、顺序结构:程序从上到下逐行地执行,中间没有任何判断和跳转。

1.if条件语句:使用布尔表达式或者布尔值作为分支条件来进行分支控制。

   (***)一个逻辑表达式,即这个表达式的返回值只能是boolean(布尔值):ture或者flase.

注:使用if......else语句时,尽量先出现包含范围更小的情况

if(a>b)
{
	//执行代码
	int temp;
	temp = a;
	a = b;
	b = temp
}
int a = 3;
if(a>4)
{
	System.out.println("a大于4");
}
else
{
	System.out.println("a不大于4");
}
int age = 30;
if(a>60)
{
	System.out.println("老年人");
}
else if(a>40)
{
	System.out.println("中年人");
}
else
{
	System.out.println("年轻人");
}
2.switch分支语句

switch语句由一个控制表达式和多个case标签组成,switch后面的控制表达式的数据类型只能是byte,short,int ,char,String和枚举类型。

class ForTest 
{
	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;
		default:
			System.out.println("冬天");
		}
	}
}
注:switch语句先求出表达式的值,然后拿这个结果与case标签的中的值比较,如果匹配则执行case标签下的所有代码,除非遇到break才结束。

二、循环结构

1.while(条件表达式){循环代码}//先判断条件是否满足,满足则接着执行循环代码段

	public static void main(String[] args) 
	{
		int count = 0;
		while(count < 10)
		{
			System.out.println(count);
			count++;
		}
	}
2.do{循环代码}while(条件表达式)

		int a = 10;
		do
		{
			System.out.println("a="+a);
			a--;
		}
		while (a>0);

3.for(int i=0;i<10;i++)for(int i=0,j=0;i<10 && j<8;i++)

		for(int i=0;i<10;i++)
		{
			System.out.println("i="+i);
		}
		for(int b=0,s=0,p=0;b<10 && s<4 && p<10;p++)
		{
			System.out.println(b++);
			System.out.println(++s+p);
		}
		int count = 0;
		for(;count<10;)
		{
			System.out.println(count);
			count++;
		}
4.嵌套循环
		//外层循环
		for(int i=0;i<4;i++)
		{
			//内层循环
			for(int j=0;j<4;j++)
			{
				System.out.println("i="+i+",j="+j);
			}
		}

5.控制循环结构【break,continue,return】

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

		for(int i=0;i<10;i++)
		{
			System.out.println("i="+i);
			if(i==2)
			{
				break;//结束本次循环
			}
		}
 break语句不仅仅可以结束其所在的循环,也可以直接结束其外层循环。

		//外层循环
		outer:
		for(int i=0;i<4;i++)
		{
			//内层循环
			for(int j=0;j<4;j++)
			{
				System.out.println("i="+i+",j="+j);
				if(j==1)
				{
					break outer;
				}
			}
		}
		//结果:i=0,j=0
        //      i=0,j=1
	//外层循环
		for(int i=0;i<4;i++)
		{
			//内层循环
			outer:
			for(int j=0;j<4;j++)
			{
				System.out.println("i="+i+",j="+j);
				if(j==1)
				{
					break outer;
				}
			}
		}
		/*
			i=0,j=1
			i=1,j=0
			i=1,j=1
			i=2,j=0
			i=2,j=1
			i=3,j=0
			i=3,j=1
		*/

continue:用于跳出本次循环。与break类型的是,continue后的标签也必须是一个有效标签,即这个标签通常应该放在continue所在的外层循环之前定义。

return:并不是专门用来结束循环的,其功能是结束一个方法。

三、数组:一种数据结构,用于存储多个数据,每个数据元素存放一个数据,可通过数组元素的索引访问数组元素(赋值、取值)

注:一个数组只能存储一种数据类型的数据,它是一种引用类型。一旦数组的初始化完成后,数组在内存中所占的看见就被固定下来。

1.定义数组:int[] arr;  type[] arrayName;

2.初始化:就是为数组的数组元素分配内存空间,并为每个数据元素赋值。【初始化之后才可以使用】

静态初始化:显示指定每个数据元素的值,由系统决定数组的长度。

动态初始化:程序员值给定数组的长度,由系统为数组元素分配初始值。

int arr[];
arr = new int[]{1,2,3,4,5}
String book = new String[] {"黑马程序","传智播客"};//静态初始化
int arr[] = new int[4];//动态初始化

执行动态初始化,只需给定数组的长度,即为每个数组元素指定所需的内存空间,系统为这些数组分配初始值。

整数类型:(byte,short,int,long),则数组元素的值为0;

浮点类型:(float,double),则数组元素的值为0.0.

字符类型:(char),则数组元素的值为'\u0000'。

布尔类型:(boolean),则数组元素的值为flase。

引用类型:(类、接口、数组),数组元素的值为null。

3。可以通过下标或者索引来查看数组中元素的值,其中索引值为0~数组长度减一,如果索引值小于0,或者大于等于数组的长度,编译程序不会出现任何错误,但运行程序时会出现异常:java.lang.ArrayIndexOutOfBoundsException:N(数组索引越界异常),异常信息后的N是程序员试图访问的数组索引。

		int[] array = new int[]{1,5,8,3,4};
		//通过数组名.length获得数组的长度,通过for循环语句遍历数组
		for(int i=0;i<array.length;i++)
		{
			System.out.print(array[i]+" ");
		}
		System.out.println();
		//通过foreach循环遍历数组的元素,其无须获得数组的长度,无须根据索引来访问数组的元素。
		//for(type 形参名:数组名)
		for(int num : array)
		{
			System.out.print(num+" ");
		}
四、深入数组

数组是一种引用数据类型,数组对象被存储在堆内存中,而数组引用变量被存储在栈内存中。


注:当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量会逐个放在这块栈内存里,随着方法的执行结束,这个方法在内存栈中也将自然被销毁。

所有放在方法中的局部变量都放在栈内存中的。经常访问的数据放在堆内存中,比如对象。

五、操作数组的工具类

		int binarySearch(type[] type key);//查询key元素值在数组中出现的索引,不包含返回负数。数组必须是升序排列
		int binarySearch(type[] int fromIndex,int toIndex,type key);
		//只搜索数组中fromIndex到toIndex索引的元素,数组同样是升序排列。
		type[] copyOf(type[] original,int length);//把数组original数组复制成一个新数组,但要注意新数组的length.
		type[] copyOfRange(type[] original,int from,int to);
		boolean equals(type[] a1,type[] a2);//如果数组a1和a2的长度且数组元素一一相等,返回true。
		void fill(type[] a,type val)//将数组元素值都赋值为val
		void fill(type[] a,int fromIndex,int toIndex,type val);
		void sort(type[] a)//排序
		void sort(type[] a,int fromIndex,int toIndex);//formIndex到toIndex-1
		String toString(type[] a)

注:要import java.util.*

因为Arrays类在该包下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验名称:Java数组操作 实验目的:掌握Java数组的基本操作,包括数组定义、初始化、遍历排序查找等。 实验环境:Java语言编译器 实验内容: 1. 数组定义和初始化 Java数组是一种特殊的对象,它可以存储同一型的多个元素。数组定义需要指定数组型和数组的大小,例如int[] arr = new int[10];表示定义一个包含10个整数的数组数组还可以使用数组字面量进行初始化,例如int[] arr = {1, 2, 3};表示定义一个包含三个整数的数组,并将它们初始化为1、2和3。 2. 数组遍历 数组可以使用for循环进行遍历,例如: ``` for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } ``` 其中arr.length表示数组的大小,arr[i]表示数组中第i个元素。 3. 数组排序 Java提供了Arrays来对数组进行排序,例如Arrays.sort(arr)可以将数组arr按升序排序。也可以使用自定义排序算法对数组进行排序,例如冒泡排序、快速排序等。 4. 数组查找 Java提供了Arrays来对数组进行查找,例如Arrays.binarySearch(arr, key)可以在数组arr中查找关键字key,并返回它的索引。如果数组中不存在关键字key,则返回负数。 实验步骤: 1. 定义一个包含10个整数的数组,并使用数组字面量进行初始化。 2. 输出数组中的所有元素。 3. 将数组按升序排序,并输出排序后的结果。 4. 在数组查找元素5,并输出它的索引。 实验结果: ``` int[] arr = {5, 2, 3, 7, 1, 9, 4, 6, 8, 0}; // 输出数组中的所有元素 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); // 将数组按升序排序 Arrays.sort(arr); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); // 在数组查找元素5 int index = Arrays.binarySearch(arr, 5); System.out.println("Index of 5: " + index); ``` 输出结果为: ``` 5 2 3 7 1 9 4 6 8 0 0 1 2 3 4 5 6 7 8 9 Index of 5: 5 ``` 实验结论: 本实验通过对Java数组操作,掌握了数组定义、初始化、遍历排序查找等基本操作。在实际编程中,需要根据具体的需求选择合适的数据结构来存储和处理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值