容器的讲解步骤
1.容器的创建
2.容器的增删改查
3.遍历
一维数组
定义格式:
动态初始化:
数据类型[] 数组名 = new 数据类型[m];
静态初始化:
数据类型[] 数组名 = new 数据类型[]{1,2,4,5};
数据类型[] 数组名 = {1,2,4,5};简化版
查:
数组名[索引];
改:
数组名[索引] = 值;
遍历:
arr.fori
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
二维数组
格式:
动态: 数据类型[][] 数组名 = new 数据类型[m][n];
静态: 数据类型[][] 数组名 = {{},{},{}}; 简化版
数据类型 [][] 数据名 = new 数据类型[][]{{},{},{}};
查:
数组名.length 计算二维数组中一维数组的个数
数组名[索引] 一维数组的地址名
数组名[索引].length 一位数组中元素的个数
改:
数组名[一维数组的索引][一维数组所在的元素的索引] = 值;
遍历:
for(int i=0;i < arr.length;i++){
for(int j=0;arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
进制
二进制:0101 逢二进一 必须以0b 或者 0B开头
八进制: 逢八进一 必须以0开头
十进制: 逢十进一
十六进制: 0,1,2,3,4,5,6,7,8,9,a-->f(10 - 15 这里a到f不区分大小写) 0x 或者 0X开头
动态初始化的默认初始化值
byte short int long -> 0
float double -->0.0
char --->' ' 或者 '\u0000'
boolean ---> false
String --->null
数组中常见的异常
索引越界异常 : ArrayIndexOutOfBoundsException
空指针异常: nullpointerException
使用了值为null的对象访问了内存空间 调用了 方法和属性
java内存分配
Java内存分配:
栈内存:
作用: 方法的执行位置就是在栈中执行,展示了程序的执行流程(方法的进栈和出栈)
存放: 方法和局部变量(定义在方法内的变量)
执行特点:
1. 使用完毕立即回收(方法执行完毕会立即出栈)
2. 先进后出 -> 类似 枪的弹夹 弹夹中的子弹类似进栈的方法
堆内存:
作用: 用来存储对象(new出来的东西都在堆中)
存放: 对象和成员变量(定义在方法外的变量,必须存在类中-> 类中方法外的变量)
执行特点:
1. 在堆内存中的对象都有地址值(地址值不能重复)
2. 堆中数据都是有默认值(数组的元素默认值和成员变量的默认值)
整型: byte,short,int,long -> 0
浮点型: float,double -> 0.0
字符型: char -> '\u0000'
布尔型: boolean -> false
所有引用数据类型的数组: String,Student,Car -> null
3. 使用完毕不是立即回收(等待GC垃圾回收机制空闲的时候回收)
方法区:
作用: 存放字节码对象(程序的概览)和常量池(JDK1.7之后挪到了堆内存中)
存放: 字节码对象和常量池(JDK7之前)
本地方法区:和操作系统交互的方法 -> native
寄存器:跟CPU运算相关
节码对象(程序的概览)和常量池(JDK1.7之后挪到了堆内存中)
存放: 字节码对象和常量池(JDK7之前)
本地方法区:和操作系统交互的方法 -> native
寄存器:跟CPU运算相关