版权声明:本文为博主原创文章,转载请声明出处并添加原文链接。 https://blog.csdn.net/azsx02/article/details/78401879
整数类型
java整型默认为int型,声明long可以后加’l’或’L’
byte –> 1字节
short –>2字节
int –> 4字节
long –> 8字节
BigInteger: 更大的整数
BigDecimal:更大的小数
进制
- 八进制: 0开头,如 int c = 011;
- 十六进制: 0x开头,如int d = 0xf1;
- 进制转换
Integer.toBinaryString()
Integer.toHexString()
类型自动转换,变量与常量
- 若数据大小没有超过byte/short/char的表述范围,则自动转型,==它们可以自动转成int==
- long a = 123456789124 ,变量a, 常量123456789124默认int型,超出int范围。
浮点型
float –> 4字节 –> +-3.403e38 都是4字节,和int对比
double –> 8字节 –> +-1.9e308
浮点数存在舍入误差,许多小数不能精确表示,若要无误差计算,需要使用BigDecimal
注意浮点数比较大小,有误差,可能不相等
浮点数值默认采用double型,要变为float需要加F/f
浮点类型两种表示方法:
- 科学计数法 314e2 , 314E2, 314e-2
- 十进制表示法 3.14
字符型和Boolean型
- 字符型
- ’a’是字符, “a”是字符串
- 两个字节 0-65535 Unicode
- char = ‘\t’; 转义字符
- char 0-65535 可以当整数来运算
- 0-65535的整数也可以直接转型为char,但注意强制类型转换,因为char只 要2字节
char c5 = (char)99; //强制转型,char 2字节,输出a
- Boolean型
- 占一位,不是一个字节
- 不要这样写if(b==true&&done=false),直接if(b&&!done)
自动转型和强制转型
package trans_type_10;
//测试自动转型和强制转型
public class TestTransType {
public static void main(String[] args){
byte b = 123; //可以转
// byte b2 = 300; //不可转
// char c = -3;
char c2 = 'a';
int i = c2;
long l = 133124;
float f = l;
System.out.println(f);
//强制转型
int i2 = -100;
char c3 = (char)i2; //-100超过char的表述范围,所以转换成无意义的值
System.out.println(c3);
//表达式中的类型提升问题
int aa = 3;
long bb = 4;
double dd = 5.5;
int cc = (int)(aa+bb); //做所有的二元运算(+-*/%),类型提升
float ff = (float)(aa+dd);
int money = 1000000000; //10亿
int years = 20;
// int total = money*years; //返回是负数
long total = (long)money*years;
//一个人70年心跳多少次
long time = 70l*60*24*365*70; //尽量放在前面转型
}
}
二进制整数和下划线分隔符
package 二进制整数_下划线分隔符;
public class TestBinaryNum {
public static void main(String[] args){
int a = 0b0000_0000_0000_0000_0000_0000_0000_0011;
int b = 1_3254_3235;
System.out.println(a); //输出3
System.out.println(b);
}
}