数组的概述和定义
数组是存储同一种类型多个元素的集合,也可以看成是一个容器,既可以用来存储基本类型,也可以存储引用数据类型
数据类型 []数组名=new 数据类型(数组的长度)
数组的初始化就是为数组开辟空间并且为每一个数组元素赋值
动态初始化:只指定长度,由系统给出初始化值
int[] arr = new int[5];
静态初始化:给出初始化值,由系统决定长度
| 0 | |
| 1 | |
| 3 | |
| 4 | |
| 5 |
整数类型:byte,short,int,long默认初始化值是0; 浮点型:float,double默认初始化值是0.0; 布尔型:boolean默认初始化值false 字符型:char默认初始化值'u0000' char在内存中占两个字节,是十六个二进制位,u0000,每一个0其实代表的是十六进制的0,四个就代表16个二进制位
public class ARr_ {
public static void main(String[] args) {
int[] arr = new int[5]; //动态初始化,在内存中开辟连续的五块空间
System.out.println(arr[0]); //输出为0,系统给出默认值,整数类型默认为0
arr[0] = 10;
System.out.println(arr[0]); //输出为10
System.out.println(arr); //[I@4eec7777,[代表的数组几个就代表几维I代表是int类型的@是固定的4eec7777代表的是十六进制的地址值
}
}
Java中的内存分配以及栈和堆的区别
栈:存储局部变量(定义在方法声明上和方法中的变量)
堆:存储new出来的数组或对象
栈是先进后出
一个数组内存图解
两个数组内存图解
三个引用两个数组图解
静态初始化的格式
数据类型[] 数组名 = new 数据类型[] {元素1,元素2,...};
简化格式:
数据类型[] 数组名 = {元素1,元素2,...};
简写形式只能声明和赋值在同一行。
数组常见问题
数组索引越界异常(你访问了不存在的索引)
空指针异常 (数组已经不再指向堆了,但你依旧去数组名去访问元素)
public class arr_bianli {
public static void main(String[] args) {
int[] arr = new int [5];
System.out.println(arr[-1]); //索引越界异常
arr = null;
System.out.println(arr[2]);//空指针异常
}
}
数组的操作:遍历
public class arr_bianli {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55};
//arr.length代表的是数组的长度
for (int i=0;i
数组的操作:获取最值
先令最大值等于数组的第一个元素然后从数组的第二个元素开始与最大值比较如果大于的话就令max值等于当前数组元素否则就顺延到下一个元素进行比较
public static int getmax(int[] arr) {//获取最大值
int m=arr[0];
for(int i=1;im){
m=arr[i];
}
}
return m;
}
数组元素反转
public static void reverseArray(int[] arr){//反转
for(int i=0;i<=arr.length/2;i++){
int temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
}
数组的基本操作查表法(根据键盘录入索引,返回对应星期
public static char getweek(int week) {
char[] arr = {' ','一','二','三','四','五','六','日'};
return arr[week];
}
数组的基本查找(查找指定元素第一次在数组中出现的索引
public static int ming(int[] arr,int num) {
for(int i=0;i
二维数组概述及其格式
int[][] arr=new int[3][2]; int[] arr[]=new int[3][2]; int arr[][]=new int[3][2];
这个二维数组中有三个一维数组,一个一维数组里面有两个元素。
int[] x,y[];//x是一维数组,y是二维数组
public class doublearr {
public static void main(String[] args) {
int[][] arr = new int[3][2];
System.out.println(arr);//[[I@4eec7777 二维数组地址值
System.out.println(arr[0]);//[I@3b07d329 一维数组地址值
System.out.println(arr[0][0]);//0 二维数组中第一个一维数组的第一个元素
//[有几个就代表的是几维数组I代表的是int型@是固定的后面的数字是十六进制的地址值
}
}
二维数组的内存图解
一维数组默认初始化值都是null
二维数组格式二
int[][] arr = new int[3][];//这是一个二维数组,这个二维数组中有三个一维数组,三个一维数组都没有被赋值 arr[0]=new int[3];//第一个一维数组可以存储三个int值 arr[0]=new int[5];//第二个一维数组可以存储五个int值
二维数组格式三
int[][] arr={{1,2,3},{4,5},{6,7,8,9}};
//这是一个二维数组每个大括号都代表一个一维数组
二维数组的遍历
public class doublearr {
public static void main(String[] args) {
int[][] arr = {{1,2,3},{4,5},{6,7,8}};
for(int i=0;i
二维数组练习求和
public static int sum(int[][] arr){
int sum=0;
for(int i=0;i



