01_Java
语言基础(数组概述和定义格式说明)(了解)
A
:为什么要有数组(容器)
为了存储同种数据类型的多个值
B
:数组概念
数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器
数组既可以存储基本数据类型,也可以存储引用数据类型(面向对象时讲)
C
:数组定义格式
数据类型
[]
数组名
= new
数据类型
[
数组的长度
]
;
02_Java
语言基础(数组的初始化动态初始化)(掌握)
A
:什么是数组的初始化
就是为数组开辟连续的内存空间,并为数组的每个元素赋值
B
:如何对象数组进行初始化
a:
动态初始化,只指定长度,由系统给出初始化值
int[] arr = new int[10];
b:
静态初始化,给出初始化值,由系统决定长度
C
:动态初始化的格式:
数据类型
[]
数据名
= new
数据类型
[
数组长度
]
,就是定义数组的格式
.03_Java
语言基础(
java
中内存分配及栈和堆的区别)(掌握)
A
:栈:存储局部变量
局部变量:定义在方法里的变量
B
:堆:存储
new
出来的数组或对象
C
:方法区:面向对象部分讲解
public class Demo9 {
public static void main(String[] args) {
int[]a = new int[3];
System.out.println(a);//[I@10f87f48
/*
[I@10f87f48
[ :代表一位数组
I :代表 int 类型
@ :就是@符号
10f87f48 :是一个十六进制的整数
*/
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println("---------------");
a[1] = 3;
a[2] = 4;
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
}
}
public class Demo9 {
public static void main(String[] args) {
double[] a = new double[10];
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
} }
/*
各数据类型的默认值
byte\short\int\long:0
float:0.0f;
double:0.0
boolean:false
char:'\0000' =0 char 是两个字节: 0000 0000 0000 0000 二进制的四位合并为一位:0000=0
String:null
*/
数组内存图解
2
:两个数组
数组内存图解 3:三个引用两个数组
public class Demo9 {
public static void main(String[] args) {
int[] a = new int[3];
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println("数组 a 的内存地址:"+a);
double[] b = new double[10];
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2]);
int[] c = a;
System.out.println("数组 c 的内存地址:"+c);
System.out.println("a[0]="+a[0]);
c[0] = 20;
System.out.println("c[0]="+c[0]);
System.out.println("a[0]="+a[0]);
} }
/*
各数据类型的默认值
byte\short\int\long:0
float:0.0f;
double:0.0
boolean:false
char:'\0000' =0 char 是两个字节: 0000 0000 0000 0000 十六进制是二进制的四位合并为一位:0000=0
String:null
*/
05Java 语言基础(静态初始化的格式)(掌握)
A
:静态初始化的格式:
格式:数据类型
[]
数组名
= new
数据类型
[]{
元素
1
,元素
2
,……
}
简化格式:
数据类型
[]
数组名
={
元素
1
,元素
2
,……
}
B
:案列演示
对数组的解释
输出数组名称和数组元素
C
:画图演示
public class Demo10 {
public static void main(String[] args) {
//静态初始化
//方式一
int[] a1 = new int[]{10,20,30,40,50};
System.out.println(a1[0]);
System.out.println(a1[1]);
System.out.println(a1[2]);
System.out.println(a1[3]);
System.out.println(a1[4]);
System.out.println("--------------");
//方式二:
int[]a2 = {12,23,34,45,56}; //开发中推荐这么写
System.out.println(a2[0]);
System.out.println(a2[1]);
System.out.println(a2[2]);
System.out.println(a2[3]);
System.out.println(a2[4]);
}
}
05_Java
语言基础(数组操作的两个常见小问题:越界和空指针)(掌握)
public class Demo10 {
public static void main(String[] args) {
int[]a = {12,23,34,45,56}; //开发中推荐这么写
// System.out.println(a[10]);//ArrayIndexOutOfBoundsException:
// 数组 索引 越界 异常
a = null;
System.out.println(a[0]);//java.lang.NullPointerException
// 空指针 异常
} }
05_Java 语言基础(数组遍历)(掌握)
案例演示:
数组遍历:就是依次输出数组中的每个元素
数组的属性:
arr.length
数组的长度
数组的最大索引:
length-1
public class Demo10 {
public static void main(String[] args) {
int[]a = {12,23,34,45,56,67,78,89};
/* System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println(a[3]);
System.out.println(a[4]);
System.out.println(a[5]);
System.out.println(a[6]);
System.out.println(a[7]);*/
for(int i=0;i<8;i++){
System.out.print(a[i]+"\t");
}
System.out.print("\n");
int len = a.length;//可以获取数组的长度
System.out.println("数组的长度="+len);
for(int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();
System.out.println("---------------------");
//while 循环遍历数组
int n=0;
while(n<a.length){
System.out.println(a[n]);
n++;
}
} }
练习:
写一个方法专门用来遍历数组
public class Demo11 {
public static void main(String[] args) {
int[]a = {20,30,40,50,60,70,80};
printArray(a);
}
//遍历数组的方法
public static void printArray(int[]arr){ //等同于 int[]arr = {20,30,40,50,60,70,80}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
} }