1, 单词 :leakage泄露 reveal array:数组 index:索引
Reference:引用 primitive 原始的 optional:可选的 exception:异常 thread 线程(现在执行的程序)
Effective:有效的。Practice练习 todo:待办事项 auto:自动 generate:使形成syub 存根
2, Alt+\ 提醒ctrl+鼠标放在上面:打开定义,点一下,跳转到方法定义处。
栈的特点:
存储本地变量(局部变量),方法调用完成,本地变量,即可消失。比较小,jvm操作效率高。
堆的特点:
存储new出来的东西,方法调用后,不会立刻消失,jvm会定时的清除不再使用的堆内存。存储空间大。Jvm操作效率低。
14,数组是一种引用数据类型。
图1:一个数组内存分配示意图。
图二:两个数组内存分配示意图。
15:定义及格式以及初始化:
数组: 是一个容器,可以存放同一数据类的多个元素呢。
*
* 数组的定义:
* 两种格式:
*
* 1: 数据类型[] 数组名 (变量名);
* 2: 数据类型 数组名[] (变量名[]);
*
*
* 举例说明一下:
* 数组的定义
*
*
* 数组的初始化:
* 动态初始化:
* 数据类型[] 数组名 = new 数据类型[数组长度];
* 和静态初始化
* 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
* 静态初始化,还有一种简写形式
* 数据类型[] 数组名 = {元素1,元素2,…};
静态初始化: 人为的指定每一个数组的元素的值,系统自动的计算数组的长度。
动态初始化: 人为的指定数组的长度,系统自动的分三个空间,并且给数组元素赋初值
array1 = new int[3];
int array3[] = {1,2,3};
// 静态初始化,只能在变量定义的时候使用。
// array2 = {1,2,3};//Array constants can only be used in initializers
1,数组基础练习:
*
*/
public classArrayDemo1 {
public static void main(String[] args) {
//定义一个int类型的数组,来存放三个数字
//数据类型[] 数组名 (变量名);
// 定义一个int类型的数组,名字为array1.
int[] array1;
//第二种形式 数据类型 数组名[](变量名[]);
//定义一个int类型的数组变量,名字为array2。
int array2[];
// 上面两种形式,只是定义了两个数组,但是并没有对数组进行数据的初始化。
// 给数组进行初始化:分配内存空间,并且给数组元素赋值
// 动态初始化: 人为的指定数组的长度,系统自动的分三个空间,并且给数组元素赋初值
array1 = new int[3];
//静态初始化:人为的指定每一个数组的元素的值,系统自动的计算数组的长度。
int array3[] = {1,2,3};
// 静态初始化,只能在变量定义的时候使用。
// array2 = {1,2,3};//Array constants canonly be used in initializers
// 怎么访问数据的元素?
System.out.println("array1:"+array1);
//The local variable array2 may nothave been initialized
//java中数组必须先初始化,才能使用;
// 本地变量,不赋值不能被使用
// System.out.println("array2:"+array2);
System.out.println("array3:"+array3);
//array1:[I@15db9742 数组的内存地址值
//如何显示数组这个容器中的每一个数组元素呢?
//0 叫做下标号,索引,index,数组有三个元素,标号从0,1,2
System.out.println(array1[0]);
System.out.println(array1[1]);
System.out.println(array1[2]);
// System.out.println(array1[3]);// 超出了数组的有效范围
System.out.println("==================");
//课堂练习:
//定义一个int类型的数组,长度为5,并且赋值为2,4,6,8,10;
//同时输出数组的地址值,和每一个数组元素中的值?
int[] arr = {2,4,6,8,10};//静态初始化
//输出数组的地址值
System.out.println("arr:"+arr);
//输出数组的每一个元素值
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
System.out.println("==================");
//如果使用动态初始化,该怎么做呢?
int[] arr1 = new int[5];//动态初始化
//如何在动态初始化的情况下,给数组元素赋值呢?
// arr1 = {22,4,6,8,10};//错误的
//只能每一个数组元素,单独赋值;语法 :数组名[索引] = 元素的值;
arr1[0] = 2;
arr1[1] = 4;
arr1[2] = 6;
arr1[3] = 8;
arr1[4] = 10;
//输出数组的地址值
System.out.println("arr1:"+arr1);
//输出数组的每一个元素值
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println(arr1[3]);
System.out.println(arr1[4]);
}
}
2,数组的典型练习:
数组常见操作的练习:
* 1:数组遍历(依次输出数组中的每一个元素)
* @author jerry
*
*/
public class ArrayDemo6 {
public static void main(String[] args) {
//定义一个数组
int[] array = {1,2,3,4,5};
//输出所有的元素
// System.out.println(array[0]);
// System.out.println(array[1]);
// System.out.println(array[2]);
// System.out.println(array[3]);
// System.out.println(array[4]);
// 5 写死的方式,不太好
// 最好的方式应该根据数组,直接返回长度
// 数组名.length 就返回数组的长度
// for(int i=0;i<5;i++){
// for(int i=0;i<array.length;i++){
// System.out.println(array[i]);
// }
//继续改造,使用方法来改造
//方法的调用
printArray(array);
printArray(array);
printArray(array);
}
/**
* 定义一个循环打印数组元素的方法
* @param array 需要输出元素的数组
*/
public static void printArray(int[] array){
System.out.print("数组的元素 :[");
for(int i=0;i<array.length;i++){
// 判断当i等于最后一个元素的下标时,
if(i!=array.length-1){
System.out.print(array[i]+",");
}
else{
System.out.print(array[i]);
}
}
System.out.println("]");//输出并&