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关键字声明的类都是抽象类。
抽象类不能够直接被实例化,一般来说,抽象类一定是某些类的父类,但是父类不一定是抽象类。

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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

考古学家lx(李玺)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值