1、Break(在swiitch语句用用于结束语句,在循环里使用结束当前循环)
2、Countinue(跳过当次循环 )
3、return(方法时讲)
可以存储多个相同数据类型元素的容器
·1、数据类型[] 数组名 = new 数据类型[元素个数/数组长度];
int arr = new int[3]; //定义了一个长度为3的整型数组
数据类型 名称 = 初始化;//定义变量
变量定义分为声明和初始化两个过程
数组的定义也可以用声明和初始化
通过唯一的内存地址值(数组名)来确定数组,Java自动给数组元素进行编号(下标),从0开始。由内存地址值和下表就能唯一确定数组里的元素----数组名[数组]
/**
* 数组的定义
* @author tarena
*
*/
public class ArrayDemo {
public static void main(String[] args) {
//1、定义数组
int[] arr = new int[3];
//声明
int[] arr1;
//初始化
arr1 = new int[5];
System.out.println(arr1);
}
}
//输出结果
[I@2a139a55
2、数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2,······}
int[] arr = new int[]{1,2,3}
//给定数组元素值来确定长度不用给定长度值
可以分为声明和初始化
arr[0] = 10;
//声明
int[] arr1;
//初始化
arr1 = new int[5];
3、数据类型[] 数组名={元素值1,元素值2,······}
int arr = {1,2,3};
//给定元素值长度确定
int[] arr =new int[]{1,2,3};
new----开辟内存空间
java的内存
栈:存储的是变量(暂且)、当存储的内容使用完毕后会立即清除
堆:存储的是对象,当存储的内容使用完毕之后,等到某个时刻来进行回收。
方法区(面相对象)
本地方法栈
寄存器(程序计数器)
系统默认初始值
(byte、short、int—0)、(char—’\u0000’ \u代表以u16进行编码)、(float—OL)、(float—0.0F)、(double—0.0)、(boolean—false)、(引用数据类型—null)
数组内存图3
1、遍历
依次把数组元素进行输出
(1)普通for循环遍历
// 定义数组
int[] arr = {2,6,5,4,9,8};
//普通for循环实现遍历
//数组名.length----返回数组长度值
for (int i = 0; i < arr.length; i++) {//下标范围
System.out.print(arr[i]);
}
相当于把数组的值一次赋值给i变量,然后循环输出变量i
//增强for循环
//(元素类型 变量名:要遍历的数组名)
//把数组元素拷贝赋值给新变量来输出新变量值
for(int i:arr){
System.out.println(i);
}
(3)Arrays工具遍历数组
import java.util.Arrays;
System.out.println(Arrays.toString(arr));
2、最值
求出数组元素的最大/小值
/**
* 求最值
* @author tarena
*
*/
public class ArrayMax {
public static void main(String[] args) {
// 定义数组
int[] arr = {2,6,5,4,9,8};
//选取第一个元素当参照物
int max = arr[0];
//遍历数组
for (int i = 1; i < arr.length; i++) {//下标范围
//判断大小
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println(max);
}
}
3、查找
给定查找数返回数组第一次出现的下标值
(1)普通查找
/**
* 数组查找
*
* @author tarena
*
*/
public class ArraySearch {
public static void main(String[] args) {
// 定义数组
int[] arr = {2,6,5,4,9,8};
//给定查找数
int num = 5;
//遍历数组,依次比较
for (int i = 0; i < arr.length; i++) {
//判断数组元素是否和查找数相等
if (arr[i] == num) {
System.out.println(i);
//已经找到了下标----结束循环
break;
}
}
}
}
/**
* 二分查找
* @author tarena
*
*/
public class ArraySearch1 {
public static void main(String[] args) {
//提供三个下标
int[] arr = {2,4,5,6,8,9};
int num = 7;
int min = 0;
int max = arr.length - 1;
int mid = (min + max) / 2;
//循环范围不确定
while (arr[mid] != num) {//中间下标对应的元素值和查找数不相等
//如果num大于中间下标对应的元素值
if (num > arr[mid]) {
min = mid + 1;
}
//如果num小于中间下标对应的元素值
if (num < arr[mid]) {
max = mid - 1;
}
//查找数不在数组判断条件
if (min > max) {
System.out.println("查无此数");
break;
}
//重新计算中间下标
mid = (min + max) / 2;
}
if (max >= min) {
System.out.println(mid);
}
}
}
/**
* 冒泡排序
* @author tarena
*
*/
public class MaoPao {
public static void main(String[] args) {
//定义数组
int[] arr={1,5,4,8,4,2,9,78,45};
//通过嵌套循环实现
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));
}
}
/**
* 选择排序
* @author tarena
*
*/
public class Select {
public static void main(String[] args) {
//定义数组
int[] arr={1,5,4,8,7,5,9,4,78};
//嵌套循环实现
for (int i = 1; i < arr.length-1; 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;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
(3)java工具排序
import java.util.Arrays;
Arrays.sort(arr);