OnJava02--控制流、初始化和清理
OnJava02--控制流&初始化和清理
1、控制流
- if-else
- 迭代语句
- while
- do-while
- for
- for-in语法(增强for、foreach):用于数组和容器
- return
- break、continue
- switch
- Java7之后,switch的选择器添加了使用字符串的能力
2、初始化和清理
2.1、用构造器保证初始化
2.2、方法重载
- 方法重载对于构造器是必须的:不同的构造器必须要有相同的名字--类名,如果要实现具有不同参数类型、个数的构造器,就必须要有方法重载。
- 使用基本类型的重载:
- 如果有重载方法的参数与传入数据的基本类型一样,则调用该方法
- 如果传入数据的类型小于方法中的参数类型,数据会被提升
- 如果传入数据的类型比方法参数的类型更宽,则需要显示窄化转型,否则编译报错。
2.3、this关键字
(1)基本概念:
- 类的方法其实都有一个隐藏参数,位于所有显式参数之前,代表着被操作对象的引用
- this:用来在一个方法里获得对当前对象的引用
- this只能用于非静态方法中
- 可以用于return语句,返回对当前对象的引用,实现对同一对象执行多个操作
(2)使用this实现在构造器中调用构造器:
- 目的:减少代码重复
- 不能同时调用两个
- 构造器调用必须出现在方法的最开始部分,否则编译报错(侧面解释了为何不能调两个:第二个调用不在最开始部分了)
- 禁止在非构造器的普通方法里调用构造器
2.4、清理
- 你的对象可能不会被垃圾收集
- 垃圾收集不是析构
- 垃圾收集仅与内存有关
(1)finalize()
- 必须与内存及其释放相关
- 使用仅限于:对象以某种方式分配存储空间,而不是通过创建对象来分配
- Java中一切都是对象,上述分配主要通过本地方法来实现,即Java中调用非Java代码,在非Java代码中分配存储空间。
2.5、初始化
static初始化仅在必要时发生:如果不创建对应class的对象,则该class中的静态字段就不会被创建。
- 仅在第一个对象创建或第一次访问静态数据时被初始化
顺序:先静态字段,后非静态字段
显式静态初始化:
1
2
3
4
5
6public class Obj {
static int i;
static {
i = 47;
}
}非静态实例初始化:
1
2
3
4
5
6public class Obj {
int i;
{
i = 47;
}
}实例初始化子句在构造器之前执行。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!