一维数组 及 练习题
package com.atguigu.java;
/*
* 一:数组的概述
* 1.数组的概念:数组Array,是多个相同类型的数据,按照一定顺序排列的集合,并使用一个名字命名。
* 通过编号的方式,对这些数据进行统一管理。
*
* 2.数组相关的概念
* >数组名
* >数组的元素
* >角标、下标、索引
* >数组的长度:元素的个数
*
* 3.数组的特点:
* (1)数组是有序排列的
* (2)数组属于引用数据类型的变量。数组的元素:既可以是基本数据类型,也可以是引用数据类型。
* (3)创建数组对象会在内存中开辟一整块连续的空间
* (4)数组的长度,一旦确定,就不可以修改。
*
* 4.数组的分类:
* (1)按照维数:一维数组,二维数组.....多维数组
* (2)按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
*
* 5.一维数组的使用
* (1)一维数组的声明和初始化
* (2)如何调用数组的指定位置的元素
* (3)如何获去数组的长度
* (4)如何遍历数组
* (5)数组元素的默认初始化值
* (6)数组的内存解析******
*/
public class ArrayTest
{
public static void main(String[] args)
{
//1.一维数组的声明和初始化
int num;//声明
num = 10;//初始化
int id = 1001;//声明+初始化
int [] ids1;//声明
//1.1静态初始化:数组的初始化,和数组元素的赋值操作同时进行
int [] ids = new int [] {1001,1002,1003,1004};
//1.2动态初始化:数组的初始化,和数组元素的赋值操作分开进行
String [] names = new String [5];
//总结:数组一旦初始化完成,其长度就确定了
//2.如何调用数组的指定位置的元素: 通过角标额的方式调用
//数组的角标或是索引都是从0开始的,一直到数组的长度-1结束
names [0] = "王明";
names [1] = "王贺";
names [2] = "张学良";//charAt(0) 王
names [3] = "孙";
names [4] = "王";
//3.如何获取数组的长度.属性 length属性
System.out.println(names.length);//5
System.out.println(ids.length);//4
//4.如何遍历数组元素
System.out.println(names[0]);
for (int i = 0;i < names.length;i++)
{
System.out.println(names[i]);
}
//5.数组元素的默认初始化值
//>数组元素是整型:默认初始化值都是0 byte short int long
//>数组元素是浮点型:默认初始化是0.0
//>数组元素是char类型:默认初始值为0或者是'\u0000',而非'0';;但是控制台不显示0,因为显示出来的是
// String类型。
//>数组元素是boolean型:默认初始化值为:false!!!!(0)
//>数组元素是引用数据类型时:默认的数据类型是:String --- null 而不是"null"
int [] arr = new int [4];
for (int i = 0;i < arr.length;i++)
{
System.out.println(arr[i]);
}
short [] arr1 = new short [4];
for(int i = 1;i<arr1.length;i++)
{
System.out.println(arr1[i]);
}
float [] arr2 = new float[4];
for(int i = 0;i<arr2.length;i++)
{
System.out.println(arr2[i]);
}
double [] arr3 = new double[4];
for(int i = 0;i<arr3.length;i++)
{
System.out.println(arr3[i]);
}
char [] arr4 = new char[4];
for(int i = 0;i<arr4.length;i++)
{
System.out.println("----"+arr4[i]+"----");
}
boolean [] arr5 = new boolean[4];
for(int i = 0;i<arr5.length;i++)
{
System.out.println(arr5[i]);
}
String [] arr6 = new String[4];
for(int i = 0;i < arr.length;i++)
{
System.out.println(arr6[i]);
}
//6.数组的内存解析******
int [] arrs = new int[] {1,2,3};
String [] arre = new String [4];
arre[1] = "刘德华";
arre[2] = "张学友";
arre = new String[3];
}
}
练习题
package com.atguigu.exer;
/*
* 练习题1.输出电话号
*/
public class ArrayDemo
{
public static void main(String [] ags)
{
int [] arr = new int[] {8,2,1,0,3};
int [] index = new int[] {2,0,3,2,4,0,1,3,2,3,3};
String tel = "";
for(int i = 0; i<index.length;i++)
{
tel += arr[index[i]];
}
System.out.println("联系方式" + tel);//18013820100
}
}
package com.atguigu.exer;
import java.util.Scanner;
/*
* 从键盘读入学生的成绩,找出最高分,并输出学生的成绩等级
* 成绩 >= 最高分-10 等级A
* 成绩 >= 最高分-20 等级B
* 成绩 >= 最高扥-30 等级C
* 其余 等级D
*/
public class ArrayDemo1
{
public static void main(String[] args)
{
//使用scanner读取学生的个数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生的人数:");
int number = scanner.nextInt();
//创建数组,储存学生的成绩,动态初始化
int [] scores = new int [number];
//给数组中的元素赋值
System.out.println("请输入:" + number + "个学生成绩");
for(int i = 0;i<scores.length;i++)
{
scores[i] = scanner.nextInt();
}
//获取数组中元素的最大值:最高分
int maxScore = 0;
for(int i = 0;i<scores.length;i++)
{
if(maxScore < scores[i] )
{
maxScore = scores[i];
}
}
//根据每个学生的成绩,与最高分数的差值,得到每个学生的等级,并输出等级和成绩
char level;
for(int i = 0; i < scores.length;i++)
{
if(maxScore - scores[i] <= 10)
{
level = 'A';
}else if(maxScore - scores[i]<=20) {
level = 'B';
}else if(maxScore - scores[i]<=30) {
level = 'C';
}else {
level = 'D';
}
System.out.println("student" + i + ",score is" + scores[i] + ",grade is" + level);
}
}
}