【JAVA】|JAVA语言基础----数组

JAVA基本语法

跳转控制语句

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)

数组内存图1
在这里插入图片描述

数组内存图2
系统默认初始值优先于程序默认初始值先存在
在这里插入图片描述

数组内存图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]);
}

(2)增强for循环遍历
在这里插入图片描述

相当于把数组的值一次赋值给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;
			}
		}

	}

}

(2)二分查找
在这里插入图片描述

/**
 * 二分查找
 * @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);
		}
		
		}
	}

4、排序
给元素值排列顺序 冒泡、选择
(1)冒泡排序
在这里插入图片描述

/**
 * 冒泡排序
 * @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));

	}

}

(2)选择排序
在这里插入图片描述

/**
 * 选择排序
 * @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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值