初涉JAVA数据类型

1.区分数据类型的原因

  1. Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,
  2. 每一种数据类型在内存中分配了不同大小的内存空间
  3. 这样做是为了充分高效的利用内存空间

2.Java常见数据类型

  1. 基本数据类型
  2. 引用数据类型

2.1 基本数据类型

基本数据类型分为四类八种:
在这里插入图片描述

2.1.1 整数类型
package FirstPackage;
public class BasicType {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		byte a=127;
		System.out.println(a);
		short ab=32767;
		System.out.println(ab);
		//byte b=128;//cannot convert from int to byte
		//int c=1000000330222222222222;//the literal 1000000330222222222222 of type int is out of range
		//int d=100L;//cannot convert from long to int
		long e=100;
		long f=100L;
	}
}
  1. c:变量有自己的表示范围
  2. d,e:等式右边默认是int类型(byte,short除外)
  3. d,e:小类型可以转换成大类型,但是反过来不行
  4. e,f:为什么定义长整型L数据时要加L
    以long f=100L为例,变量f是long类型的,它保存在栈中,而100L是long类型的,它保存在堆中,占用8个字节;
    以long e=100为例,变量e是long类型的,它保存在栈中,而100是int类型的,它保存在堆中,占用4个字节;
    还是不能解释为什么要加L!
2.1.2 浮点类型
package FirstPackage;

public class BasicType {

	public static void main(String[] args) {
		// TODO Auto-generated method stub	
		//float aa=1.222;//cannot convert from double to float
		//System.out.println(aa);
		float bb=1.2223333333333333332f;
		System.out.println(bb);
		double cc=1.2223333333333333332;
		System.out.println(cc);
		
	}
}

结果展示:
1.2223333
1.2223333333333333
  1. 浮点数等式右边默认double
  2. float的小数点数为7位,double小数点数为16位,我猜的

3.原码,反码,补码

规矩:(死记硬背就行!)
正数:原码,反码,补码都是一致的
负数:原码符号位不变,其他位取反得到反码,反码再加一得到补码

举例:
正数7:
原码:0000 0111
反码:0000 0111
补码:0000 0111

正数127:
原码:0111 1111
反码:0111 1111
补码:0111 1111

计算机处理数据时用的是补码!!
这很关键!
所以:
0000 0111
+
0111 1111

= 1000 0110
此时是补码,是计算机喜欢的格式
而人喜欢的是原码(直观)
所以我们转换一下看看到底是什么值

首先由符号位可知(由规矩反推)这是个负数:
此时就多了两个步骤
补码到反码:减一
1000 0110减1
得:
1000 0101
反码转原码:符号位不变,其他位反转
1111 1010
对应于十进制的数:-(127-5)= - 122

可以将-128到127看成一个循环,即超过127的byte从-128再出发
比如128就是-128,以此类推

4.数据类型转换

package FirstPackage;
public class Transfer {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		byte a=3;
		int b=9;
		b=a+b;
		System.out.println(b);
		//a=a+b;//cannot convert from int to byte
		//a=byte(a+b);//cannot convert from int to byte
		a=(byte)(a+b);
		System.out.println(a);
		byte c=127;
		int d=7;
		c=(byte)(c+d);
		System.out.println(c);
	}
}
输出:
12
15
-122
  1. 小类型可以隐式转大类型(隐式转换)
  2. 大类型必须显式转小类型(强制转换)
  3. 注意强制转换类型本身也要加小括号如(byte)

5.float和long谁的表示范围大

在这里插入图片描述
在这里插入图片描述

6.浮点数的存储

跳转

感觉5和6还需要细看!!5可以作为6的补充!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值