JAVA篇:部分知识汇总-关键字、final、不可继承的类和数据类型转换

2021/7/17 14:37:19

本文主要是介绍JAVA篇:部分知识汇总-关键字、final、不可继承的类和数据类型转换,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

0 前言

大概只是一些需要零零散散的东西,就硬混

1 官方定义关键字和保留字

一切思考的起源是true、false、null、sizeof、goto、synchronized 哪些是Java关键字?,所谓关键字,在官方已有定义http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.9。只是我自己对于关键字的定义似乎有些相当然了。这里考查的是java语言规范。

官方定义的关键字(Keyword)包含50个,关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,不能用作变量名、方法名、类名、包名和参数。除了以下列表中的50个,还包含3个非关键字的保留字,分别是true、false和null。

abstract   continue   for          new         switch
assert     default    if           package     synchronized
boolean    do         goto         private     this
break      double     implements   protected   throw
byte       else       import       public      throws
case       enum       instanceof   return      transient
catch      extends    int          short       try
char       final      interface    static      void
class      finally    long         strictfp    volatile
const      float      native       super       while

关键字const和goto是保留字,它们在C++中是关键字,但在Java中仍未使用。

而true和false我虽然在这里提及,但其实它们在技术上是boolean类型的值,并不能算作关键字。而null,从技术上讲它是空字面量,也不算关键字。

至于sizeof,大概是我在某个其他的地方记混了,它并非关键字。

2 有关final关键字的重要知识点

  1. final关键字可以用于成员变量、本地变量、方法以及类。

  2. final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。

  3. 你不能够对final变量再次赋值。

  4. final修饰的本地变量必须在声明时赋值。

  5. 在匿名类或者接口中所有变量都必须是final变量。

  6. final方法不能被重写。

  7. final类不能被继承。

  8. 没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化”。

3 不可继承的类

final类不能继承,因为jdk的开发者认为,有一些最基本的类没有必要对开发者开放,所以讲这些类设计成为final类。

比较常见的不能继承的类包括:

  • String、StringBuffer、StringBuilder

  • 基本类型的包装类如Double、Integer、Long

  • java.lang.Class

  • java.lang.System

  • java.lang.Void

4 Java的数据类型转换

当使用 +、-、*、/、%、运算操作时,遵循如下规则:

  1. 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;

  2. 如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型;

  3. 如果两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;

  4. 否则(操作数为:byte、short、int 、char),两个数都会被转换成int类型,并且结果也是int类型。

参考

Java 语言规范

java中有哪些类是不能继承的?

弱类型、强类型、动态类型、静态类型语言的区别是什么? - rainoftime的回答 - 知乎



这篇关于JAVA篇:部分知识汇总-关键字、final、不可继承的类和数据类型转换的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程