1.整数
byte num1=10;//占1个字节码范围:-128~127
short num2=20; //占2个字节码范围:-32768~32767
int num3=30;//int类型最为常用,占4个字节码范围:-2147483648~2147483647
long num4=10L;//long类型要在数字后面加一个L,占8个字节码范围:-9223372036854775808~9223372036854775807
拓展
进制:二进制:0b 十进制 八进制:0 十六进制:0x
int i=0b10;//二进制,输出结果为0.
int i2=10;//十进制,输出结果为10.
int i3=010;//八进制,输出结果为8.
int i4=0x10;//十六进制,输出结果为16.
2.浮点数(小数)
float num5=10.1F;//float类型要在数字后面加个F
double num6=3.1415;
拓展
银行业务怎么表示钱?
以下代码用float和double进行比较:
float f=0.1f;//输出结果:0.1
double d=0.1;//输出结果:0.1
//将float和double的输出结果进行比较
System.out.println(f==d);//输出结果:flase. why???
以下代码用两个不同值的float进行比较:
float d1=1213121231231f;
float d2=d1+1;//此处d1与d2的值有明显的的不同
//将两个float输出结果进行比较
System.out.println(d1==d2);//输出结果:true. why???
解释:浮点数表现的字长是有限的;也是离散的,而且浮点数一般存在一个“舍入误差”,无法对数进行精确表示,所输出的结果是一个大约数(接近但不等于),所以最好完全避免使用浮点数进行比较。
那么银行业务怎么表示钱?---使用一个数学工具类“BigDecimal”。
3.字符
char name='a';//char是表示字符,后面所赋的值(a)不能大于一,此处的a可以为英文字母或者中文汉字,但必须为一个。
4.字符串
String namea="你好";//String不是关键字,而是‘类’。
拓展
啥也不说,上代码!!
char c1='a';
char c2='中';
System.out.println(c1);//输出结果:a
System.out.println((int)c1);//(int)强制转换。输出结果:97
System.out.println(2);//输出结果:中
System.out.println((int)c2);//(int)强制转换。输出结果:20013
//所有的字符本质还是数字。
//此处涉及Unicode编码,可以处理各种语言文字,占用了2字节,最多可以65536个字符,当然现在也可以表示更多。
转义字符:\t(制表符)、\n(换行)...
5.布尔值(是or非)
boolean flag=true;
boolean flag=false;//布尔值只有这两个值
拓展
boolean flag=true;
//判断
if(flag==true);{} //等价于if(flag);{}
注:Less is More! 代码要精简易读!
类型转换
为何要进行类型转换?
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低-------------------------------------->高
byte,short,char -> int -> long -> float -> double
注意!此处float是32bit,而long是64bit,为何float反而排在long之前呢?
解释:因为float为浮点数(小数)类型,所以优先级大于整数类型。
int i=128; //强制转换,将int类型转换为byte类型 byte b=(byte)i; System.out.println(i);//输出结果:128 System.out.println(b);//输出结果:-128-
上述代码 i 的输出结果没有任何问题,b的结果却完全不一样,Why?
解释:因为byte b=(byte)i;这段代码中,byte的最大值为127,而128大于byte所能表示的最大值,会存在一个“内存溢出的问题”。所以在转换时,应尽量避免内存溢出的出现。
-
-
强制转换: 格式:(类型)变量名,由高位向低位转换。
如:int 向 bate 转换。
自动转换:由低位向高位转换,可以直接进行转换。
如:int 向 double 转换。
-
注意点:
-
不能对布尔值进行转换。
-
不能把对象类型转换为不相干的类型
-
在把高容量转换到低容量时,强制转换。
-
转换的时候可能存在内存溢出问题或者精度问题!
-
-
操作比较大的数字的时候,注意溢出问题!
int money=10_0000_0000;//JDK7新特性,数字之间可以用下划线进行分割,且输出时不显示下划线。 int years=20; int total=money*years;//输出值:-1474836480,输出时溢出了! //如果用long类型将int类型强制转换,结果如何? long total2=money*years;//输出值:-1474836480,因为此处的默认数据类型为int,先运行money*years再进行数据类型的转换,所以在转换之前已经存在问题了。 //解决方法 long tltal3=money*((long)years);//在运算前先把一个数转换为long类型
本文详细讲解了Java中的整数、浮点数、字符和字符串类型,包括字节长度、进制转换、银行业务表示、类型转换注意事项,以及布尔值和数据溢出问题。重点介绍了类型转换在强类型语言中的应用和潜在问题。
2093

被折叠的 条评论
为什么被折叠?



