1. 权限修饰符
权限修饰符 | 同一个类 | 同一个包 | 不同包父子类 | 不同包异类 |
---|---|---|---|---|
private | 可以访问 | 不可以 | 不可以 | 不可以 |
default | 可以访问 | 可以访问 | 不可以 | 不可以 |
protected | 可以访问 | 可以访问 | 可以访问 | 不可以 |
public | 可以访问 | 可以访问 | 可以访问 | 可以访问 |
2. static
- static 关键字是静态的意思,是Java中的一个修饰符,可以修饰成员方法,成员变量
- static修饰的特点
- 被类的所有对象共享,是我们判断是否使用静态关键字的条件
- 随着类的加载而加载,优先于对象存在,对象需要类被加载后,才能创建
- 可以通过类名调用,也可以通过对象名调用
- static关键字注意事项
- 静态方法只能访问静态的成员
- 非静态方法可以访问静态的成员,也可以访问非静态的成员
- 静态方法中没有this关键字
3. final
- final代表最终的意思,可以修饰成员方法,成员变量,类
- 用修饰符 final修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重写覆盖。final固定了方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被 private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类) 中的方法,都被认为是最终方法。
- final修饰类、方法、变量的效果
- fianl修饰类:该类不能被继承(不能有子类,但是可以有父类)
- final修饰方法:该方法不能被重写
- final修饰变量:表明该变量是一个常量,不能再次赋值
- 变量是基本类型,不能改变的是值
- 变量是引用类型,不能改变的是地址值,但地址里面的内容是可以改变的
4. native
- 本地方法控制符
- 用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,需要用其它的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰。
- native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问
5. synchronized
- 同步方法控制符
- 该修饰符主要用于多线程程序中的协调和同步。
- synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。
6.void
- void代表“无类型”,空,主要是对定义函数的参数类型、返回值,函数中指针类型进行声明。
- 其主要作用有一下两个:
- 对函数返回值的限定;
- 对函数参数的限定,特别注意:void *代表无类型指针,其可以指向任何类型的数据。
- "void"也可以用来表示一句没有任何功能的语句。
7. this和super
- this:代表本类对象的引用
- super:代表父类存储空间的标识(可以理解为父类对象引用)
- this和super的使用分别
- 成员变量:
- this.成员变量 - 访问本类成员变量
- super.成员变量 - 访问父类成员变量
- 成员方法:
- this.成员方法 - 访问本类成员方法
- super.成员方法 - 访问父类成员方法
- 构造方法:
- this(…) - 访问本类构造方法
- super(…) - 访问父类构造方法
- 成员变量:
8. import
- 导入
- 在源文件的开始部分指明后面将要引用的一个类或整个包,这样就不必在使用的时候加上包的名字。
- 格式
- import + 包名
9. switch、case、default
- switch
- 用来定义一组分支选择
- case
- 如果某个case的值和switch中给出的值一样,就会从该分支开始执行。
- default
- 如果所有case给出的值都与switch不符,则执行default中的代码
10. if、else
- if 如果
- 用来生成一个条件测试,如果条件为真,就执行if下的语句。
- else
- 如果条件不为真,就执行else中的语句
11. do和while
- do 用来声明一个循环
- 这个循环的结束条件可以通过while关键字设置
- while 一会儿(循环语句)
- 用来定义一段反复执行的循环语句。循环的退出条件是while语句的一部分。
12. for
- 为了(循环语句)
- 用来声明一个循环。程序员可以指定要循环的语句,推出条件和初始化变量。
13. break 和 continue
- 跳转控制语句—break: 跳出循环,结束循环
- 跳转控制语句—continue: 跳过本次循环,继续下次循环
- 注意:continue只能在循环中进行使用!
- 如果在循环中有switch语句,则break只能退出switch判断语句,如果想停止循环,则需要给循环命名,这个命名就是标号,在需要跳转的地方加上 break + 标号
14. abstract、extends
- abstract 抽象的
- 用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承。
- 一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现 。
- abstract 修饰的方法称为抽象方法。抽象方法仅有方法头,没有方法体和具体实现。
- extends 继承
- 在类的声明中是可选的,用来指明当前类继承的基类
- 通过extends关键字继承某一个类,也继承了基类中的方法,如果一个类被Abstract修饰,则必须有一个子类通过extends关键字继承这个抽象类,并重写类中的抽象方法
15. interface、implements
- interface 接口
- 一个类用interface声明,说明该类是一个接口,不能直接创建对象,需要有implements声明的类来实现并重写抽象方法
- implements 实现
- 在类的声明中是可选的,用来指明当前类实现的接口。 当前类必须实现接口中的抽象方法
16. instanceof
- 用来测试第一个参数的运行时类型是否和第二个参数兼容。
- 使用格式
- 变量名 instanceof 类型
- 使用场景
- 判断关键字左边的变量,是否是右边的类型,返回boolean类型结果
17. throw
- 投、抛,声明抛弃异常
- 允许用户抛出一个exception对象或者任何实现throwable的对象
- 用在方法的声明中来说明哪些异常这个方法是不处理的,而是提交到程序的更高一层。
18. try、catch、finally
- try 尝试、审判
- 用来定义一个可能抛出异常语句块。
- catch 捕捉
- 如果一个异常被抛出,一个可选的catch语句块会处理try语句块中抛出的异常。
- finally
- 用来声明当try语句块中发生运行时错误或非运行时异常时运行的一个块。
- 一个finally语句块会被执行,无论一个异常是否被抛出。
19. return
- 返回,它代表已经做完,离开此方法
- 用来结束一个方法的执行。它后面可以跟一个方法声明中要求的值,这个值要放在return语句后面,返回此值。
- 如果方法的返回类型是void,那return关键字的作用只是用来退出方法。
20. transient
- 短暂的、瞬时的
- 用来表示一个域不是该对象串行化的一部分。
- 当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
21. volatile
- 挥发性、易挥发的
- 用在变量的声明中表示这个变量是被同时运行的几个线程异步修改的。
- volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。
22. 八大基本数据类型
- byte:字节类型,8位,最大存储数据量是255,存放的数据范围是-128~127之间
- short:短整数类型,16位,最大数据存储量是65536,数据范围是-32768~32767之间
- int:整数类型,32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1
- long:长整数类型,64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1
- float:单精度浮点数类型,32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F
- double:双精度浮点数类型,64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加
- boolean:布尔类型,只有true和false两个取值
- char:字符类型,16位,存储Unicode码,用单引号赋值