1.0声明数组
数组属于对象,对象属于引用类型,引用类型的元素是自动初始化的。
在JAVA中,数组是唯一没有对象的类
在JAVA中,数组有length属性,字符串有length方法。
数组是固定长度的,一旦声明就不能修改和删除元素。
1.最简单的声明数组:
String[] aa1 = new String[3];
System.out.println(Arrays.toString(aa1));
输出结果为:[null,null,null
其余的声明方式(举几个例子):
int[] aa2 = {1, 2, 2};
long[] aa3 = new long[]{1, 2, 3};
char[] aa4 = new char[4];
Calendar[] ss = new Calendar[4];
数组的书写方式:
public class Arr3 {
public static void main(String[] args) {
int[] aa1 = new int[2];
int[] aa2 = new int[2];
int aa3[] = new int[2];
}
}
Java属于强类型语言,声明的什么类型数组,就放什么类型数组,放的不一样会报错
2.如何声明一个什么都可以的数组
var aa = new String[3];
java.lang.Object 系统类
java.lang 系统包
java 所有声明的类,都默认继承Object,是Object的子类
java开发中使用的类,java.lang包下的类,在任何情况都不导入,可以直接使用
Java所有对象的基类是object类,在Java.lang.Object包下,所有Java的对象和类都默认继承这个
Object[] obs = new Object[5];
obs[0] = 1;
obs[1] = .1;
obs[2] = new Date();
obs[3] = Calendar.getInstance();
obs[4] = new Scanner(System.in);
}
}
在Object下,可以直接写出定义的类型,无需进行数组格式的定义
Object o1 = "dfsf";
Object o2 = "51255";
Object o3 = "第三个第四个他";
System.out.println(o2);
System.out.println(o1);
System.out.println(o3);
2.0使用操作数组
遍历:从头到尾,依次访问数组每一个位置,获取每一个位置的元素.
三种遍历方式:
public static void main(String[] args) {
String[] ns = {"张三", "李四"};
System.out.println(Arrays.toString(ns));
//遍历1
for (var s : ns) {
System.out.print(s +" ");
}
System.out.println();
//遍历2
for(var i =0 ;i<ns.length;i++){
System.out.print(ns[i] +" ");
}
System.out.println();
//倒着遍历
for(var i =ns.length-1 ;i>=0;i--){
System.out.print(ns[i] +" ");
}
}
结果如下:
使用数组实现星期几效果
对于是否需要减一,要看当地的时区,中国时区需要减一
public static void main(String[] args) {
var wk = new String[]{
"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
var c = Calendar.getInstance();
var k = c.get(Calendar.DAY_OF_WEEK);
System.out.println(wk[k-1]);
}
计算指定年份是什么生肖年
String[] ss = new String[]{"猴","鸡","狗","猪","鼠","牛","虎","兔","龙","蛇","马","羊"};
int kk = 2023;
System.out.println(ss[kk%12]);
进行控制台输出指定年份的生肖:
tring[] aa = new String[]{"猴","鸡","狗","猪","鼠","牛","虎","兔","龙","蛇","马","羊"};
//int yy =2023;
Scanner sc = new Scanner(System.in);
System.out.print("请输入年份: ");
int yy = sc.nextInt();
System.out.println(aa[yy%12]);
3.0数组Arrays 求数组的最大小值,并在次排序
public static void main(String[] args) {
int[] nums = new int[10];
Random rand = new Random();
for (int i = 0; i < nums.length; i++) {
nums[i] = rand.nextInt(1, 101);
}
System.out.println(Arrays.toString(nums));
int max = nums[0];
int min = nums[0];
for (int i = 1; i < nums.length; i++) {
max = Math.max(max, nums[i]);
min = Math.min(min, nums[i]);
}
System.out.println("\033[36m最大值是: \033[36m" + max);
System.out.println("\033[35m最小值是: \033[35m" + min);
for (int i = 0; i < nums.length; i++) {
int a = rand.nextInt(nums.length);
int b = rand.nextInt(nums.length);
if (a==b) {
i--;
continue;
} else {
int t = nums[a];
nums[a] = nums[b];
nums[b] = t;
}
}
System.out.println(Arrays.toString(nums));
}
数组Arrays 求数组的排序方式
Integer[] nums = new Integer[10];
Random rand = new Random();
for (int i = 0; i < nums.length; i++) {
nums[i] = rand.nextInt(1, 101);
}
System.out.println("排序前:"+Arrays.toString(nums));
//升序
Arrays.sort(nums);
System.out.println("\033[36m排升序:\033[31m"+Arrays.toString(nums));
//降序
Arrays.sort(nums,(a,b)->b-a);
System.out.println("\033[33m排降序:\033[35m"+Arrays.toString(nums));
//洗牌 乱序
Arrays.sort(nums,(a,b)->Math.random()>.5?1:-1);
System.out.println("\033[33m排乱序:\033[35m"+Arrays.toString(nums));
}
冒泡算法:
public static void main(String[] args) {
var ns = new int[10];
var rand = new Random();
for ( int i = 0;i <ns.length;i++) ns[i] = rand.nextInt(1,101);
System.out.printf("排序前:%s%n", Arrays.toString(ns));
for(int m= 0 ;m<ns.length;m++){
for(int n = 0 ;n<ns.length-m-1;n++){
if (ns[n]>ns[n+1]){
int temp =ns[n];
ns[n]=ns[n+1];
ns[n+1]=temp;
}
}
}
System.out.printf("排升序:%s%n", Arrays.toString(ns));
for(int m= 0 ;m<ns.length;m++){
for(int n = 0 ;n<ns.length-m-1;n++){
if (ns[n]<ns[n+1]){
int temp =ns[n];
ns[n]=ns[n+1];
ns[n+1]=temp;
}
}
}
System.out.printf("排降序:%s%n", Arrays.toString(ns));
for (int i = 0;i<ns.length;i++){
int a =rand.nextInt(ns.length);
int b =rand.nextInt(ns.length);
if (a==b){
i--;
continue;
}else {
int t = ns[a];
ns[a]=ns[b];
ns[b]=t;
}
}
System.out.printf("排乱序:%s%n", Arrays.toString(ns));
}