java int f()_java基础知识(一)数据类型(上)

java的数据类型

1a843f98d17db6bc7d5508a66a610aa1.png

由上图,java的数据类型分为基本数据类型、引用数据类型两大类。

1、基本数据类型

与c不同,java的各种数据类型占有固定长度的内存,与具体的软硬件平台无关;另外,每种数据类型都对应一个默认的数值,是的这种数据类型的变量的取值总是确定(存在)的,这两点保证了java的跨平台性和安全稳定性。

基本数据类型分为4类8种。

efc7ed0688d3b09196acaae894ed6097.png

基本数据类型长度

36ec837765843331d7d84d0fe4a5b9fe.gif

1)逻辑型boolean

boolean数据类型的值只允许去true或false,不可以用0或非0的整数代替true或false,这是java与c不同的地方。

2)文本类型char

字符常量为用单引号括起来的单个字符,java的字符型采用unicode编码(c语言采用ASCII编码,每个数据8比特),每个字符占用2字节,因此可以表示单个字母或汉字,如:

char c1 = 'a';  char c3 = '中';

也可用十六进制的形式表示(范围'\u0000'~'\uFFFF')

char c2 = '\u0061'; char c4 = '\u4e2d';

public static voidmain(String arg[]){char c1 = 'a';char c2 = '\u0061';char c3 = '中';char c4 = '\u4e2d';

System.out.println("c1 = " +c1);

System.out.println("c2 = " +c2);

System.out.println("c3 = " +c3);

System.out.println("c4 = " +c4);

}

输出结果如下:

c1 =a

c2=a

c3=中

c4= 中

java语言还允许使用转义字符'\'将其后面的字符转换为其它含义(详情参考JAVA中转义字符),如:

char c5 = '\n'; //代表换行符

3)整数型(byte、short、int、long)

java的整型常量的三种表示形式

十进制,如:10

八进制,要求以'0'开头,如:012

十六进制,要求以'0x'或'0X'开头,如:o10

注意:上述0、0x或0X,中的0为数字0。

System.out.println("十进制 :" + 10);

System.out.println("八进制 :" + 012);

System.out.println("十六进制 :" + 0xa);

输出结果

十进制 :10八进制 :10十六进制 :10

整型常量按长度不同又可分为一般整型常量(int,32位)和长整型常量(long,64位,尾部有一个大写的L或小写的l)

4)浮点型(float、double)

浮点型常量表示的是可以含有小数部分的数值常量,据长度不同分为浮点常量(32位,用F或f表示,如19.4F,3.0513E3,8701.52f)和双精度常量(64位,用D或d表示,如2.433E-5D,3.1415d)。同其它高级语言一样,浮点常量有一般表示法和指数表示法两种。

System.out.println(314F);

System.out.println(314D);

System.out.println(3.14e2);

System.out.println(7.273F);

System.out.println(7.273D);

输出结果

314.0

314.0

314.0

7.273

7.273

最后

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。

数符占1位二进制,表示数的正负。

指数符占1位二进制,表示指数的正负。

尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点

指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。

可能是数符加尾数占24位,指数符加指数占8位 -- float.

数符加尾数占48位,指数符加指数占16位 -- double.

知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是浮点数的数值范围。

对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,java语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。

2、数值型数据类型间的相互转换

fcecfc76608931304d93cad3592b0b19.png

图中3个虚线表示可能有精度损失的转换,例如,123456789是一个大整数,它所包含的位数比float类型所能够表达的位数多。当将这个整型数值转换为float类型时,将会得到同样大小的结果,但却失去了一定的精度。

public static voidmain(String arg[]){int n = 123456789l;float f =l;

System.out.println("int= " +n);

System.out.println("float = " +f);

}

结果

int= 123456789

float = 1.23456792E8

当使用上面两个数值进行二元操作时(例如 n+f  , n是整数,f是浮点数),先要将两个操作数转换为同一种类型,然后再进行计算。

如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型;

否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型;

否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。

否则,两个操作数都将被转换为int类型。

强制转换

强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确。例如:

public static void main(String arg[]){

double d = 9.99;

int i = (int)d;

System.out.println("d = " + d);

System.out.println("i = " + i);

}

结果

d = 9.99i= 9

警告:如果试图将一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值

不要在boolean类型与任何类型之间进行强制类型转换,这样可以防止发生错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值