Java关键字和相关疑问总结
Java 关键字
类别 | 关键字 | 说明 |
---|---|---|
访问控制 | private | 私有的 |
protected | 受保护的 | |
public | 公共的 | |
default | 默认 | |
类、方法和变量修饰符 | abstract | 声明抽象 |
extends | 扩充,继承 | |
final | 最终值,不可改变的 | |
implements | 实现(接口) | |
interface | 接口 | |
native | 本地,原生方法(非 Java 实现) | |
new | 新,创建 | |
static | 静态 | |
strictfp | 严格,精准 | |
synchronized | 线程,同步 | |
volatile | 易失 | |
程序控制语句 | break | 跳出循环 |
case | 定义一个值以供 switch 选择 | |
continue | 继续 | |
default | 默认 | |
do | 运行 | |
else | 否则 | |
for | 循环 | |
while | 循环 | |
if | 如果 | |
instanceof | 实例 | |
return | 返回 | |
switch | 根据值选择执行 | |
错误处理 | assert | 断言表达式是否为真 |
catch | 捕捉异常 | |
finally | 有没有异常都执行 | |
throw | 抛出一个异常对象 | |
throws | 声明一个异常可能被抛出 | |
try | 捕获异常 | |
包相关 | import | 引入 |
package | 包 | |
基本类型 | boolean | 布尔型 |
byte | 字节型 | |
char | 字符型 | |
double | 双精度浮点 | |
float | 单精度浮点 | |
int | 整型 | |
long | 长整型 | |
short | 短整型 | |
变量引用 | super | 父类,超类 |
this | 本类 | |
void | 无返回值 | |
保留关键字 | goto | 是关键字,但不能使用 |
const | 是关键字,但不能使用 | |
null | 空 |
访问控制修饰符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
-
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
-
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
-
public : 对所有类可见。使用对象:类、接口、变量、方法
-
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
Java工具包数据结构
在Java中的数据结构主要包括以下几种接口和类:
枚举(Enumeration)、 位集合(BitSet)、向量(Vector)、
栈(Stack)、字典(Dictionary)、哈希表(Hashtable)、 属性(Properties)
抽象类 - abstract
抽象类的特点:
- 如果在一个类中定义了抽象方法,那么这个类就是抽象类;
- 抽象类是无法实例化的,只能作为父类被继承使用;
- 抽象类的构造器只能用于被实现的子类的构造器调用。
抽象类注意点
- abstract 是不能修饰成员变量的;
- 如果方法定义为 static,就不能使用 abstract 修饰符;
- 如果方法定义为 private ,也不能使用 abstract 修饰符;
抽象类的作用:
- 抽象类是多个子类的通用模板,子类在抽象类的基础上进行扩充,但是子类整体上会保留抽象类的行为方法(子类必须要实现抽象类的抽象方法否则会报错)。
- 抽象类一般只是定义需要使用的方法,把不能实现的部分抽象成抽象方法,留给子类去实现。
- 父类中可以有实现的方法,但是子类也是可以对已经实现的方法进行改造(override)但是如果在子类中还需要调用父类的实现方法,可以使用 super 关键字
implements和Interface的区别
implements 是实现借口的关键词!
而interface 是将一个类定义成借口的关键词!
goto 和 const
goto被称为无条件转移语句,
const用来限定一个变量不允许被改变,产生静态作用。
但是在java中都是保留关键字,这些从c来的关键字都是保留使用,没有具体含义
Java的基本数据类型为什么不包括String
String是由基本类型char组成的,是一个类,它不是基本数据类型。
增强for循环和普通for循环区别
普通for循环遍历数组的时候需要索引(初值、条件、增长),普通for循环是能获取元素下标、通过下标遍历元素
增强for循环和python中的for循环一样,必须有被遍历的目标(如集合或数组),增强for 不能获取下标。
- 当为ArrayLIst时,普通for的效率高于增强for
- 当为LInkedList时,增强for的效率高于普通for
String [] 和 list 的区别
String[] 代表一维数组。String[][] 是二维数组。
String[] 数组是定长的、数组里面存放string型的值。
List 是一个集合,存放string类型的对象,只具有一个维度,但可根据需要自动扩充、修改、删除或插入数据。
switch case
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
- 如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case。
- 如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。如果后续的 case 语句块有 break 语句则会跳出判断。
( break 编译成字节码 就是 goto,对于机器码来说指令就是跳出。case > 通过逐个比较索引来匹配待跳转的行数,下标中没有这个关键字就依次返回所有输出,)
public class Test {
public static void main(String args[]){
int i = 1;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3"); break;
default:
System.out.println("default");
}
}
}
//>>> 输出结果: 1 2 3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
java的抽象类和父类子类区别
父类是相对来说的,如果B类继承自A类,那么A类就是B类的父类,但是抽象类是一个绝对概念,只要使用abstract关键字声明的类都是抽象类。
抽象类不能够直接被实例化,一般来说,抽象类一定是某些类的父类,但是父类不一定是抽象类。
子类关系:
只要子类没有把从父类继承的抽象方法全部实现(注意是全部实现),就必须也变成抽象专类。
判断标准就是,非抽象子类中不能有抽象方法,如果有抽象方法,子类就必须是抽象类。如果子类添加了自己的抽象方法,子类也必须是抽象类,无论父类是不属是抽象类。
文章来源: blog.csdn.net,作者:考古学家lx,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_43582101/article/details/106497970
- 点赞
- 收藏
- 关注作者
评论(0)