数据类型
基本数据类型
整数类型
byte | 1字节 | -27——27-1 | -128——127 |
---|---|---|---|
short | 2字节 | -215——215-1 | -32768-32767 |
int | 4字节 | -231——231-1 | |
long | 8字节 | -264——263-1 |
小数类型 IEEE754
float | 4字节 | 单精度 | >8字节的long |
---|---|---|---|
double | 8字节 | 双精度 | >4字节的float |
字符类型
char | 2字节 | 0-65535 |
---|
布尔类型
boolean | true/false |
---|
变量的默认类型
- 小数类型:
默认的数据类型为:double
如果想要表示一个单精度的小数在小数后面加一个F - 整数类型:
默认的数据类型为:int
如果想要表示一个大范围的证书在证书的后面加一个L
数据类型转换之隐式转换
- 当使用小范围类型的数据和大范围类型的数据在运算时,会先将小范围类型的数据转为大范围类型,再运算。结果是一个大范围类型的数据。
- 范围类型比较:
byte<char<short<int<long<float<double - int范围之下的类型在相互运算时,统统转为int类型
运算符
算数运算符
- +:加法运算符
(1)字符之间的拼接
(2)表示正数
(3)相加运算 - -:减法运算符
(1)表示负数
(2)相减运算 - /:除法运算符 取商运算符
(1)两个整数相除,只取商,不取余
(2)如果有一个数是小数,结果还是一个小数 - %:取余运算符
(1)两个整数相除,取两个数相除的余数
(2)两个数相除取余,余数的正负只和第一个数的正负有关,跟第二个数没有关系
自增自减运算符
- ++ –
- 运算特点
++:在变量的基础上加一
–:在变量的基础上减一 - 注意事项
(1)如果自增或者自减单独作为一句存在,符号放在变量前后没有区别,都是自增或自减一
(2)如果自增和自减跟其他语句或表达式一起存放
符号放在变量的后面,先取值,后运算
符号放在变量的前面,先运算,后取值
赋值运算符
- =:将=右边的数据赋值给左边
- +=、-=、*=、/=、%=
将符号左右两边的数据进行对应的运算,将运算结果赋值给左边的变量
比较运算符
- 比较运算符是比较两个数据大小或是是否相等的符号
- 比较之后的结果:true/false
- (> >= < <= == !=)
只可以比较数值类型:整数、小数、字符
逻辑运算符
- &&:逻辑短路与
左右两边的表达式结果都为真,运算结果为真
左右两边的表达式结果有一个为假,运算结果为假
特点:
如果符号左边的表达式结果为假,右边的表达式直接不执行,直接取假
如果符号左边的表达式结果为真,右边的表达式需要执行,结果跟两个表达式的取值有关 - ||:逻辑短路或
左右两边的表达式结果有一个为真,运算结果就为真
左右两边的表达式结果都为假,运算结果就是假
特点:
如果符号左边的表达式结果为真,右边的表达式不用执行,直接取真
如果符号左边的表达式结果为假,右边的表达式需要执行,执行的结果跟两个表达式的结果有关 - !:逻辑非
对表达式的结果取反
遇真为假,遇假为真
位移运算符
- 左移运算符<<
特点:一个数据(二进制)向左移动一位,数据扩大2倍 - 右移运算符 >>
特点:一个数据向右移动一位,数据缩小2倍
既可以操作正数,也可以操作负数 - 无符号右移运算符>>>
特点:一个数据向右移动一位,缩小2倍
只可以操作正数,不可以操作负数 - 总结:位移运算符其实 和直接* /的方式一样但是位移运算符的计算效率高
三元运算符
- 元:表达式或者数据
- 三元运算符:直接操作三个表达式或者三个数据的符号
- 格式:
表达式1 ? 表达式2 : 表达式3; - 说明:
(1)表达式1:必须是一个布尔表达式(结果要么为真,要么为假)
(2)表达式2或者表达式3:可以使任意操作,只要有一个结果即可 - 流程:
(1)先计算表达式1的值,得到的结果要么为真,要么为假
(2)人如果表达式的结果为真,执行表达式2,表达式3不执行
(3)如果表达式1的结果为假,跳过表达式2执行表达式3
public class Demo {
public static void main(String[] args) {
int i = 10;
//计算i是奇数还是偶数
//运算结果为真,返回偶数,否则返回奇数
String s = i % 2 == 0 ? "偶数" : "奇数";
System.out.println(s);
int j = 10;
//运算结果为真,执行 ++j ,否则执行 --j
int k = (i % 2 != 0) ? ++j : --j;
System.out.println(k);
}
}