ASCII码
一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。一共规定了128个字符的编码,这128个符号(包括32个不 能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
缺点:不能表示所有的字符
Unicode编码
一种编码,将世界上所有的符号都纳入其中。这个编号范围 从 0x000000 到0x10FFFF (十六进制),有 110 多万,每个字符都有 一个唯一的 Unicode 编号,这个编号一般写成 16 进制,在前面加上 U+。 UTF-8 是 Unicode 编码的一种具体实现,它规定了字符转换到二进制编码的一系列规则.
基本数据类型转换
浮点型字面量默认是double.
声明float类型时,在字面量后面加F/f.
单精度 4字节
双精度 8字节
boolean逻辑值只能用true. false两个关键词表示
Java中可以从任意基本类型转型到另外的基本类型 .
例外 : boolean 类型不可以转换为其他的数据类型。
byte short int long float double char 都是数值型
容量小 ----> 容量大 默认会自动转换 byte,short,char-->int
容量大 ----> 容量小 默认不能进行转换,可以强制类型转换;可能会出现的问题:数据溢出,精度降低
转换分为默认转换和强制转换
默认转换 :整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为byte,short,char->int->long->float->double byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型 强制转换
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一 种数据类型,然后再进行计算。
long类型和float类型
什么4个字节的float型的最大值会大于long型的最大值呢?
long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平分正负,数值范围是负2的63次方到正2的63次方-1。而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的: V=(-1)^s * M * 2^E
浮点数的32位不是简单的直接表示大小,而是按照一定的标准分配的。其中第1位,符号位,即S。 接下来的8位,指数域,即E。 剩下的23位,小数域,即M。也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是按照上述公式计算而来,通过这个公式,虽然只用到了4个字节,但是浮点数却 比长整型的最大值要大。
运算符
算术运算符: +,-,*,/,%,++,--
字符串连接运算符:+
关系(比较)运算符: ,<,>=,<=,==,!=
逻辑运算符: !,& , | , &&,||
赋值运算符:= ,+ =,- =,* =,/ =
条件运算符
位运算符
算术运算
+加法 数值+数值 数值+字符
+字符串连接 字符串+字符串 数值+字符串
-*/ % ++ -- 数值+数值 数值+字符
++ 自增1
-- 自减1
比较运算符
逻辑运算符
逻辑运算符:
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
逻辑值与逻辑值既可以参与逻辑运算,也可以参与位运算
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算
//false & 后面的表达式需要继续执行
//false &&(短路)后面其他表达式就不执行
//true | 后面其他表达式仍需执行
//true ||(短路) 后面的其他表达式不需要执行 true
//!取反
赋值运算符
符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
扩展赋值运算符:+=, -=, *=, /=, %=
条件运算符
语法: (条件表达式)? 表达式1:表达式2;条件表达式结果为true,运算后的结果是表达式1 为;false,运算后的结果是表达式2;
位运算(比特位)
移位
<< 左移 >>右移 >>>无符号右移
有符号移动,符号不变
无符号移动,注意页数 移位后,高补位
表达式的运算顺序
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)