Java入门之编程基础(四)

****1.Random:用于产生随机数的类;
使用步骤:
1.创建Random对象
Random r = new Random();
2.产生随机数
int num = r.nextInt(m);
m:代表的是随机数的范围; [0,m)//包左不包右

如何产生负数:
1.在产生随机数的步骤时,不传参数;随机生成一个int范围内的数;(包含负数)
2.int num = - r.nextInt(m);   范围:-[0,m)

创建对象时传入一颗种子:
Random r = new Random(long seed);
seed:代表的是种子,随机生成一次随机数;

***2.一维数组:一包烟
定义格式:
动态初始化:由编程者给与数组的长度,由系统自动生成初始化值;
数据类型[] 数组名 = new 数据类型[元素个数];
静态初始化:由编程者给与数组的每一个元素的值,由系统自动计算数组的长度;
数据类型[] 数组名 = {元素1,元素2,元素3....};
数组的特点:
1.数组一旦被定义,长度不可以改变;
2.数组中存储的元素类型必须一致;
3.数组可以存储基本数据类型和引用数据类型;
数组的属性: length(长度属性)
int 数组长度 = 数组名.length;
访问数组的元素:
数组名称[索引];
给数组的元素赋值:
数组名称[索引] = 初始化值;
数组的索引:
数组的索引从0开始到数组的长度-1;
数组的遍历:
//利用for循环遍历
int[] arr = {1,2,3,4,5};
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}

3.二维数组:(一条烟) 了解
概念:存储了元素为一维数组的数组就是二维数组;
定义格式:
动态初始化:
数据类型[][] 数组名 = new 数据类型[m][n];
m:二维数组中一维数组的个数  n:二维数组中一维数组的元素个数
静态初始化:
数据类型[][] 数组名 = {{元素1,元素2,元素3...},{元素1,元素2,元素3...},{元素1,元素2,元素3...}....};
//直接输出二维数组的名字得到的是二维数组在内存中的地址值
//输出二维数组名[索引]得到的是二维数组中该索引位置上的一维数组的地址值
//输出二维数组名[索引][索引]得到的是二维数组中该索引位置上的一维数组对应的索引编号元素;
二维数组的遍历:
//获取二维数组中一维数组的个数:二维数组名.length
for(int i = 0;i < arr.length;i++){
//获取二维数组中一维数组的元素个数:二维数组名[索引].length
for(int j = 0;j < arr[i].length;j++){
//获得所有的元素
System.out.println(arr[i][j]);
}
}
****4.数组常见的异常:
1.java.util.ArrayIndexOutOfBoundsException:索引越界异常;
出现的原因:访问了不存在的索引元素;
解决办法:不妨问不存在的索引元素;
2.java.util.NullPointerException:空指针异常;
出现的原因:使用了值为null的对象调用了方法或者属性;
解决办法(debug模式):找到为null的对象.处理该对象;


*5.Java中的内存分配:
组成:
栈内存:用来存放局部变量(看到方法的执行流程)
堆内存:用来存放new出来的东西;
方法区:用来存放字节码文件(.class),常量池;
本地方法区:存放系统相关的方法;
寄存器:和CPU有关;

栈内存存储的数据的特点:
1.先进后出(压栈的效果)==>弹夹
2.栈内存的数据在使用完毕后立即回收;
堆内存存储的数据的特点:
1.用来存放new出来的东西;
2.堆内存的数据在使用完毕后等垃圾回收机制空闲的时候回收;

你可能感兴趣的:(入门,java,编程)