java总结.

来源:互联网 发布:怎么把淘宝下载到桌面 编辑:程序博客网 时间:2024/06/06 04:36

1.在java中,goto和const作为保留的关键字而存在,虽然没有在程序中使用,但是也禁止将其作为标识符。

2.true、null、false是三个字面常量,并非java关键字,但在程序中也禁止将其作为标识符。

3.标识符有字母(为Unicode字符集,不再局限于26个字母)、数字、货币符号($¥等)、链接符号(_等)组成;标识符的首字符可以是字母、货币符号(尽量避免$字符在标识符中的使用,可能会预编译器的命令冲突)和链接符号,不能是数组;标识符不能与java关键字相同,不能和java中预定义的字面常量名称相同;标识符的首字符所对应的代码必须是的Character类的isJavaIdentifierStart方法返回值为true,后续字符所对应的代码点必须使得Character类的isJvaIdentifierPart方法返回值为true;标识符的长度必须在系统所支持的范围之内(最大的长度可以到65535)。标识符是区分大小写的,当且仅当两个标识符的Unicode字符序列完全相同时,两个标识符才是相同的。

4.Unicode转义的处理时期要早于转义序列符与八进制转义;Unicode转义处理时期是在编译器将程序解析成各种符号前就进行。如果\u后没有接4个十六进制数字,将会产生编译错误,注释也不例外;增补字符使用连个代码元(一个代理对)来表示,所以所有增补字符都不能使用char类型的常量表示;增补字符代理对的值区间U+D800~U+DFFF,该区间没有分配字符;利用这个特征,程序就可以来区分一个char类型的字符到底是单个还是一个增补字符的代理字符。

5.byte、short、char类型,当对其赋予编译时期的常量,而该常量又没有超过变量的取值范围,编译器会进行隐式转换。这种隐式转换是安全的,因为该收缩转换只适用于变量的赋值,而不适用方法调用语句(方法调用时的参数传递);char是无符号类型,因此char与short、char与byte之间转换需要显式转换(从byte到char的转换为扩展收缩转换,先将byte扩展转换int,然后再收缩转换char);在整数数据间的扩展转换,若果操作数是char,则进行无符号扩展,扩展为0。若果操作数是byte、short或int,则进行有符号扩展,扩展位位该变量的符号位;整数数据之间的转换,仅仅是截断并丢弃高位,不做任何其他处理。

6.浮点类型的不精确性,十进制表示的浮点值只有很小的一部分可以用二进制准确表示,剩下的都只是近似值;浮点型在数量级相差很大的浮点数据间做加减运算可能夜无法打到预期值;从整型转换为浮点型,如果整型的值过大(小),就可能会损失一些最低有效位,从而造成数字的不准确性。如果A值位于可用浮点类型表示的两个相邻值B与C之间:当A与B的间隙(A与B差的绝对值)小于A与C的间隙时,使用B代替A;当A与B的间隙大于A与C的间隙时,使用C来代替A;当A与B的间隙等于A与C的间隙时,在B、C二者中选择有效位数最低位为0的那个值来代替A。

7.增强for循环:只能对元素进行顺序访问;只能访问数组(集合)中的所以元素;在循环中没有当前的索引,无法对指定元素进行操作。使用增强for循环的条件右侧的变量必须是数组或者Iterable类型。增强for循环的底层也是基本的for循环。

8.编译器在分析字符时,会尽可能多地结合有效字符(贪心。贪心的作用:可以对转义字符等进行特殊处理),而不管这种结合方式符不符合语法规则。

9.前置++与后置++都是将变量i的值加1,而不是前置++先加1然后运算,而后置++先运算后+1;(程序上)后置++先将变量赋值给一个临时变量,然后将变量的值加1,接下来使用那个临时变量参与运算;(指令上)后置++ 在执行增值指令前,先将变量的值压入栈,执行增值指令后,使用的是之前压入栈的值。

10.两个操作数只要有一个为NaN,商为NaN;当两个操作数都为Infinity或者都为0时(不论正负),商为NaN;当商不是NaN时,商的符号与被除数和除数的符号有关,当二者符号相同时,符号为正,当二者符号不同时,符号为负;又穷数除以Infinity,商为0;Infinity除以有穷数,商为Intinity;有穷数或Infinity除以0,商为Infinity;0除以有穷数或者Infinity,商为0(商的符号根据第3点 )。浮点的相除与求余运算在不同于整型的相除与求余运算,当除数为0时,浮点运算不会产生ArithmeticException异常;在java中,操作数的计算顺序是从左向右,运算符也是从左到右。

11.移位运算时,如果左侧操作数是int,右侧操作数只有最低5位是有效的;如果是long,右侧操作数只有最低6位是有效的。如果A不能整除2^n,当A是正数时,A的右移n位与A除以2^n的值相等,当A是负数时,不相等(右移指有符号右移)。

12.条件运算符“?:”有三个表达式,表达式1必须为boolean或者Boolean,表达式2与表达式3可以是任意类型,根据表达式的取值不能去选择是表达式2或者表达式3;根据表达式2或者表达式3的类型不能,条件表达式的类型也会不同。一个变量A异或一个变量B两次,结果为A;异或运算可以交换连个变量的值,并且这种方式比相加交换更可取。

13.switch表达式可以是byte、char、short、int、Byte、Short、Character、Integer、String或Enum类型;case表达式必须是常量表达式或枚举常量名,并且其类型可以赋值给switch表达式类型;switch表达式的类型为基本数据类型的包装类时,将包装类型拆箱为基本数据类型;当switch类型为枚举类型时,回创建一个匿名类来辅助完成;当switch类型为String类型时,将switch语句拆分为两个switch语句,分别对String对象的哈希码及临时常量来辅助完成。

原创粉丝点击