Java数据类型与运算符
一、注释
- 为了方便程序的阅读,Java语言允许程序员在程序中写上一些说明性的文字,用来提高程序的可读性,这些文字性的说明就称为注释。 注释不会出现在字节码文件中,即Java编译器编译时会跳过注释语句。 在Java中根据注释的功能不同,主要分为单行注释、多行注释和文档注释。
- 单行注释:使用“//”开头,“//”后面的单行内容均为注释。
- 多行注释: 以“/*”开头以“*/”结尾,在“/*”和“*/”之间的内容为注释,我们也可以使用多行注释作为行内注释。但是在使用时要注意,多行注释不能嵌套使用。
- 文档注释:以“/**”开头以“*/”结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)
二、基本数据类型(数值型,字符型,布尔型)
类型 | 所占空间(bit) | 所占空间(byte) | 取值范围 | 对应的装箱基本类型 | 默认值 | 基本类型大小 | ||
byte | 8bit | 1byte | -128~127 |
|
0 | >、<、==等 | ||
short | 16bit | 2byte | -32768~32767 | Short | 0 | >、<、==等 | ||
int | 32bit | 4byte | -(2^31)~(2^31)-1 | Integer | 0 | >、<、==等 | ||
long | 64bit | 8byte | -(2^63)~(2^63)-1 | Long | 0L | >、<、==等 | ||
float | 32bit | 4byte | (+-)3.402823447E+38F | Float | 0.0F | Float.compare()或Double.compare() | ||
double | 64bit | 8byte |
|
Double | 0.0D | Double.compare() | ||
boolean | 1bit | 1/8byte |
|
|
false | 无 | ||
char | 16bit | 2byte |
|
Char | /u0000 | >、<、==等 |
自动类型转换
当一个算数表达式中包含多个基本类型的值时,整个算数表达式的数据类型将发生自动提升、
当一个算数表达式中包含多个基本类型的值时,整个算数表达式的数据类型将发生自动提升、
所有byte类型、short类型和char类型将被提升到int类型。
整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
强制类型转换
强制类型转换,又被称为造型,用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。
三、运算符
算数运算符
+:加
-:减
*:乘
/:除。 如果两个操作数都是整数类型,则计算结果是整数,19/4=4,除数不能是0。如果两个操作数有一个是浮点数或者两个都是浮点数则计算结果也是浮点数,此时允许除数是0,得到结果正无穷大,或者负无穷大。
%:求余运算符。5.2%3.1=2.1 如果两个中存在浮点数,第二个操作数是0或0.0运算结果NaN;
++:自加。单目运算符,只能操作一个数; ++a 先自增1后运算,a++ 先拿a去运算后a自增1;
--:自减。
赋值运算符
+=:a+=b <=> a=a+b
-=:a-=b <=> a=a+b
*=:a*=b <=> a=a*b
/=:a/=b <=> a=a/b
%b:a%=b <=> a=a%b
关系运算符
关系运算符的运算结果是布尔值:true/false
=:赋值运算符,而真正的判断两个操作数是否相等的运算符是==。
==、!= :所有(基本和引用)数据类型都可以使用。
> 、>=、 <、 <=:仅针对数值类型(byte/short/int/long, float/double。以及char)。
instanceof:判断关键字左边对象是否属于右边 类的实例/子类实例/实现类/接口的实例 对象,返回true/false。
实例对象 instanceof 类/接口
逻辑运算符
只操作布尔值
逻辑与 &( 与) :两个操作数为true,结果才是true,否则是false
逻辑或 |(或) :两个操作数有一个是true,结果就是true
短路与 &&( 与): 只要有一个为false,则直接返回false
短路或 ||(或) :只要有一个为true, 则直接返回true
逻辑非 !(非) 取反:!false为true,!true为false
逻辑异或 ^(异或): 相同为false,不同为true
位运算符
只操作数值
~ :取反
& :按位与
| :按位或
^ :按位异或 。7^4^4=7
<< :左移运算符,左移1位相当于乘2
int b = 3<<2; //相当于:3*2*2;
条件运算符
x ? y : z
x是布尔值,若为true结果为y,若为false结果z
运算符优先级
优先级 | 运算符 | 结合性 | |
1 | () [] . | 从左至右 | |
2 | ! +(正) -(负) ~ ++ -- | 从右向左 | |
3 | * / % | 从左至右 | |
4 | +(加) -(减) | 从左至右 | |
5 |
|
从左至右 | |
6 | < <= > >= instanceof | 从左至右 | |
7 | == != | 从左至右 | |
8 | &(按位与) | 从左至右 | |
9 | ^ | 从左至右 | |
10 | | | 从左至右 | |
11 |
|
从左至右 | |
12 | || | 从左至右 | |
13 | ?: | 从右向左 | |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右向左 |