1.数组的使用
数组是用来干嘛的?
数据可以存储同类型的多个数据
数组的创建方式?
动态初始化:
指定长度不指定数据
int[] arr = new int[4];
静态初始化:
定义数据不指定长度
int[] arr = new int[]{11,22,33,44};
简化写法:
int[] arr = {11,22,33,44};
数组的特点?
1.数组一旦创建后面无法再改变长度
2.数组可以存放任意类型的数据
元素和索引?
元素:数组里面存放的数据
索引:数组里面元素的位置
2.数组的遍历
package com.itheima01;
public class Demo03 {
public static void main(String[] args) {
//创建数组
int[] arr = {11,33,66,99,100};
//遍历:打印数组的每一个元素
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}
//快捷键:数组名.fori
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
3.数组的两个常见问题
索引越界异常
ArrayIndexOutOfBoundsException
出现情况:当写的索引超出了正确的范围,范围应该是0到长度-1
int[] arr1 = {11,22,33};
System.out.println(arr1[3]);
空指针异常
NullPointerException
出现情况:当数组赋值给null的时候,使用数组就是出现
int[] arr2 = null;
System.out.println(arr2[0]);
4.数组的内存图
4.1一个数组的内存图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-akLoXK1f-1627372033054)(2.数组的内存图1.png)]
4.2两个数组的内存图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wVVPuPIP-1627372033056)(3.数组的内存图2.png)]
4.3两个变量指向同一个数组内存图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XKHe9yrS-1627372033059)(4.数组的内存图3.png)]
4.4回顾数据类型
数据类型:
基本数据类型:
byte short int long
float double
char
boolean
引用数据类型:
数组
int[] double[]
类
String
接口
枚举
基本类型和引用类型区别:
基本类型变量保存的是值
int a = 10;
引用类型变量保存的是地址值
int[] arr = {11,22,33};
5.数组的常见操作
5.1打印大于等于130的元素
package com.itheima02;
public class Demo01 {
//ctrl + shift + 上下
public static void main(String[] args) {
int[] arr = {120,130,110,125,128,164};
//打印大于等于130的元素
//遍历
for (int i = 0; i < arr.length; i++) {
//判断
if(arr[i]>=130){
//打印
System.out.println(arr[i]);
}
}
}
}
5.2求数组的元素和
package com.itheima02;
public class Demo02 {
public static void main(String[] args) {
int[] arr = {120,130,110,125,128,164};
//求数组的元素和
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println(sum);
}
}
5.3求数组的元素平均值
package com.itheima02;
public class Demo03 {
public static void main(String[] args) {
int[] arr = {120,130,110,125,128,164};
//求数组的元素平均值
double sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println(sum / arr.length);
}
}
5.4求数组的最大值
package com.itheima02;
public class Demo04 {
public static void main(String[] args) {
//求数组的最大值
int[] arr = {120,130,110,125,128,164};
//定义变量保存最大值
int max = arr[0];
//循环用后面的每个元素比较
for (int i = 1; i < arr.length; i++) {
//比较
if(arr[i]>max){
//把数组的元素赋值给max
max = arr[i];
}
}
//打印最大值
System.out.println(max);
}
}
5.5统计有几个大于等于130的元素
package com.itheima02;
public class Demo05 {
public static void main(String[] args) {
//统计有几个大于等于130的元素
int[] arr = {120,130,110,125,128,164};
//定义变量用于记录个数
int count = 0;
//遍历数组
for (int i = 0; i < arr.length; i++) {
//判断元素
if(arr[i]>=130){
count++;
}
}
//打印个数
System.out.println("一共有" + count + "个");
}
}
5.6键盘输入5个数据放在数组
package com.itheima02;
import java.util.Arrays;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
//键盘输入5个数据放在数组中,打印数组的每个元素
int[] arr = new int[5];
//键盘输入
Scanner sc = new Scanner(System.in);
//循环
for(int i=0; i<arr.length; i++) {
System.out.println("请输入数字:");
int a = sc.nextInt();
arr[i] = a;
}
//打印数组的元素
//Arrays.toString(数组名) :可以方便的打印数组的元素,这个就业班再学
System.out.println(Arrays.toString(arr)); //[11, 22, 33, 44, 55]
}
}
5.7随机生成五个1-100的整数放在数组中
package com.itheima02;
import java.util.Arrays;
import java.util.Random;
public class Demo07 {
public static void main(String[] args) {
//随机生成五个1-100的整数放在数组中
int[] arr = new int[5];
//随机数
Random r = new Random();
//循环
for (int i = 0; i < arr.length; i++) {
//生成1-100的随机数
int a = r.nextInt(100)+1;
arr[i] = a;
}
//快速打印数组元素
System.out.println(Arrays.toString(arr));
}
}
6.二进制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Lu7PZdT-1627372033063)(6.二进制png.png)]
package com.itheima03;
public class Demo01 {
public static void main(String[] args) {
//二进制 java中0b开头的数字就是二进制
System.out.println(0b111); // 7
System.out.println(0b101); // 5
}
}