Java的关键字与数据类型简介

1 Java中的关键字

被Java语言赋予特定含义的单词就可以称为Java关键字。

1.1 关键字的特点

  1. 组成关键字的单词字母全部小写。
  2. Java具有53个关键字,包括2个保留关键字goto、const。在C/C++中,goto常被用于跳出多重循环。但goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。const在C语言中定义常量的作用,而Java中要想定义常量可以使用final关键字。goto和const作为保留字存在,目前并不使用,但以后可能会升级为关键字。
  3. 类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观。

1.2 关键字\保留关键字表

53个关键字,包括两个保留字。

访问控制修饰符的关键字(共3个)
publicprotectedprivate(缺省)
定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象(共6个)
classabstractinterface extendsimplements
new
修饰类、方法、属性和变量(共9个)
staticfinalspuerthisnative
strictfpsynchronizedtransientvolatile
程序控制语句(共12个)
ifelsewhileforswitch
casedefaultdobreakcontinue
returninstanceof
用于异常处理的关键字(共5个)
trycatchfinallythrowthrows
用于包的关键字(共2个)
packageimport
数据类型(共10个)
floatdoublelongintshort
bytecharbooleanvoidenum
其他关键字(共4个)
truefalseassert(断言)null
保留字(共2个)
gotoconst

2 Java中的数据类型

2.1 基本数据类型

一共八种,8bit(位)=1byte(字节)

类型大小(bit)取值范围默认值
byte8-128 - 127(byte)0
short16-32768 - 32767(short)0
int32-2147483648 - 21474836470
long64-9233372036854477808 - 92333720368544778070L
float32-3.40292347E+38 - 3.40292347E+38(有效位数为6-7位)0.0f
double64大约-1.79769313486231570E+308 - 1.79769313486231570E+308(有效位数为15位)0.0d
boolean1true /falsefalse
char16'\u0000' - '\uffff'(无符号,转换为十进制就是0-65535)'/uoooo'(null)

  boolean 只有两个值:true/false,可以使用 1 bit 来存储,但是具体大小没有明确规定。某些JVM 会在编译时期将 boolean 类型的数据转换为int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,不过是通过读写 byte 数组来实现的。
  当变量作为作为类/对象成员使用时,java才确保给定其初始值,防止程序运行时错误。上诉默认值并不适用于“局部”变量(即:非某个类的字段)。
  可以使用十六进制表示浮点数值。例如,0.125可以表示成0x0.1p1。在十六进制表示法中,使用p表示指数,而不是e。注意,尾数采用十六进制,指数采用十进制。指数的基数是2,而不是10。即0.125=0.0625 * 2^1。
  Java中所有“非数值”的值都认为是不相同的。不能这样检测一个特定值是否等于Double.NaN:

if (x == Double.NaN) // is never true

  然而可以使用Double.isNaN 方法:

if (Double.isNaN(x)) // check whether x is "not a number"

2.1.1 基本数据类型之间的转换

2.1.1.1 隐形(自动)转换

类型的向上提升。小的数据类型—>大的数据类型。

  在运算时会将数据转换为二进制数,短长度的二进制数会通过补0的方式补齐相对与大长度的二进制数缺少的位数,再进行运算。因此运算结果会默认转换为大的数据类型
规则:

如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型;
否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型;
否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型; 否则,两个操作数都将被转换为int类型。

注意
  char b = ‘a’+18; //正确,因为char本身在码表中可以用数字表示的,然后运算完成之后还是char,应该输出s。
  char a = ‘a’;char b = a + 18; // 这样就是错的,因为JVM运算完后不知道结果是多少,所以会提示损失精度的错误。

2.1.1.2 强制转换

类型由大类型向小类型转换。

例如:A的ASCII码为65,a的ASCII码为97 ,char类型转换时使用。

强制转换的语法: (数据类型)变量;

Short b=1;
Int c=2;
Short a=(short)(b+c);

注意

  1. 强制转换时候,应该考虑范围,是否超过最大值。
  2. 数据类型强制转换,数据类型应该互相兼容,否则可能损失精度。
2.1.1.3 案例
byte b1=3,b2=4,b;
b=b1+b2;  //这一句编译失败,变量的计算,先提升类型,再计算。
b=3+4;   //这一句正常,常量值的计算,先算出结果,再在范围内查找,找到了就不会提升,找不到才会提升。
byte b = 130;  //编译有问题,超过了范围,应该强制转型,但是最终强转之后结果为-126。
short s1 = 1; s1 = s1 + 1; //在s1+1运算时会自动提升表达式的类型为int,那么将int赋予给short类型的变量s1会出现类型转换编译错误。
short s1 = 1; s1 +=1; //+=是java语言规定的运算符,java编译器会对它进行特殊处理(转换为原来的short类型),因此可以正确编译。也叫隐式类型转换。

2.2 复合类型(引用类型)

数组: int [] arr;
类、自定义的类:class、abstract class
String类型:特殊的引用类型(不可变)
接口、枚举、null类型

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘Java

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

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

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

打赏作者

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

抵扣说明:

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

余额充值