一。一维数组的声明和初始化 声明方式:
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]); } }练习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("没有"); } } }