Java学习 DAY05 数组

Java基本语法:

跳转控制语句:
break(在switch语句里用于结束语句 在循环里面使用结束当前循环)
continue(跳过当次循环)
return(方法时讲)

数组:
可以存储多个相同数据类型元素的容器

定义格式:
在这里插入图片描述

   1.数据类型[] 数组名 = new 数据类型[元素个数/数组长度]
         int[] arr = new int[3];//指定长度
         数据类型 名称 = 初始化; //定义变量

变量定义分为声明和初始化两个过程
可以分为声明和初始化两个过程

通过唯一的内存地址(数组名)来确定数组,java自动给数组元素进行编号(下标),从0开始。由内存地址值和下表就能唯一确定数组里元素[下标]

2.数据类型[] 数组名 = new 数组类型[]{元素值1,元素值2,...};
   int[] arr = new int[]{1,2,3}//给定数组元素值来确定数组长度不用给定长度值

可以分为声明和初始化两个过程

3.数据类型[] 数组名 = {元素值1,元素值2,...};
int[] arr = {1,2,3};//给定元素值长度确定 

new------在内存里开辟空间

public class ArrayDemo {

	public static void main(String[] args) {
		//1.定义数组
		int[] arr = new int[3];
		//给数组元素赋值
		//给数组的第一个元素赋值为10
		arr[0] = 10;
		//声明
		int[] arr1;
		//初始化
		arr1 = new int[5];
		//输出数组名(数组地址值)
		System.out.println(arr);
		//输出数组元素值
		System.out.println(arr[10]);

		//2.定义数组
		int[] arr = new int[]{1,2,3};
		
		//声明
		int[] arr1;
		
		//初始化
		arr1 = new int[]{3,4,5};
		
		
		//3.定义数组
		int[] arr = {1,2,3};
		
		//声明
		int[] arr1;
		
		
		//初始化---报错,没有开辟内存空间无法存储元素
		arr1 = {3,4,5};
	}

}

java的内存
栈:存储的是变量(暂且),当存储内容使用完毕之后会立即清除。
堆:存储的是对象,当存储内容使用完毕之后,等到某个时刻来进行回收。
方法区(面向对象)
本地方法栈(不讲)
寄存器(程序计数器)

系统默认初始值
(byte、short、int—0)、(char—’\u0000’ \u代表u16进行编码)、(long—0L)、(float—0.0F)、(double—0.0)、(boolean—false)、(引用数据类型—null)
一个数组内存图
在这里插入图片描述

两个数组内存图
两个三个数组内存图
在这里插入图片描述

数组应用

1.遍历—一次吧数组元素进行输出
增强for循环
在这里插入图片描述

package day05;
import java.util.Arrays;
/**
 *   数组遍历
 * @author tarena
 *
 */
public class ArrayBianLi {
	public static void main(String[] args) {
		//定义数组
		int[] arr = {2,4,1,6,9,5};
		//普通for循环实现遍历
		//数组名.length-----返回数组长度值
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
		//增强for循环
		//(元素类型  变量名:要去遍历的数组名)
		//把数组元素拷贝给新变量来输出新变量值
		for (int i : arr) {
			System.out.println(i);
		}
		//导包Arrays
		System.out.println(Arrays.toString(arr));
	}
}

2.最值—求出数组元素的最大/小值

package day05;
/**
 * 求最值
 * @author tarena
 *
 */
public class ArrayMaxDemo {
	public static void main(String[] args) {
		//定义数组
		//int[] arr = {4,2,1,7,9,5,};
		int[] arr = {1,2,3,4,5,6,7,8,};
		//选取第一个元素做参照物
		int max = arr[0];
		//遍历数组
		for (int i = 0; i < arr.length; i++) {
			//判断大小
			if(arr[i] > max){
				max = arr[i];
			}
		}
		System.out.println(max);
	}
}

3.查找—给定查找数返回数组第一次出现下标值
在这里插入图片描述

package day05;
/**
 * 数组查找
 * @author tarena
 *
 */
public class ArraySearchDemo {
	public static void main(String[] args) {
		//定义数组
		int[] arr = {1,7,3,2,5,8};
		//给定查找数
		int num = 5;
		//遍历数组,依次比较
		for (int i = 0; i < arr.length; i++) {
			//判断数组元素是否和查找数相等
			if (arr[i] == num) {
				System.out.println(i);
				//已经找到下标---结束循环
				break;
			}
		}
		//二分查找
		//提供三个下标
		int min = 0;
		int max = arr.length;
		int mid = (min + max)/2;
		//循环范围不确定
		while (arr[mid] != num) {//中间下表对应的元素值和查找数不相等
			//如果查找数nim大于中间下表对应的元素值
			if(num > arr[mid]){
				min = mid +1;
			}
			//如果num小于中间下标对应的元素值
			if (max < arr[mid]) {
				max = mid - 1;
			}
			//查找数不在数组判断条件
			if(min > max){
				System.out.println("查无此数");
				//结束循环
				break;
			}
			//重新计算中间下标
			mid = (min + max)/2;
		}
		//输出
		if(max >= min){
		System.out.println(mid);
	    }
	}
}

4.排序—给元素排列顺序 冒泡、选择

在这里插入图片描述

package day05;
import java.util.Arrays;
/**
 *   冒泡排序
 * @author tarena
 *
 */
public class ArrayMaoDemo {
	public static void main(String[] args) {
		//定义数组
		int[] arr = {6,1,7,3,9,2};
		//通过嵌套循环实现
		for (int i = 1; i < arr.length; i++) {//外层循环--控制轮数
			for (int j = 1; j <= arr.length - i; j++) {//内层循环-控制参与比较的元素范围
				//两两比较 j  j+1  j-1  j(都可以)
				//升序排序---小的在前面
				if (arr[j-1] > arr[j]) {
					//交换值
					int temp = arr[j-1];
					arr[j-1] = arr[j];
					arr[j] = temp;
				}
			}			
		}		
		//
		System.out.println(Arrays.toString(arr));
	}
}

在这里插入图片描述

package day05;
import java.util.Arrays;
/**
 * 选择排序
 * @author tarena
 *
 */
public class ArrayChooseDemo {
	public static void main(String[] args) {
		//定义数组
		int[] arr = {6,1,7,3,9,2};
		//通过嵌套循环实现
		for (int i = 1; i < arr.length; i++) {//外层循环--控制轮数
			for (int j = i; j < arr.length; j++) {//内层循环--控制参与比较元素范围
				//选择定点元素和后续元素进行比较
				//升序排序---小的在前面
				if (arr[i-1] > arr[j]) {
					//交换值
					int temp = arr[i-1];
					arr[i-1] = arr[j];
					arr[j] = temp;
				}
			}
		}		
		//java提供的排序
		Arrays.sort(arr);
		//输出
		System.out.println(Arrays.toString(arr));
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值