数组
一、Random随机数【重点】
1)导包
import java.util.Random;
2)创建Random对象
Random r=new Random();
3)接收随机数
int num=r.nextInt(10);//随机数的范围:[0,10)
//生成1-100之间的随机数
int num=r.nextInt(100)+1; //随机数的范围:[1,100]
案例1:猜数字小游戏
生成一个随机数1-100之间的随机数用num,键盘录入一个整数myNum,猜这个数
如果myNum比num大,输出"猜大了"
如果myNum比num小,输出"猜小了"
如果myNum和num相等,输出"恭喜你,猜中了"
如果猜错了,可以重复猜多次
public class RandomDemo1{
public static void main(String[] args){
//生成一个随机数1-100之间的随机数用num
Random r=new Random();
int num=r.nextInt(100)+1;
/*
循环的猜这个数
如果myNum比num大,输出"猜大了"
如果myNum比num小,输出"猜小了"
如果myNum和num相等,输出"恭喜你,猜中了"
*/
while(true){
//键盘录入一个整数myNum
Scanner sc=new Scanner(System.in);
int myNum=sc.nextInt();
if(myNum>num){
System.out.println("猜大了");
}else if(myNum<num){
System.out.println("猜小了");
}else{
System.out.println("恭喜你,猜中了");
}
}
}
}
二、数组【重点】
概述:数组用于存储多个相同数据类型的元素
1)数组的定义格式
a:数据类型[] 数组名;
举例:int[] arr; 【推荐格式】
b:数据类型 数组名[]; 【不推荐格式】
举例:int arr[];
2)数组的初始化【重点】
a:动态初始化
给定长度,由系统分配元素初始化值
举例:int[] arr=new int[3];//数组长度为3,每一个元素的初始值为0
b:静态初始化
给定元素初始值,由系统分配长度
举例:int[] arr=new int[]{1,2,3};
int[] arr={1,2,3};
3)获取数组中的元素【重点】
数组中每一个元素都有一个索引,索引从0开始,最大索引为长度-1
举例:
int[] arr=new int[3];
arr 存储的是数组的地址值
arr[0] 表示第一个元素
arr[1] 表示第二个元素
arr[2] 表示第三个元素
4)Java的内存分配【了解】
所有的程序在运行的时候,数据都是存储在内存中,为了方便对数据进行管理和维护,Java把内存分为几块区域
栈:
存储的是局部变量(定义在方法中的变量)
用完了,立即回收
堆:
存储的是new出来东西(对象,实体)
特点:
a:new出来的东西都有地址值
b:默认初始值
byte short int long 0
float double 0.0
char '\u0000'
boolean false
引用类型 null;
c:使用完毕,会被垃圾回收器空闲的时候回收
方法区:
静态数据,常量
5)数组的两个小问题【重点】
a:ArrayIndexOutofBoundsException,数组索引越界异常
产生原因:没有找到对应的索引
b:NullPointerException,空指针异常
产生原因:数组为null,而去访问数中的元素
三、数组的练习题
1)遍历数组中所有的元素【重点】
public class ArrayTest1{
public static void main(String[] args){
int[] arr={1,2,3,4,5};
//arr.length: 获取数组的长度
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
2)定义一个int类型数组,元素为{77,44,55,66,88},求所有元素的和
public class ArrayTest2{
public static void main(String[] args){
//定义一个int类型数组,元素为{77,44,55,66,88}
int[] arr={77,44,55,66,88};
//求所有元素的和
int sum=0;//定义求和变量
//遍历所有需要求和的元素
for(int i=0;i<arr.length;i++){
//和sum累加
sum+=arr[i];
}
System.out.println("所有元素和为:"+sum);
}
}
、
3)定义一个int[]数组,元素为{77,44,55,66,88},求数组中元素的平均值
public class ArrayTest3{
public static void main(String[] args){
int[] arr={77,44,55,66,88};
//定义一个和值
int sum=0;
//遍历数组
for(int i=0;i<arr.length;i++){
//获取每一个元素arr[i]和sum累加
sum+=arr[i];
}
//求平均值
int avg=sum/arr.length;
System.out.println("数组中元素的平均值为:"+avg);
}
}
4)获取数组中元素的最大值
int[] arr={77,88,66,99,55};
/*
思路:
a:获取数组中的某一个元素,假设它是最大值max
b:遍历所有元素和max进行比较,把大的值赋值给max
c:遍历完成之后,max记录的就是最大值。
*/
public class ArrayTest4{
public static void main(String[] args){
int[] arr={77,88,66,99,55};
//获取数组中的某一个元素,假设它是最大值max
int max=arr[0];
//遍历所有元素和max进行比较,把大的值赋值给max
for(int i=0;i<arr.length;i++){
if(arr[i]>max){
//把大的值赋值给max
max=arr[i];
}
}
//遍历完成之后,max记录的就是最大值。
System.out.println("最大值为:"+max);
}
}
5)定义长度为8的int类型数组,随机生成8个范围在[1,100]的元素,求所有元素的和,以及平均值
public class ArrayTest5{
public static void main(String[] args){
//定义长度为8的int类型数组
int[] arr=new int[8];
//随机生成8个整数,赋值给数组中的元素
for(int i=0;i<arr.length;i++){
Random r=new Random();
int num=r.nextInt(100)+1;
//把生成的随机数,赋值给每一个元素
arr[i]=num;
}
//求数组中所有元素的和
int sum=0;//定义求和变量
//遍历所有需要求和的元素
for(int i=0;i<arr.length;i++){
//和sum累加
sum+=arr[i];
}
//求平均值
int avg=sum/arr.length;
System.out.println("所有元素的和为:"+sum);
System.out.println("所有元素的平均值为:"+avg);
}
}
选择排序
冒泡排序
二分法
四、二维数组【了解】
理解:数组中的元素也是一个一维数组
1)二维数组的定义格式
a:动态初始化
数据类型[][] 数组名=new 数据类型[m][n];
m:二维数组中有多少个一维数组
n:每一个一维数组中有多少个元素
举例:
int[][] arr=new int[3][2];
//定义一个二维数组,数组名为arr
//二维数组中有3个一维数组
//每一个一维数组有2个元素
b:静态初始化
数据类型[][] 数组名=new 数据类型[][]{{元素...},{元素...},{元素...}...};
简化格式:
数据类型[][] 数组名={{元素...},{元素...},{元素...}...};
举例:
int[][] arr={{1,2,3},{4,5},{6}};
2)获取二维数组中的元素
数组名[索引]: 一维数组地址值
数组名[索引][索引]:二维数组的元素
3)二维数组练习题
a:定义一个二维数组,自己指定任意元素,遍历输出数组中的每一个元素
int[][] arr={{1,2,3},{4,5},{6}};
for(int i=0;i<arr.length;i++){
//arr[i]表示二维数组中的每一个一维数组,继续遍历
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
b:定义一个二维数组,自己指定任意元素,求所有元素的和
int[][] arr={{1,2,3},{4,5},{6}};
//定义和值
int sum=0;
for(int i=0;i<arr.length;i++){
//arr[i]表示二维数组中的每一个一维数组,继续遍历
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+" ");
sum+=arr[i][j];
}
System.out.println();
}
//输出sum的值
System.out.println("所有元素的和为:"+sum);
进制的转换