Java的数据类型
- 基本数据类型
整形byte,short,int,long
二进制数的第一位是符号位 0是正数1是负数
十进制转二进制,除2取余 结果逆向
二进制转十进制 权相加法
eg:0111 1111
1×26+1×25+1×24+1×23+1×22+1×21+1×20=+127
216=65536
byte:1个byte字节,8位bit二进制数,-128~127
short:2个字节,16位二进制数,-2^15^~2^15^-1(最大值32767)
int:4个字节,32位二进制数,-2^31^~2^31^-1(最大值2147483647,约21亿)
long:8个字节,64位二进制数,-2^63^~2^63^-1(最大值9223372036854775807)
public class TestInt{
public static void main(String[] args){
int a = 100; //十进制
int b = 015; //八进制 0开头
int c = 0xff; //十六进制 0x或者0X开头
int d = 0b1001010010;//二进制 0b或者0B开头
byte x = 50;
short y = 1000;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
long salary = 3000000000L;//整数默认为int,如果超过了int的范围,需要末尾用l或者L来表示
System.out.println("你的薪水是:"+salary);
}
}
注意:默认使用的是int类型,如果用long类型,(当数值超过了int最大值)则需要以L或l结尾
当超过long的时候使用引用数据类型BigInteger
浮点型 float和double(不精确,不用做比较)
float:单精度浮点数,4个字节,范围-3.403E38~3.403E38,尾数精确到7位有效数字,需要使用的话,数字后面要加f或者F
double:双精度浮点数,8个字节,范围-1.798E308~1.798E308,精度大约是float的两倍,默认的浮点数都是double
注意:特别高精度要求的商业需求可以使用BigDecimal进行运算和比较
这里是引用
public class TestFloatNumber{
public static void main(String[] args){
float f1 = 3.14f;//浮点数默认是double,要想使用数据类型float就需要加上f或者F
double d1 = 3.14;
double d2 = 3.14E2;//科学计数法 3.14*10^2=314.0
System.out.println(d1==f1);//不用做比较,不准确
System.out.println(d1);
System.out.println(d2);
float f3 = 234423232323224L;
float f4 = f3 + 1;
System.out.println(f3==f4);//输出true 相等了,所以用作比较不准确
}
}
字符型char 2个字节
发展史:
ASCII码—最多表示在28个(256个),实际上只用了128个状态
GB2312----2个字节表示一个汉字,一共可表示216也就是65536个
Unicode-----2个字节,65536个,主流的UTF-8编码采用一个字节一个英文,两个字节其他文字,三个字节汉字。Java使用的就是Unicode字符集
转义字符
/**
*测试字符型char
*/
public class TestChar{
public static void main(String[] args){
char c1 = 'a';
char c2 = '中';
char c3 = '\u0062';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//String不是基本数据类型,他是java提供的字符串的类
String str = "你好中国!";
System.out.println(str);
//转义字符
System.out.println("\'a\'\n\"b\"\nc\n\\d\ne\nf\ng");
System.out.println("o\tp\tq\tr\ts\tt");
}
}
布尔型
两种常量值:true或false
Java更新之后,在内存中占一个字节或者4个字节(一般情况是4个字节,定义布尔数组的话是1个字节),不能使用0或者1来代替,独立的类型
/*
*
*测试布尔数据类型
*/
public class TestBoolean{
public static void main(String[] args){
boolean b1 = true;
boolean b2 = false;
if(b1){ //不要写成if(b1 == true) 显得冗余 而且如果写成b1=true还会出现错误
System.out.println("b1是true");
}else{
System.out.println("b1是false");
}
}
}
- 引用数据类型