Java学习笔记1——基本数据类型

基本数据类型

java有4种基本数据类型,分别是整数型、浮点型、字符型和布尔型

整数型

byteshortintlong
1B2B4B8B

赋值问题

  1. 给long类型的变量赋值,必须加上后缀L或l
		long c = 2147483647 + 1;
		System.out.println(c);//-2147483648

因为java中整数默认是int型,所以最大为2147483647(2^31-1),加1之后就超出了int型的范围,所以输出结果就发生错误了。
这里还有一个小问题,就是直接赋值2147483648是会报错的。

		long c = 2147483648;
		System.out.println(c);


也就是说java会检查初始的数值是否越界,但不会检查计算的结果是否越界。写代码的时候真的挺怕这种不报错但实际上是错的代码。

回答原本的问题,正确的写法是加上long类型的后缀

		long c = 2147483647L + 1L;
		System.out.println(c);//2147483648
  1. java还可以赋值不同进制的数值,但要加上不同的前缀。
		int a = 101;
		int b = 0101;//8进制的前缀是0
		int c = 0x101;//16进制的前缀是0x
		System.out.println(a);//101
		System.out.println(b);//65
		System.out.println(c);//257

浮点型

floatdouble
4B16B
  1. 给float类型的变量赋值,必须加上后缀F或f
		float a = 1.0;
		System.out.println(a);


原因在于java中浮点值的默认类型是double型,而double类型不能自动转成float,而上面的int型是可以自动转成long型(高精不能直接转低精,低精可以直接转高精)。

加上后缀就没问题了。

		float a = 1.0F;
		System.out.println(a);//1.0
  1. Java浮点数的运算中可能出现近似值不精确的问题

计算结果的偏差可以用“四舍五入法”解决

		double a = 4.35 * 100;
		System.out.println(a);//434.99999999999994
		double a = 4.35 * 100;
		System.out.println(Math.round(a));//435

比较大小过程中的偏差可以用“最小数对比法”解决

		double a = 2.0-1.9;
		double b = 0.1;
		System.out.println(a==b);//false
		double a = 2.0-1.9;
		double b = 0.1;
		System.out.println(Math.abs(a-b)<1e-6);//true

1e-6源自C语言中的习惯

字符

char类型是16位无符号数,与unicode编码一一对应。既可以用字符来赋值,也可以用unicode字符编码来赋值。

		char a = '施';
		char b = '翔';
		char c = 26045;
		char d = 32724;
		System.out.println((int)a);//26045
		System.out.println((int)b);//32724
		System.out.println(c);//施
		System.out.println(d);//翔

转义字符的使用

  1. 可以将3个数字的8进制数转义成unicode编码
		System.out.println("\101");//A
		System.out.println((char)65);//A
  1. 可以转双引号,单引号
System.out.println("[\",\']");//[",']

布尔类型

关于boolean型占几个字节,标准答案是这样的:
在《虚拟机规范》中,对boolean类型的存储有专门的解释,文中说到:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,(因此)每个boolean元素占8位”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值