//Main.java
/*Java基本数据类型分为三类:
*1.数值型:包括整数类型byte(8),short(16),int(32),long(64)和浮点类型float(32),double(64)
*2.字符型:char(16)和转义字符,注意:不同于c,java里char占两个字节
*3.布尔型:boolean
*/
public class Main{
public static void main(String[] args){
/*数值型:整数类型
byte:一个字节 [-128,127],为什么是-128,去看原码,补码吧
short:两个字节 [-32768,32767]
int:四个字节 [-2^31,2^31-1]
long:八个字节 [-2^63,2^63-1]
在赋值时,比如97,可以写成:97(十进制),0141(八进制,以0开头),0X61(十六进制,以0X开头,X可小写)
再比如0,可以写成0,00,0x0
此外,数值常量默认为int,所以8888888888888888888得写成8888888888888888888L(L可小写)
*/
byte x1;
short x2,x3;
int x4=0141,x5,x6=0X61;//这里x5仍然是只是声明
long x7=97,x8=8888888888888888888L;//不加L会报错
long result=x4+x6+x7+x8;
System.out.println(result);
/*数值型:浮点类型
float:四个字节 [1.4E-45,3.4028235E38]
double:八个字节 [4.9E-324,1.7976931348623157E308]
此外,浮点类型默认为double,所以给float型赋值时得加上F(F可小写),而double的D(D可小写)可不加
*/
float f1=0.1F;//这么记,整型里最长的加L,浮点型里最短的加F
double d1=4.2D;
double d2=4.3;
System.out.println(d1+d2+f1);//输出8.600000001490116
//这么写不行,float转换为double会有问题,4个字节强制扩为8个字节会有乱七八糟的东西进来
//所以这里的输出结果并不是8.6.不光混合运算不行,直接(double)f1也不行
System.out.println(f1+(float)d1+(float)d2);
//反之则不会有问题,这里可以输出8.6.前提d1,d2在float取值范围内
/*字符型:char,占两个字节,字符常量需用单引号括起来,区别'a'和"a"
字符采用unicode编码,两个字节,取值范围[0,65535],共65536种字符,字符和数字一一对应
*/
char c1='a';
char c2=97;//'a'对应的unicode编码为97,这里实际上右边被强制转换了:(char)97
System.out.println(c1+c2);//两个char相加可是会转换为int的,区别于字符串相加,这里输出194
/*字符型:转义字符
字符常量有两种表示方式,一是直接用单引号括起来,另一种是将其对应的unicode编码强制转换为char
前者与转义相关的是字符无法打出来或比较特殊.\b:退格 \t:制表符 \n:换行 \f:换页 \r:回车 \' \" \\
后者不知道意义何在,直接强转不行吗,\*:一位八进制,\**:两位八进制,\***:三位八进制,
\\u****四位十六进制,即直接加数字就是八进制,可以一位两位三位,加u再加数字就是十六进制,必须四位
以!为例,对应unicode编码33,八进制041,十六进制0X21
*/
System.out.println('\\');
System.out.println((char)33);//输出!
System.out.println((char)041);//输出!
System.out.println((char)0X21);//输出!
System.out.println('\41');//输出!
System.out.println('\041');//输出!,注意,八进制最多三位,041可以0041就不行了
System.out.println('\u0021');//输出!,注意,十六进制强制四位,必须\u0021,而不能是\\u21
//布尔类型,只有true和false两个值,注意,java中布尔类型不能与整数类型相互转换的
boolean bb1;
boolean bb2,bb3;
boolean bb4=true;
System.out.println(bb4);
System.out.println(!bb4);
//取反倒可以,输出false
}
}