文章目录
- 1.数值数据类型和操作
- 1.1 数值类型
- 1.2 从键盘读取数值
- 1.3 数值操作符
- 2.数值型字面值
- 2.1 整形字面值
- 2.2 浮点型字面值
- 2.3 科学记数法
- 示例:显示当前时间
- 3.增强赋值运算符
- 4.自增和自减操作符
- 5.数值类型转换
1.数值数据类型和操作
1.1 数值类型
类型名 | 范围 | 储存空间 |
---|---|---|
byte | -27(-128)~27-1(127) | 8位带符号数 |
short | -215(-32 768)~ 215-1(1(32 767) | 16位带符号数 |
int | -231(-2 147483 648)~231-1(2 147 483 647) | 32位带符号数 |
long | -263~263-1 | 64位带符号数 |
float | 负数范围:-3.4028235E+38~-1.4E-45 正数范围:1.4E-45~3.4028235E+38 | 32位,标准IEEE 754 |
double | 负数范围:-1.7976931348623157E+308-4.9E-324 正数范围:4.9E-324~1.7976931348623157E+308 | 64位,标准JEEE 754 |
1.2 从键盘读取数值
Scanner input = new Scanner(System.in);
byte bytevalue = input.nextByte();
类似的,还有nextShort、nextInt、nextLong、nextFloat、nextDouble
1.3 数值操作符
名称 | 符号 |
---|---|
加 | + |
减 | - |
乘 | * |
除以 | / |
求余 | % |
当除法的操作数都是整数时,除法的结果就是整数,小数部分被舍去(即整除以)。例如:5/2的结果是2而不是2.5,而-5/2的结果是-2而不是-2.5。
操作符%通常用在正整数上,实际上,它也可用于负整数和浮点值。只有当被除数是负数时,余数才是负的。
2.数值型字面值
2.1 整形字面值
- 整型字面值默认是int型的
- 表示一个1ong型的整型字面值,需要在其后加字母L或l。推荐使用L,因为l(L的小写)很容易与1(数字1)混淆。
- 默认情况下,整型字面值是一个十进制整数。要表示一个二进制整数字面值,在数字前使用 0b或者 0B。要表示一个八进制整数字面值,在数字前使用0。而要表示一个十六进制整数字面值,在数字前使用0x或0X。
- 为了提高可读性,Java 允许在一个数值型字面值的两个数字间使用下划线。下划线必须置于两个数字之间。
2.2 浮点型字面值
- 浮点型字面值带小数点,默认情况下是doub1e型
- 可以通过在数字后面加字母f或F表示该数为f1oat 型字面值,也可以在数字后面加d或D表示该数为double型字面值
2.3 科学记数法
浮点型字面值也可以用ax10b形式的科学记数法表示。1.23456x102可以写成1.23456E2或者1.23456E+2,而1.23456x10-2等于1.23456E-2。E(或e)表示指数,既可以用大写字母也可以用小写字母。
示例:显示当前时间
public class ShowCurrentTime{public static void main(String[] args) {//System类中的方法currentTimeMi11is返回从GMT1970年1月1日00:00:00开始到当前时刻的毫秒数long t = System.currentTimeMillis();//总秒数long totalSeconds = t/1000;//秒数long seconds = totalSeconds%60;//总分钟数long totalMinutes = totalSeconds/60;//分钟数long minutes = totalMinutes%60;//总小时数long totalHours = totalMinutes/60;//小时数long hours = totalHours%24;}
}
3.增强赋值运算符
操作符 | 名称 |
---|---|
+= | 加法赋值操作符 |
-= | 减法赋值操作符 |
*= | 乘法赋值操作符 |
/= | 除法赋值操作符 |
%= | 求余赋值操作符 |
增强赋值操作符在表达式中所有其他操作符计算完成后执行。例如: |
x /= 4 + 5.5 * 1.5;
//等同于
x = x / (4 + 5.5 * 1.5);
4.自增和自减操作符
示例 | 名称 | 意义 |
---|---|---|
++var | 前置自增 | 将 var 加 1,在语句中使用新的 var 值 |
var++ | 后置自增 | 将 var 加 1,但是在语句中使用原来的 var 值 |
–var | 前置自减 | 将 var 减 1,在语句中使用新的 var 值 |
var– | 后置自减 | 将 var 减1,但是在语句中使用原来的 var值 |
5.数值类型转换
类型转换是将一种数据类型的值转换成另一种数据类型的值的操作。将范围较小的类型转换为范围较大的类型称为扩展类型(widening a type),而将范围较大的类型转换为范围较小的类型称为缩小类型(narrowing a type)。Java将自动扩展一个类型,但是缩小类型必须显式完成。 比如:3/4.5等同于3.0/4.5。
显式完成的语法:
System.out.printin((int)1.7); // 1
System.out.printin((double)1/2); // 1首先被转换为1.0,所以得0.5
System.out.print1n(1/2); // 0
如果要将一个值赋给一个范围较小的类型的变量,例如将 double型的值赋给 int型变量,就必须进行类型转换。如果在这种情况下没有使用类型转换,就会出现编译错误。
double a = 1.5;
int b = (int)a;
System.out.printin(a); // 1.5
System.out.printin(b); // 1
Java中,x1op=x2形式的增强赋值表达式实现为x1=(T)(x1 op x2),这里T是x1的类型。
int sum = 1;
sum += 2.5;
// 等价于下式:
sum = (int)(sum + 2.5)