Random随机数
导包:import java.util.Random;
创建对象:Random r = new Random;
获取随机数: int i = r.nextInt(10);
获取数据的范围:[0,10) 包括0,不包括10
int i = r.nextInt(6)+5;随机数长度为6,从5开始。[5,10]
数组动态初始化--只指定长度,元素数据为默认值
数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
基本数据类型不用new
引用数据类型需要new
数组静态初始化--指定内容,系统自动给长度
数组类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};
int[] arr = new int[]{1,2,3};
简化格式
int[] = {1,2,3};
ArrayIndexOutOfBoundsException--数组索引越界异常
NullPointerException--空指针异常
arr=null;
(原因:数组已经不再指向堆内存)
二维数组的本质是一个一维数组
二维数组定义格式
A数据类型呢[][] 数组名;(推荐方式)
B数据类型 数组名[][];
C数据类型[] 数组名[];
初始化:
A 动态初始化
数据类型[][] 数组名 = new 数据类型[m][n];
m表示二维数组中一维数组中的个数
n表示一维数组中的元素个数
B 静态初始化
数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},...};
简化格式
数据类型[][] 数组名 = {{元素...},{元素...},...};
方法:
其实就是完成特定功能的代码块
定义格式:
修饰符 返回值类型 方法名(参数类型 参数名1,...){
方法体;
return 返回值;
}
写方法的两个明确:
A 返回值类型 明确功能结果的数据类型
B 参数列表 明确有几个参数,以及参数的数据类型
方法的调用:
有明确返回值的方法
A 单独调用 没有意义
B 输出调用 有意义 输出返回值
C 赋值调用 结果可以操作
void关键字
无返回值类型的方法用void修饰
void修饰的方法只能单独调用
return 单独出现表示结束该方法
方法重载
在同一个类中出现了方法名相同的现象
特点
方法名相同,参数列表不同。 与返回值无关。
参数列表不同
A 参数个数不同
B 参数对应的类型不同
注意
不能出现方法名相同,参数列表也相同的情况
方法的参数如果是基本参数类型:形式参数的改变不影响实际参数。
形式参数:用于接收实际参数的变量
注意:一般在方法的声明上的参数就是形式参数!
实际参数:实际参与运算的变量
方法的参数如果是形式参数类型:形式参数的改变直接影响实际参数。
断点调试的作用:
A 查看程序的执行流程
B 调试程序
断点:其实就是一个标记,哪里不懂加那里,
在代码区域的左边双击即可
按F6执行
看哪些区域?
代码区域:看程序的执行流程
Debug区域:看程序的执行流程
Variables:看变量的变化
Console:看程序的输入和输出
如何去掉断点?
A把加断点的动作再来一遍
B在Debug视图中找到breakpoints,选中要删除的断点, 选中,点击双×即可
断点必须加在有效的语句上
要想看被调用方法的执行流程,被调用的方法也必须加断点
面向对象
面向对象是基于面向过程的编程
(万物皆对象)
如何表示现实世界的事物?
A:属性 就是事物的描述信息
B:行为 就是事物能做什么
Java语言最基本的单位是类,所以我们是通过类来体现现实事物的
类的定义
类是用来描述现实事物的
类是如何和事物对应的
类:
成员变量(属性)
成员方法(行为)
成员变量:和之前的变量的定义是一样的
位置不同:类中,方法外
初始化值:不需要给初始化值
成员方法:和之前的方法定义一样
去掉static关键字
创建对象
格式:类名 对象名 = new 类名()
访问成员
成员变量:对象名.变量名
成员方法:对象名.方法名()
成员变量跟随对象进入堆内存;
成员方法以地址的形式进入堆内存
成员变量的生命周期跟随对象的创建而创建,随着对象的死亡而死亡
局部变量的生命周期跟随方法的调用而开始,随着方法的结束而死亡
成员变量和局部变量的区别:
A:在类中的位置不同
成员变量:类中,方法外
局部变量:方法中或方法声明上(形式参数)
B:在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
C:生命周期不同
成员变量的生命周期跟随对象的创建而创建,随着对象的死亡而死亡
局部变量的生命周期跟随方法的调用而开始,随着方法的结束而死亡
D:初始化值不同
成员变量:有初始值
局部变量:没有初始值,赋值后才能使用
private关键字
this关键字
如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近原则
this:代表所在类的对象引用
方法被哪个对象调用,this就代表哪个对象
使用场景:局部变量隐藏成员变量,即成员变量和局部变量同名,用于区别两者
构造方法:
给对象的数据进行初始化(通过new关键字调用)
调用格式:类名 对象名 = new 构造方法(...);
格式:
方法名和类名相同
没用返回值类型,连void都不能写
没用具体的返回值
构造方法的注意事项
A:如果不写构造方法 系统会自动提供一个无参构造方法供我们使用
B:如果我们给出了构造方法,系统将不再提供默认的构造方法供我们使用
这个时候,我们需要自己写一个无参构造方法
C:构造方法也课可以重载
成员变量赋值:
A:setXxx()
B:带参构造方法
注意:
对于一个对象而言,构造方法终生只能调用一次,setXxx();成员方法可以调用无数次
|
|