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

java的抽象类和父类子类区别

父类是相对来说的,如果B类继承自A类,那么A类就是B类的父类,但是抽象类是一个绝对概念,只要使用abstract关键字声明的类都是抽象类。
抽象类不能够直接被实例化,一般来说,抽象类一定是某些类的父类,但是父类不一定是抽象类。

子类关系:
只要子类没有把从父类继承的抽象方法全部实现(注意是全部实现),就必须也变成抽象专类。
判断标准就是,非抽象子类中不能有抽象方法,如果有抽象方法,子类就必须是抽象类。如果子类添加了自己的抽象方法,子类也必须是抽象类,无论父类是不属是抽象类。

猜你喜欢

转载自blog.csdn.net/weixin_43582101/article/details/106497970