一维数组
数组:一组相同数据类型的元素,存储的容器 数组特点: 1.长度一经声明则无法修改,长度固定 2.存储的元素,数据类型一致的 3.数组里可以存放像:基本数据类型、引用数据类型这样的元素 4.通过下标进行存取,下标的范围:0~length-1 一维数组 1.声明的语法: 数据类型[] 数组名 = new 数据类型[数组长度]; 2.赋值的语法: 数据类型[] 数组名 = new 数据类型[3]; 数据类型[] 数组名 = new 数据类型[]{值1,值2,值3}; 数据类型[] 数组名 = {值1,值2,值3}; 3.取值 数组名[下标] //下标 0~len-1 4.赋值 数组名[下标]=值; //下标 0~len-1 5.循环遍历 方式一:fori for(int i=0;i<数组名.length;i++){ //数组名[i] } 方式二:foreach for(数据类型 临时变量名 : 数组名){ //临时变量名 } 方式三:Stream流
public class OneArrayDemo {
public static void main(String[] args) {
//一.声明数组
//arr int一维数组类型
//arr中的元素,int类型
int[] arr = new int[3]; //0,0,0
//brr char一维数组类型
//brr中的元素,char类型
char[] brr = {'a','b','c','d'};
//二.取值
System.out.println(arr[1]); //0
System.out.println(brr[2]); //c
//三.赋值
arr[1] = 20;
System.out.println(arr[1]); //20
//四.迭代
System.out.println("------fori-------");
//arr.fori 快捷调用
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); //0 20 0
}
System.out.println("------foreach------");
//arr.for 快捷调用
for (char b : brr) {
System.out.println(b);
}
System.out.println("--------数组间的赋值---------");
int[] newArr = arr;
for (int n : newArr) {
System.out.println(n); //0 20 0
}
System.out.println(arr == newArr); //== 比较的是地址 true
System.out.println("-----赋值------");
newArr[2] = 30;
for (int n : newArr) {
System.out.println(n); //0 20 30
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); //0 20 30
}
}
}
Arrays类
package day04;
import java.util.Arrays;
//冒泡排序
public class BubbleDemo {
public static void main(String[] args) {
//1.声明一维数组
int[] arr = {12,42,36,9,16,1,23};
//2.冒泡排序
for (int i = 0; i <arr.length-1; i++) { //i 轮数
for (int j = 0; j <arr.length-1-i ; j++) { //j 次数
//交换的条件
if(arr[j] > arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
//3.输出
System.out.println(Arrays.toString(arr));
}
}
有一个数列:1,2,4,8,12,23,344,此时从键盘中任意输入一个数据,判断数列中是否包含此数
public class BinaryDemo {
public static void main(String[] args) {
int[] arr = {1,2,4,8,12,23,344};
// 下标
int left = 0;
int right = arr.length - 1;
int middle = 0;
//key
Scanner scanner = new Scanner(System.in);
System.out.println("输入关键字:");
int key = scanner.nextInt();
boolean flag = true;
//只要满足此条件,可以一直循环比较
while(left <= right){
//计算middle
middle = (left+right)/2;
//比较 将key与arr[middle]进行比较
if(arr[middle] > key){
right = middle - 1;
}else if(arr[middle] < key){
left = middle + 1;
}else if(arr[middle] == key){
flag = false;
System.out.println("包含");
break;
}
}
if(flag){
System.out.println("不包含");
}
}
}