您的位置:首页 > 编程语言 > Java开发

java八大基本数据类型及类型转换

2017-10-31 11:57 302 查看

整数类型

java整型默认为int型,声明long可以后加’l’或’L’

byte –> 1字节

short –>2字节

int –> 4字节

long –> 8字节

BigInteger: 更大的整数

BigDecimal:更大的小数

[b]进制[/b]

八进制: 0开头,如 int c = 011;

十六进制: 0x开头,如int d = 0xf1;

进制转换

Integer.toBinaryString()
Integer.toHexString()


[b]类型自动转换,变量与常量[/b]

若数据大小没有超过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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: