// 数据类型
/*1.基本数据类型:byte short int long float double char boolean
*2.引用数据类型:①类 (String Scanner Random Math..)②接口 ③数组
* 数组:1它能保存一组数据类型相同的数据,我们把数组保存的数据成为元素 2定长(固定长度)
* 如何声明,创建一个数组
*/
//声明
// int arr[] ;
// new: 开辟堆内存的操作符
int arr[] = new int[5]; //5代表的是数组长度 运行过程中不可变
//数据元素的访问--通过索引值(下标值) 下标值从0开始,长度为n的数组,下标值从0到n-1
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
}
double arr[] = new double[4];
System.out.println(arr[0]);
arr[0] =1.2;
System.out.println(arr[0]);
//1.数组有默认值 (整型 0 浮点型0.0 字符型\u0000 不二选哪个false 字符串行null
//2.长度必须指定
//2.new关键字
char arr1[] = new char[3];
arr1[0] = 'a';
int arr[] = new int[5];
int newarr[] = arr;
arr[1] = 11;
System.out.println(newarr[1]);
//数组创建方式
// 1.
int arr1[] = new int[3];
arr1[0] = 1;
arr1[1] = 3;
arr1[2] = 9;
// 2.
int arr2[] = new int[] {1,3,9};
// 3.
int arr3[] = {1,3,9};
//注意:一些错误的声明方式
// int arr[5] = new int[];
// int arr2[] = new int[3] {1,3,9};
// int arr[3] = {1,3,9};
}
// 数组的遍历 将数组当中元素逐个取出来
int arr[] = {4,7,23,5,8,9,0,-5};
// 数组长度
System.out.println(arr.length);
//遍历
for(int i = 0;i<arr.length;i++) {
System.out.println(arr[i]);
}
String str[] = {"a","b","c","d","e","f","g"};
System.out.println(str.length);
for(int a = 0;a<str.length;a++) {
System.out.println(str[a]);
}
// 二维数组,数组当中存数组
int arr1[] = {1,2,3,4,5};
int arr2[][] = {
{1,2,3},
{4,5},
{6,7}
};
int arr[][]= new int[3][];//前面的括号代表长度,后面括号无影响
// 将一个数组逆序打印
// int arr1[] = new int[] {1,2,3,4,5};
// for(int i=arr1.length-1;i>=0;i--) {
// System.out.println(arr1[i]);
// }
// 将一个数组中的元素逆序存放
int arr2[] = new int[] {1,2,3,4,5};
for(int i=0;i<arr2.length;i++) {
if(i+1 == arr2.length-(i+1)){
arr2[i]=arr2[arr2.length-(i+1)];
}
System.out.println(arr2[i]);
// 模拟35选7 生成七个不同的1-35之间的数字
boolean b[] = new boolean[35];//35个false
Random ran= new Random();
for(int i = 0;i<7;i++) {
//生成一个1-35之间的数字
int num = ran.nextInt(35)+1;
//判断是否生成过,到b在各个数组中检查下标为num-1对应元素是否为true
if(b[num-1]) {
i--;
}
else {
//表示生成过
b[num-1]=true;
System.out.println(num);
}
}
// 编写一个长度为5的整型数组,每个元素赋值为0-10的随机整数,
// 遍历该数组,输出每个元素。
Random ran = new Random();
int arr[] = new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = ran.nextInt(11);
System.out.println(arr[i]);
}
public static void main(String[] args) {
int[][]arr1 = new int[3][];
arr1[0]=new int[3];
arr1[0][0] = 10;
arr1[0][1] = 11;
arr1[0][2] = 12;
arr1[1]=new int[1];
arr1[1][0] = 20;
arr1[2]=new int[2];
arr1[2][0] = 30;
arr1[2][1] = 31;
// int arr2[][] = new int[][] {{10,11,12},{20},{30,31}};
// int []arr3[] = {{10,11,12},{20},{30,31}};
//二维数组的遍历
for(int i = 0;i<arr1.length;i++) {
for(int j = 0;j<arr1[i].length;j++) {
System.out.print(arr1[i][j]+" ");
}
System.out.println();
}
}
// 数组的排序
int arr[] = {12,1,55,7,89,32};
//1.冒泡排序
for(int i = 1;i<arr.length;i++) {
for(int j = 0;j<arr.length-i;j++) {
if(arr[j]<arr[j+1]) {
int a;
a = arr[j];
arr[j] = arr[j+1];
arr[j+1] = a;
}
}
}
for(int num :arr) {
System.out.println(num);
}
//2.选择排序
for(int i = 0;i<arr.length-1;i++) {
for(int j = i+1;j<arr.length;j++) {
if(arr[i]>arr[j]) {
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int num :arr) {
System.out.println(num);
}
// 快速排序
// int arr[] = {12,1,55,7,89,32};
// Arrays.sort(arr);
// for(int num :arr) {
// System.out.println(num);
// }
//数组复制
int arr1[] = {1,2,3,4,5};
int arr2[] = {6,7,8,9,10,11,12,13,14,15};
System.arraycopy(arr1, 2, arr2, 2, 3);
for(int num :arr2) {
System.out.println(num);
}