标识符命名、instanceof 、自动装箱与拆箱、java关键字

标识符的命名规则

标识符的含义:

是指在程序中,我们自己定义的内容,譬如,的名字,方法名称以及变量名称等等,都是标识符。

命名规则:(硬性要求)

标识符可以包含英文字母,0-9的数字,$以及_
标识符不能以数字开头
标识符不能是关键字

命名规范:(非硬性要求)

类名规范:首字符大写,后面每个单词首字母大写(大驼峰式)。
变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)。
方法名规范:同变量名

instanceof 关键字的作用

instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为
boolean result = obj instanceof Class
其中 obj 为一个对象,Class 表示一个类或者一个接口.当 obj 为 Class 的对象,或者是其直接或间接子类,或者是其接口的实现类,结果result 都返回 true,否则返回false。
注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。

int i = 0;
System.out.println(i instanceof Integer);
//编译不通过 i必须是引用类型,不能是基本类型
System.out.println(i instanceof Object);//编译不通过
Integer integer = new Integer(1);
System.out.println(integer instanceof Integer);//true
System.out.println(null instanceof Object);
//false ,在 JavaSE规范 中对 instanceof 运算符的规定就是:如果 obj 为 null,那么将返回 false。

Java自动装箱与拆箱

装箱就是自动将基本数据类型转换为包装器类型(int-->Integer);调用方法:Integer的
valueOf(int) 方法
拆箱就是
自动将包装器类型转换为基本数据类型(Integer-->int)
。调用方法:Integer的intValue方法
在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:
Integer i = new Integer(10);
而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这
样就可以了:
Integer i = 10;


面试题

1: 以下代码会输出什么?
image
运行结果:
true
flase
为什么会出现这样的结果?-考虑integer封装类的大小
image

输出结果表明i1和i2指向的是同一个对象,而i3和i4指向的是不同的对象。此时只需一看源码便知究竟,下面这段代码是Integer的valueOf方法的具体实现:
image
其中IntegerCache类的实现为:
image

从这2段代码可以看出,在通过valueOf方法创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。
上面的代码中i1和i2的数值为100,因此会直接从cache中取已经存在的对象,所以i1和i2指向的是同一个对象,而i3和i4则是分别指向不同的对象。

什么是java关键字

事先定义的,有特别意义的标识符。利用关键字来告诉编译器其声明的变量类型、类、方法特性等信息。
java关键字大全

1、abstract-表明类或者成员方法具有抽象属性

2、assert-断言,用来进行程序调试

3、boolean-基本数据类型之一,声明布尔类型的关键字

4、break-提前跳出一个块

5、byte-基本数据类型之一,字节类型

6、case-用在switch语句之中,表示其中的一个分支

7、catch-用在异常处理中,用来捕捉异常

8、char-基本数据类型之一,字符类型

9、class-声明一个类

10、const-保留关键字,没有具体含义

11、continue-回到一个块的开始处

12、default-默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现

13、do-用在do-while循环结构中

14、double-基本数据类型之一,双精度浮点数类型

15、else-用在条件语句中,表明当条件不成立时的分支

16、enum-枚举

17、extends-表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口

18、final-用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量

19、finally-用于处理异常情况,用来声明一个基本肯定会被执行到的语句块

20、float-基本数据类型之一,单精度浮点数类型

21、for-一种循环结构的引导词

22、goto-保留关键字,没有具体含义

23、if-条件语句的引导词

24、implements-表明一个类实现了给定的接口

25、import-表明要访问指定的类或包

26、instanceof-用来测试一个对象是否是指定类型的实例对象

27、int-基本数据类型之一,整数类型

28、interface-接口

29、long-基本数据类型之一,长整数类型

30、native-用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的

31、new-用来创建新实例对象

32、package-包

33、private-一种访问控制方式:私用模式

34、protected-一种访问控制方式:保护模式

35、public-一种访问控制方式:共用模式

36、return-从成员方法中返回数据

37、short-基本数据类型之一,短整数类型

38、static-表明具有静态属性

39、strictfp-用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范

40、super-表明当前对象的父类型的引用或者父类型的构造方法

41、switch-分支语句结构的引导词

42、synchronized-表明一段代码需要同步执行

43、this-指向当前实例对象的引用

44、throw-抛出一个异常

45、throws-声明在当前定义的成员方法中所有需要抛出的异常

46、transient-声明不用序列化的成员域

47、try-尝试一个可能抛出异常的程序块

48、void-声明当前成员方法没有返回值

49、volatile-表明两个或者多个变量必须同步地发生变化

50、while-用在循环结构中

posted @   Mayday-zhou  阅读(125)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示