05.01_Java语言基础(数组概述和定义格式说明)
A:为什么要有数组(容器):
为了存储同种数据类型的多个值
B;数组概念
数组是存储同一中数据类型多个元素的集合.也可以看成是一个容器
数组既可以存储基本数据类型,也可以存储引用数据类型
C:数组定义格式
数据类型[] 数组名 = new 数组类型[数组的长度];
05.02_Java语言基础(数组的初始化动态初始化)
A;什么是数组初始化;
为数组开辟连续的内存空间,并为每个数组元素赋予值
B:如何对数组进行初始化
动态初始化 只指定长度 由系统给出初始值如: int[] arr = new int[5];
2 . 静态初始化 给出初始化值 , 有系统决定长度
C;动态初始化格式:
数据类型[] 数组名 = new 数据类型[数组长度]
D;默认初始化值
整数类型:byte,short,int,long默认初始化值都是0
浮点类型:float,double默认初始化值都是0.0
布尔类型:boolean默认初始化值false
字符类型:char默认初始化值'\u0000'
char在内存中占的两个字节,是16个二进制位
\u0000,每一个0其实代表的是16进制的0,那么四个0就是代表16个二进制位
05.03_Java语言基础(Java中的内存分配以及栈和堆的区别)
A:栈(掌握)
1.存储局部变量
局部变量:定义在方法声明上和方法中的变量
2.先进后出
B:堆(掌握):
存储new出来的数组或对象
C:方法区:
面向对象部分讲解
D:本地方法区:
和系统相关
E:寄存器:
给CPU使用
05.04_Java语言基础(数组的内存图解1一个数组)
1.案例:一个数组:
public static void mian(String [] args){
int[] arr = new int[3];
System.out.println(arr);
arr[0] = 10;
arr[1] = 20;
System.out.println(arr[0]);
System.out.println(arr[1]);
}
05.05_Java语言基础(数组的内存图解2二个数组)
1.案例:两个数组:
public static void mian(String [] args){
int[] arr1 = new int[3];
int[] arr2 = new int[3];
arr1[0] = 10;
arr2[1] = 20;
System.out.println(arr1[0]);
System.out.println(arr2[1]);
}
2.图解:
05.06_Java语言基础(数组的内存图解3三个引用两个数组)
1.案例:三个数组:
public static void mian(String [] args){
int[] arr1 = new int[3];
int[] arr2 = new int[3];
int[] arr3 =arr2;
arr[0] = 10;
a[1] = 20;
System.out.println(arr[0]);
System.out.println(a[1]);
}
05.07_Java语言基础(数组的初始化静态初始化及内存图)
A: 静态初始化格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
int[] arr = {1,22,12}
B:图解:
05.08_Java语言基础(数组操作的两个常见小问题越界和空指针)
A: ArrayIndexoutofBoundsException:数组索引越界异常
原因:访问了不存在的索引
int[] arr = {1,2,3}
System.out.println(arr[-1]); //数组越界
B; NullPointrException: 空指针异常
int[] arr = {1,2,3}
arr = null;
System.out.println(arr[1]); //当把arr 赋值为null时,再去调用数组中的元素就会出现空指针异常
原因:数组已经不在指向堆内存了,而你还用数组名去访问元素
05.09_Java语言基础(数组的操作1遍历)
A: 数组的遍历: 就是依次输出数组中的每一个元素
public static void mian(String [] args){
int[] arr = {1,2,3}
for(int i= 0; i
System.out.println(arr[i]);
}
}
数组的属性:arr.length数组的长度
数组的索引范围: 0 ~ arr.length-1
05.10_Java语言基础(数组的操作2获取最值)
public static void mian(String [] args){
int[] arr = {1,2,3}
System.out.println(max(arr));
}
publicstatic int max(int[] arr) {
int max = arr[0]; // 定义max 把数组第一个元素赋给他
for (int i = 1; i < arr.length; i++) { // 遍历数组获取每一个数组元素
if (arr[i] > max) { // 判断数组元素和max比较 如果比max大
max = arr[i]; // 就把元素赋给max
}
}
return max; // 返回结果
}
05.11_Java语言基础(数组的操作3反转)
A:案例: 数组是反转(就是把元素对调)
public static void mian(String [] args){
int[] arr = {1,2,3,4,21}
System.out.println(array(arr));
}
public static void array(int [] arr){
for(int i= 0; i
//arr[0]和arr[arr.length-1-0]交换
//arr[1]和arr[arr.length-1-1]交换
//arr[2]和arr[arr.length-1-2]交换
//....
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1] = temp;
}
}
05.12_Java语言基础(数组的操作4查表法)
import java.util.Scanner;
public class arraynum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入对应的星期范围在1-7");
int week = sc.nextInt();
//sc.close();
System.out.println("星期" + getWeek(week));
}
/*
根据索引返回对应的星期
1,返回值类型char
2,参数列表int week
*/
//数组第0个元素为null,这样1就对应的一,以此类推
public static char getWeek(int week) {
char[] arr = {' ','一','二','三','四','五','六','日'};//定义了一张星期表
return arr[week];//通过索引获取表中的元素
}
}
05.13_Java语言基础(数组的操作5基本查找)
A: 数组元素的查找(查找指定元素第一次在数组中出现的索引)
查找元素索引 int
明确参数列表int[] arr int value
public static void mian(String [] args){
int[] arr = {1,2,3,4,21};
int index = getindex(arr,88);
System.out.println(index);
}
public static intgetindex(int [] arr, int value){
for(int i= 0; i
if(arr[i] = 0; i
return i;
}
}
return -1;
}
05.14_Java语言基础(二维数组概述和格式1的讲解)
A;二维数组概述;
B;二维数组格式1:
int [] [] arr = new int[3][2];
C:二维数组格式1的解释
这是一个二维数组,
每个二维数组中有3个一维数组,
每一个一维数组中有2个元素
D:注意事项:
一些格式也可以表示二维数组 数据类型 数组名[] [] = new 数据类型[m] [n]; 数据类型[] 数组名 [] = new 数据类型[m] [n]; 注意下面定义的区别int x;
int y;
int x,y;
int [] x;
int [] y [];
int []x , y []; x是一维数组,y是二维数组
案例:
int [] [] arr = new int[3][2];
//这是一个二维数组,每个二维数组中有3个一维数组,每一个一维数组中有2个元素
System.out.println(arr); //二维数组
System.out.println(arr[0]); //二维数组中的第一个一维数组
System.out.println(arr[0][0]); //二维数组中的第一个一维数组的第一个元素
05.15_Java语言基础(二维数组格式1的内存图解)
05.16_Java语言基础(二维数组格式2的讲解及其内存图解)
public static void mian(String [] args){
int[] []arr =new int[3] [];
System.out.println(arr[0]);
System.out.println(arr[0]);
System.out.println(arr[0]);
}
图解:
05.17_Java语言基础(二维数组格式3的讲解及其内存图解)
A:二维数组格式3;
int [] [] arr = {{1,2,3},{4,5},{6,7,8,9}};
B;二维数据格式3的解释:
这是一个二维数组,这个数组中的每个大括号都代表一个一维数组
C:案例:
public static void mian(String [] args){
int [] [] arr = {{1,2,3},{4,5},{6,7,8,9}};
System.out.println(arr); //二维数组的地址值
System.out.println(arr[0]); //一维数组的地址值
System.out.println(arr[0][0]); //一维数组的中的元素值
}
05.18_Java语言基础(二维数组练习1遍历)
A;案例: 二维数组的遍历
外循环控制的是二维数组的长度,其实就是以为数组的个数
内循环控制的是一维数组的长度
public static void mian(String [] args){
int [] [] arr = {{1,2,3},{4,5},{6,7,8,9}};
for(int i= 0; i
for(int j= 0; j
System.out.println(arr[i][j] + ”””);
}
System.out.println( );
}
}
05.19_Java语言基础(二维数组练习2求和)
A;案例: 需求:公司年销售额求和
某公司按照季度和月份统计的数据如下,单位(万元)
第一季度: 22, 66, 44
第二季度: 77, 33,88
第三季度;25,45,65
第四季度:11,65,99
public static void mian(String [] args){
int [] [] arr = {{22, 66, 44},{ 77, 33,88},{25,45,65},{11,65,99}};
int sum = 0; //定义变量,记录每次相加的结果
for(int i= 0; i
for(int j= 0; j
sum = sum +arr[i][j]; //累加
}
}
System.out.println(sum );
}
05.20_Java语言基础(思考题Java中的参数传递问题及图解)
基本数据类型(包括byte, short, int, long, float, double, boolean, char)的值传递:public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:"+a+", b:"+b); // a = 10, b = 20
change(a, b);
System.out.println("a:"+a+", b:"+b); // a = 10, b = 20(结果不变)
}
public static void change(int a, int b) {
System.out.println("a:"+a+", b:"+b); // a = 10, b = 20
a = b;
b = a + b;
System.out.println("a:"+a+", b:"+b); // a = 20, b = 40
}
2.引用数据类型的值传递:
public static void main(String[] args) {
int[] arr = {1,2,3,4,5}; // arr[1] = 2
change(arr);
System.out.println(arr[1]); // arr[1] = 4, 结果改变
}
public static void change(int[] arr) { // 1, 4, 3, 8, 5
for(int x=0; x
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}