- 1⃣️
常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符’a’、浮点数3.2等。在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。接下来就对这些常量进行详细讲解。
1.整型常量
整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式,具体说明如下:
● 二进制:由数字0和1 组成的数字序列。在JDK 7以后,允许使用二进制字面值来表示整数,此时二进制数值前面要以0b或0B开头,目的是为了和十进制进行区分,如:0b01101100、0B10110101。
● 八进制:以0开头,并且其后由0 ~7范围(包括0和7)内的整数组成的数字序列,如:0342。
● 十进制:由数字0~9范围(包括0和9)内的整数组成的数字序列。如:198。
● 十六进制:以0x或者0X开头,并且其后由09、AF(包括0和9、A和F)组成的字符序列,如:0x25AF。
需要注意的是,在程序中为了标明不同的进制,数据都有特定的标识,八进制必须以0开头,如:0711、0123;十六进制必须以0x或0X开头,如:0xaf3、0Xff;整数以十进制表示时,第一位不能是0,0本身除外。例如十进制的127,用二进制表示为01111111,用八进制表示为0177,用十六进制表示为0x7F或者0X7F。
2.浮点数常量
浮点数常量就是在数学中用到的小数,分为float单精度浮点数和double双精度浮点数两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何后缀,此时Java虚拟机会将浮点数默认识别为double双精度浮点数。浮点数常量还可以通过指数形式来表示。具体示例如下:
2e3f 3.6d 0f 3.84d 5.022e+23f
3.字符常量
字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引号(’ ')引起来,它可以是英文字母、数字、标点符号以及由转义序列来表示的特殊字符。具体示例如下:
‘a’ ‘1’ ‘&’ ‘\r’
4.字符串常量
字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号(" ")引起来,具体示例如下:
“HelloWorld” “123” “Welcome \n XXX” “”
一个字符串常量可以包含一个字符或多个字符,也可以不包含任何字符,即长度为零。
5.布尔常量
布尔常量即布尔类型的两个值true和false,该常量用于区分一个条件的真假。
6.null常量
null常量只有一个值null,表示对象的引用为空。关于null常量将会在第三章中详细讲解。
而Java中的常量,其实就是特殊的变量,也是固定不变的量,有且只能进行一次赋值。Java中定义常量的语法也非常简单,只需要在定义变量的语法基础上加上一个final关键字修饰即可,其语法格式如下:
final 常量类型 常量名 [= 初始值];
上述定义Java常量的语法格式与定义Java变量的语法格式基本相同,同样,定义Java常量需要声明定义常量类型、常量名,并可以对该常量进行初始化赋值,也可以后续赋值,唯一不同的是,定义Java常量时必须用final关键字修饰,来声明是一个不可改变的量。其具体使用示例如下:
final int a=0, b; // 定义一个int类型的常量a和b,并为常量a初始化赋值0b= 1; // 后续为常量b赋值
图片上传处理中…
多学一招:转义符——反斜杠(\)
在字符常量中,反斜杠(\)是一个特殊的字符,被称为转义符,它的作用是用来转义紧随其后的一个字符。转义后的字符通常用于表示一个不可见的字符或具有特殊含义的字符,例如“\n”表示换行。下面列出一些常见的转义字符:
● \r 表示回车,将光标定位到当前行的开头,不会跳到下一行。
● \n 表示换行,换到下一行的开头。
● \t 表示制表符,将光标移到下一个制表符的位置,就像在文档中用Tab键一样。
● \b 表示退格符号,就像键盘上的Backspace。
以下的字符都有特殊意义,无法直接表示,所以用斜杠加上另外一个字符来表示:
● ’ 表示单引号字符,Java代码中单引号表示字符的开始和结束,如果直接写单引号字符(’),程序会认为前两个是一对,会报错,因此需要使用转义(’)。
● " 表示双引号字符,Java代码中双引号表示字符串的开始和结束,包含在字符串中的双引号需要转义,比如"he says,“thank you”."。
●\ 表示反斜杠转义字符,由于在Java代码中的斜杠(\)是转义符,因此需要表示字面意义上的\,就需要使用双斜杠\。
.
- 2⃣️.建议用接口或枚举来定义
转载自https://my.oschina.net/cdzsc/blog/86107
在抽象类中,可以包含一个或多个抽象方法;但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加“抽象”。
-
为什么接口中只能定义static final:
1.1 static(这时暂且认为是变量)解释:因为一个类可以实现多个接口,如果一个类同时实现了多个接口而每个接口中都定义了同一个变量的话就会产生在类中不知道是哪个接口中的变量了,所以必须定义成static的,每个接口拥有各自的这个变量。
1.2 final解释:因为一个接口可以被多个类实现,如果不定义成final的话每个实现了该接口的类都去改变这个变量就会产生错误,所以必须定义成final。
public interface SataHdd{
//连接线的数量
public static final int CONNECT_LINE=4;
//写数据
public void writeData(String data);
//读数据
public String readData();
}
注意:接口中声明的成员变量默认都是 public static final 的,必须显示的初始化。因而在常量声明时可以省略这些修饰符。
-
为什么抽象类中可以定义变量:
因为每个类只能有一个父类,就不会产生上述的接口中的一些问题。
注: