java从入门到放弃06

    科技2024-12-20  7

    数组

    一。一维数组的声明和初始化 声明方式:

    String[] names; int age[];

    静态初始化:初始化和赋值同时进行

    names = new String[]{"aa","cc"}; //下面的声明和初始化不能分开进行 String[] ps = {"aa","cc"};

    动态初始化:初始化和赋值分开进行

    String[] ps = new String[3]; //3指的是数组的长度

    注意:无论是静态初始化还是动态初始化数组一旦创建成功长度不可变。

    二. 调用数组中的元素 : 通过索引值调用数组中的元素。索引值(下角标)是从0开始到(数组的长度-1) int[] numbers = {1,2,3,4,5};

    取值:

    int n = numbers[0];

    赋值:

    numbers[0] = 100;

    三. 数组的属性 – length(数组的长度) String[] persons = {“小苍”,“小波”,“小饭”};

    int len = persons.length;

    四. 数组的遍历 : 根据数组的索引值进行遍历 String[] persons = {“小苍”,“小波”,“小饭”};

    for(int i = 0; i < persons.length; i++){

    System.out.println(persons[i]);

    } 五. 数组元素的默认值 byte short int long -> 0 float double -> 0.0 char -> \u0000 boolean -> false 引用数据类型(数组,接口,类) -> null

    案例1:

    package com.atguigu.java; /** 数组 :相同数据类型的组合 说明: 1.数组是引用数据类型 2.数组中的元素可以是基本数据类型也可以是引用数据类型。 */ public class ArrayTest { public static void main(String[] args) { //1.数组的声明和初始化 String[] names; //建议使用第一种声明类型 int age[]; //初始化 //①静态初始化 :初始化和赋值同时进行 names = new String[]{"小泽老师","小苍老师","小波老师","小泷老师"}; //下面的方式:声明和初始化不能分开写 int[] score = {1,20,100,90}; //②动态初始化 :初始化和赋值分开进行(先不放数据) age = new int[5]; //5指的是数组的长度(可以放几个元素) //2.获取数组中的元素:通过使用数组的下角标(索引值)来获取 //下角标(索引值)是从0开始的到数组的长度 - 1 //获取数组中的数据: String name = names[1]; //用name承接取出来的值 System.out.println(name); //给数组中的元素赋值 age[0] = 1000; System.out.println(age[0]); //3.数组的属性 :length - 数组的长度 int len = age.length; System.out.println(len); System.out.println(names.length); //4.遍历数组中的所有元素 for(int i = 0; i < names.length; i++){//0 ~ 3 System.out.println(names[i]); } System.out.println("---------------------------------------"); //5.数组元素的默认值 /* * byte,short,int,long -> 0 * * float,double -> 0.0 * * char -> \u0000 * * boolean -> false * * * 引用数据类型 :null * */ byte[] b = new byte[2]; System.out.println(b[0]); System.out.println(age[2]); boolean[] bs = new boolean[2]; System.out.println(bs[0]); char[] cs = new char[2]; System.out.println("ddd"+ cs[0] + "acc"); String[] str = new String[2]; System.out.println(str[0]); } }

    案例2:一维数组的内存解析

    package com.atguigu.java; /** * 一维数组的内存解析 */ public class ArrayTest2 { public static void main(String[] args) { String[] names = new String[3]; names[0] = "吴京"; names[2] = "章子怡"; String[] names2 = names; names2[1] = "志玲"; names2 = new String[3]; for(int i = 0; i < names.length; i++){ System.out.println(names[i]); } System.out.println("-------------names2----------------"); for(int i = 0; i < names2.length; i++){ System.out.println(names2[i]); } } }

    练习1:

    package com.atguigu.exer; /** 需求:创建一个char类型的26个元素的数组,分别 放置'A'-'Z‘。 使用for循环访问所有元素并打印出来。 提示:char类型数据运算 'A'+1 -> 'B','0'+1 -> ‘1‘ */ public class ExerTest1 { public static void main(String[] args) { //创建一个数组 char[] cs = new char[26]; char c = 'A'; //使用循环赋值 for (int i = 0; i < cs.length; i++) { cs[i] = c; c += 1; } //遍历数组中的内容,输出 for (int i = 0; i < cs.length; i++) { System.out.println(cs[i]); } } }

    练习2:

    package com.atguigu.exer; /* * 创建一个char类型的36个元素的数组,前26个元素放置'A'-'Z‘,后10个元素放置'0'-'9‘。 */ public class ExerTest2 { public static void main(String[] args) { //思路和步骤如下: //1.创建数组 char[] cs = new char[36]; char c = 'A'; char number = '0'; //2.给数组赋值 for (int i = 0; i < cs.length; i++) { if(i < 26){ cs[i] = c; c += 1; }else{ cs[i] = number; number += 1; } } //3.遍历数组,打印 for (int i = 0; i < cs.length; i++) { System.out.println(cs[i]); } } }

    案例3:

    package com.atguigu.exer; import java.util.Scanner; /* * 输入五名同学成绩,求出总成绩和平均成绩 快捷键 :ctrl + 1 */ public class ExerTest3 { public static void main(String[] args) { //创建数组用来存储成绩 int[] scores = new int[5]; //创建Scanner的对象用来读取键盘输入的数据 Scanner scanner = new Scanner(System.in); //存储学生成绩 for (int i = 0; i < scores.length; i++) { System.out.println("请输入学生的成绩"); int score = scanner.nextInt(); //把成绩放入到数组中 scores[i] = score; } //输出学生的总成绩和平均成绩 int sum = 0; for (int i = 0; i < scores.length; i++) { sum += scores[i]; } System.out.println("总成绩:" + sum + " 平均成绩:" + sum / scores.length); } }

    案例4:

    package com.atguigu.exer; /* * 小明要去买一部手机,他询问了4家店的价格,分别是2800.5元,2900元,2750.0元和3100元,显示输出最低价 */ public class ExerTest4 { public static void main(String[] args) { //存储所有人的价格 double[] price = {2800.5,2900,2750.0,3100}; double minPrice = price[0];//用来记录最低价格 //循环遍历,寻找最小价格 for (int i = 0; i < price.length; i++) { //取出数组中的每一个值 double p = price[i]; //比较价格 if(minPrice > p){ //记录比较后的低的价格 minPrice = p; } } System.out.println("最低价格为 : " + minPrice); } }

    案例5:

    package com.atguigu.exer; import java.util.Scanner; /* * 输入10个元素(10——99范围),保存到数组中,查找里面是否有>80,如果有,显示有,否则提示没有 */ public class ExerTest5 { public static void main(String[] args) { //1.创建一个数组长度为10 int[] numbers = new int[5]; //2.读取数据 - 并将数据存放到数组中 Scanner sc = new Scanner(System.in); for(int i = 0; i < numbers.length; i++){ System.out.println("请输入一个数"); /* int number = sc.nextInt(); numbers[i] = number; */ numbers[i] = sc.nextInt(); } //3.遍历数组-查找大于80的数据,如果有如果有,显示有,否则提示没有 boolean boo = false; //true表示有大于80的,false则表示没有 for (int i = 0; i < numbers.length; i++) { int num = numbers[i]; if(num > 80){ boo = true; break; } } //只要判断boo的值就可以推断出来是否有 if(boo){ System.out.println("有"); }else{ System.out.println("没有"); } } }

    案例6:

    package com.atguigu.exer; import java.util.Scanner; /* * 随机产生10个元素(10——99范围),保存到数组中,查找里面是否有>80,如果有,显示有,否则提示没有 */ public class ExerTest6 { public static void main(String[] args) { /* //random()产生一个随机数 ,数值范围[0.0,1.0) for (int i = 0; i < 50; i++) { System.out.println((int)(Math.random() * 90) + 10); } */ //1.创建一个数组长度为10 int[] numbers = new int[5]; for(int i = 0; i < numbers.length; i++){ System.out.println("请输入一个数"); numbers[i] = (int)(Math.random() * 90 + 10); } //3.遍历数组-查找大于80的数据,如果有如果有,显示有,否则提示没有 boolean boo = false; //true表示有大于80的,false则表示没有 for (int i = 0; i < numbers.length; i++) { int num = numbers[i]; if(num > 80){ boo = true; break; } } //只要判断boo的值就可以推断出来是否有 if(boo){ System.out.println("有"); }else{ System.out.println("没有"); } } }

    3.常见算法

    package com.atguigu.java2; import java.util.Arrays; /* 数组中常见的算法: 2. 求数值型数组中元素的最大值、最小值、平均数、总和等 3. 数组的复制、反转、查找(线性查找、二分法查找(了解)) 4. 数组元素的排序算法 */ public class ArrayAriTest { public static void main(String[] args) { int[] numbers = {10,20,6,5,3}; //求数值型数组中元素的最大值 int maxNumber = numbers[0]; for (int i = 1; i < numbers.length; i++) { if(maxNumber < numbers[i]){ maxNumber = numbers[i]; } } System.out.println("最大值:" + maxNumber); //求数值型数组中元素的最小值 int minNumber = numbers[0]; for (int i = 1; i < numbers.length; i++) { if(minNumber > numbers[i]){ minNumber = numbers[i]; } } System.out.println("最小值:" + minNumber); //求数值型数组中元素的和 ,平均数 int sum = 0; for (int i = 0; i < numbers.length; i++) { sum += numbers[i]; } System.out.println("sum=" + sum + " 平均数:" + sum/numbers.length); //数组的复制 int[] copyNumbers = new int[numbers.length]; for (int i = 0; i < copyNumbers.length; i++) { copyNumbers[i] = numbers[i]; } //输出数组中的元素 copyNumbers[0] = 100; //思考 :如果修改了copyNumbers中的数据,numbers中的数据发生变化没? 没有 String str = Arrays.toString(numbers);//Arrays是操作数组的一个工具类 System.out.println("numbers=" + str); System.out.println("copyNumbers=" + Arrays.toString(copyNumbers)); } } package com.atguigu.java2; import java.util.Arrays; /* 数组的反转、查找(线性查找、二分法查找(了解)) */ public class ArrayAriTest2 { public static void main(String[] args) { int[] numbers = {10,20,6,5,3}; //数组的反转 - 创建一个新的数组(倒序查找原来的数组,正序存放数组中的元素) int[] reverseNumbers = new int[numbers.length]; //倒着遍历numbers for(int i = numbers.length - 1; i >=0; i--){ reverseNumbers[numbers.length - 1 - i] = numbers[i]; } //输出数组中的元素 // System.out.println(Arrays.toString(reverseNumbers)); System.out.println("---------------------------------------------------"); //第二种方式 for(int i = 0,j = numbers.length - 1; i < numbers.length / 2; i++,j--){ //数据交换 int temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } System.out.println(Arrays.toString(numbers)); } } package com.atguigu.java2; import java.util.Arrays; /* 数组的反转、查找(线性查找、二分法查找(了解)) */ public class ArrayAriTest2 { public static void main(String[] args) { int[] numbers = {10,20,6,5,3}; //数组的反转 - 创建一个新的数组(倒序查找原来的数组,正序存放数组中的元素) int[] reverseNumbers = new int[numbers.length]; //倒着遍历numbers for(int i = numbers.length - 1; i >=0; i--){ reverseNumbers[numbers.length - 1 - i] = numbers[i]; } //输出数组中的元素 // System.out.println(Arrays.toString(reverseNumbers)); System.out.println("---------------------------------------------------"); //第二种方式 for(int i = 0,j = numbers.length - 1; i < numbers.length / 2; i++,j--){ //数据交换 int temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } System.out.println(Arrays.toString(numbers)); } } package com.atguigu.java2; /* * 查找(线性查找、二分法查找(了解)) */ public class ArrayAriTest3 { public static void main(String[] args) { int[] numbers = {10,20,6,5,3}; //线性查找 int findNumber = 20;//要查找的内容 int index = -1;//用来记录查找到的数值的索引位置 for (int i = 0; i < numbers.length; i++) { if(findNumber == numbers[i]){ //如果查找到,记录下该索引的位置 index = i; break; } } //判断是否查找到了 if(index == -1){ System.out.println("亲!!没有找到您想要的内容哦"); }else{ System.out.println("您的数据在" + index + "索引位置"); } } } package com.atguigu.java2; import java.util.Arrays; /* * 有时间就看一下,没时间就算了 (了解) */ public class BinarySearch { public static void main(String[] args) { int[] number = { 12, 30, -5, 6, 9, 10, 5 }; //排序 Arrays.sort(number); // 必须排序好 System.out.println(Arrays.toString(number)); int findNumber = 12; // 要查找的内容 int start = 0; //起始位置 int end = number.length - 1; //结束的位置 int index = -1; // 所在的元素位置 while (start <= end) { int mid = (start + end) / 2; if (number[mid] == findNumber) { index = mid; break; } else if (number[mid] < findNumber) { start = mid + 1; } else { end = mid - 1; } } if (index == -1) { System.out.println("没有找到您需要的内容"); } else { System.out.println("元素所在的位置" + index); } } } package com.atguigu.java2; import java.util.Arrays; /* * 有时间就看一下,没时间就算了 (了解) */ public class BinarySearch { public static void main(String[] args) { int[] number = { 12, 30, -5, 6, 9, 10, 5 }; //排序 Arrays.sort(number); // 必须排序好 System.out.println(Arrays.toString(number)); int findNumber = 12; // 要查找的内容 int start = 0; //起始位置 int end = number.length - 1; //结束的位置 int index = -1; // 所在的元素位置 while (start <= end) { int mid = (start + end) / 2; if (number[mid] == findNumber) { index = mid; break; } else if (number[mid] < findNumber) { start = mid + 1; } else { end = mid - 1; } } if (index == -1) { System.out.println("没有找到您需要的内容"); } else { System.out.println("元素所在的位置" + index); } } } package com.atguigu.java2; import java.util.Arrays; /** 冒泡排序 */ public class BubbleSortTest { public static void main(String[] args) { int[] numbers = {10,20,6,5,3}; //控制几轮 {0,1,2,3,4} for (int i = 0; i < numbers.length - 1; i++) { //控制每轮比较的次数 {第一轮的j的值 :0,1,2,3 } for (int j = 0; j < numbers.length - 1 - i; j++) { //判断是否需要交换 if(numbers[j] > numbers[j + 1]){ //数据交换 int temp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = temp; } } } //输出数组中的数据 System.out.println(Arrays.toString(numbers)); } }
    Processed: 0.027, SQL: 8