第三章.Java数组
1.基本用法
-
引入:
-
变量 是内存的一块空间 存储一个值
-
数组 也是内存的一块连续空间 存储多个值
-
-
标识符:
- 变量名 数组名 类名…
-
基本要素:
- 标识符:数组的名称,用于区分不同的数组
- 数组元素:向数组中存放的数据(内容)
- 元素下标:对数组元素进行编号,从0开始,数组的每个元素都可以通过下标来访问
- 元素类型:数组元素的数据类型
- 数组长度固定不变,避免数组越界
-
优点:
- 便于阅读
-
使用步骤:
- 声明数组:告诉计算机数据类型是什么
数据类型 数组名[];
- 数据类型 [] 数组名;(建议这样写)
- int[]a;
- int a [];
- 声明数组时不用规定数组长度
- 分配空间:告诉计算机数据分配多少空间
数组名 = new 数据类型[大小];
- 声明数组并分配空间
数据类型[] 数组名 = new 数据类型[大小];
- a = new int[5];
- //有new是分配空间
- 要5个类型的
- 赋值: 向分配的格子里放数据
- a [0] = 8;
- [下标]
- 边声明分配边赋值(不能指定数组长度)
数据类型[] 数组名 = new 数据类型[]{数值};
- int[] arr1 = new int[]{1,2,3,4,};
- 简写为:int[] arr1 = {1,2,3,4,};
- 当利用{}赋值时,必须在声明分配空间一条语句中,不能换行
- 动态地从键盘录入信息并赋值
- 数据下标从0开始
- 数组有长度属性(数组名字去点)
- .length - 处理数据:
- a [0] = a[0] * 10;
- 声明数组:告诉计算机数据类型是什么
816027383)]
- 处理数据:
- a [0] = a[0] * 10;
2.数组排序
- 引入
java.util.Arrays
- 导入语句简写:
import java.util.*
(导入多个语句) - 格式:
-Arrays.sort(数组名);
-
import java.util.Arrays;
public class ArrEq2{
public static void main(String[] args){
int[] arr = { 2,34,56,7,7,64,7,2,5,25,3,523};
//排序一下数组
Arrays.sort(arr);
for(int i = 0; i< arr.length; i ++){
System.out.println(arr[i]);
}
//降序显示
System.out.println("降序显示");
for( int i = arr.length - 1;i >= 0; i--){
System.out.println(arr[i]);
}
}
}
3.方法
(/开头unicode编码)
import java.util.Arrays;
public class ArrEq2{
public static void main(String[] args){
//数组的相关工具类方法
int [] arr1 = {12,34,56};
int [] arr2 = new int[]{12,34,66};
int [] arr3 = new int[]{12,34,56,0};
int [] arr4 = new int[]{56,34,12};
//比较数组内容是否一致
System.out.println("arr1与arr2相等吗"+ Arrays.equals(arr1,arr2));
System.out.println("arr1与arr3相等吗"+ Arrays.equals(arr1,arr3));
System.out.println("arr1与arr4相等吗"+ Arrays.equals(arr1,arr4));
Arrays.sort(arr4);
System.out.println("arr4排完序");
System.out.println("arr1与arr4相等吗"+ Arrays.equals(arr1,arr4));
//数组转字符串
String arrStr = Arrays.toString(arr3);
System.out.println(arrStr);
//填充数据
int[] arr5 = new int[5];
arr5[3] = 100;
Arrays.fill(arr5,99);
//复制数组(比原本的长或短都可以复制成功)
int[] arr6 = Arrays.copyOf(arr5,3);
int[] arr7 = Arrays.copyOf(arr5,10);
//查询数组中元素的位置
int[] arr8 = {1,2,3,4,5,9,13,23};
//查询4的位置
//binarySearch 数组一定要升序排列
System.out.println(Arrays.binarySearch(arr8,4));
}
}
4.增强型for循环
- 格式:
for (表达式1:表达式2){
}
表达式1:与数据或集合`类型相同`的变量
表达式2:数组或集合类型
//变量和数组同一类型或者高一级
eg://增强型for
int[] arr8 = {1,2,3,4,5,9,13,23};
for(int a : arr8){
System.out.println(a);
}
System.out.println("___________________________________");
for(int i = 0;i < arr8.length;i ++){
System.out.println(arr8[i]);
}
- 区别:
- 增强型必须从0开始,全部循环
- (从头到尾) - 基础可以选择开始位置
- (有选择)
- 增强型必须从0开始,全部循环
5.冒泡排序
import java.util.*;
public class ArrayEq7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//冒泡 排序
int[] arr = {76,54,65,75,45};
//找最大值,并交换位置
//for(int i = 1; i < arr.length ; i++) {
//if(arr[0] < arr[i]) {
//int temp = arr[0];
//arr[0] = arr[i];
//arr[i] = temp;
//}
//}
for(int j = 0 ; j < arr.length ; j++) {//求出每一轮
for(int i = j+1; i < arr.length ; i++) {//j+1 每个都是与后面的值比较
if(arr[j] > arr[i]) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
6.练习题
1.插入成绩并排序
- 有一组学员的成绩{99,12,44,67,86},将它们升序排列.要增加一个学员的成绩,将它插入成绩序列,并保持排序
//变六位
//public static void main(String[] args) {
//Scanner input = new Scanner(System.in);
//int [] arr = {14,54,534,3,24,0};//0,3,14,24,54,534//变为六位
////排序一下
//Arrays.sort(arr);
//System.out.println("请输入插入的成绩");
//int score = input.nextInt();
//
////得到插入的下标位置
////设定默认插入的位置
//int index = arr.length;//插到后面的位置
//for(int i = 0 ; i < arr.length ; i ++) {
//if(arr[i]>score) {
//index = i;
//break;
//}
//}
////移位操作
//for(int i = 1;i < index;i++) {
//arr[i -1] = arr[i];
//}
////插入
//arr[index - 1] = score;//index-1 因为arr[i]没动,index=i
//System.out.println(Arrays.toString(arr));
//
//}
//
//
//}
// 新建数组
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int [] arr = {14,54,534,3,24};//3,14,24,54,534
//排序一下
Arrays.sort(arr);
int [] newArr = Arrays.copyOf(arr,arr.length+1);//原数组排序后补0
System.out.println("请输入插入的成绩");//25
int score = input.nextInt();
//设置默认操作下标
int index = -1;
for(int i =0 ; i < newArr.length ; i++) {
if (score < newArr[i]) {
index = i;
break;
}
}
//循环往后面开始移
for (int i = newArr.length-2 ; i>= index ;i--) {//减一个移一个
newArr[i+1] = newArr[i];//原本值位置后移一位
}
//填充值
newArr[index] = score;
System.out.println(Arrays.toString(newArr));
}
}
原文地址:https://blog.csdn.net/pound127/article/details/143224981
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!