入门(六)---基本数据类型

数据类型
  基本数据类型    8个
     整型    4个

      byte    字节型---->1个字节8个bit 敏感单元位

          1byte==8bit  00000000 256种组合
          用第一个bit位置来记录符号  0整数  1负数
          数值的范围 -2的7次方 ~ 2的7次方-1(即-128~127)
          以上的其他整数类型 一次乘以2      

      shot 2字节==16bit   65526种(-32768~32767)

      int 4字节==32bit (-2147483648~2147483647)
      long 8字节==64bit
 
    浮点型 2个    float (4字节==32个bit)单精度,double (8字节64个bit)双精度
    字符型  1个    char 键盘上能输出的 2字节==16bit    Unicode编码(0-65535个)
    布尔型 1个    boolean 1bit true1 false0
 
  引用数据类型
    数组[],
    类class(抽象类abstractclass),
    接口interface,
    枚举enum,
    注解@interface
 
 实例1:
public class Test3{
    public static void main(String[] args){
        byte a = 1;
        short b = 2;
        int c = 3;
        long d = 2;
        float e =3.4;
        double f = 5.2;
        char g = 'y';
        boolean h = true;
    }

E:JavaTestday3>javac Test3.java
Test3.java:7: 错误: 不兼容的类型: 从double转换到float可能会有损失
float e =3.4;
^
1 个错误

 
实例2:
public class Test3{
    public static void main(String[] args){
        byte a = 1;
        short b = 2;
        int c = 3;
        long d = 2147483648;
        float e =3.4F;
        double f = 5.2;
        char g = 'y';
        boolean h = true;
    }
}

E:JavaTestday3>javac Test3.java
Test3.java:6: 错误: 过大的整数: 2147483648
long d = 2147483648;
^
1 个错误

 
 
编译报错,思考问题:
1 为什么float放3.4会报错?
  整数常量是用32bit位存储的,相当于int
  小数常量是用的64bit位,相当于双精度的double
  3.4这个常量的值默认的内存空间是64bit,但是float存的是32bit位的大小,因此存不下
  所以需要人为降低精度,所以必须加F否则编译报错
2 为什么byte能放的下1不报错(byte==8bit,而整数常量1占32bit)?
  常量1==32bit位 
  它在计算机中存储的形式是00000000 00000000 00000000 00000001
  =号在赋值的时候检测到前面有一串没用的0,于是自动转换将00000000 00000000 00000000去掉了(但是前面必须都是0)
  这个时候就变成了00000001-->8bit,因此用byte可以存的下
    
3 为什么long放2147483648报过大的整数?
  -2147483648~2147483647是int类型的取值范围,long要比int大的多
  如果创建的常量超过以上范围,程序编译检测的时候会认为数字太大认为你是不是笔误写错了,提醒你注意
  如果我们真的需要这么大的数字必须在后面加L人为告知( L不是必须加的)
 
        
 
 
   
 字符和字符串的区别?
字符                                字符串
char                                String
基本数据类型                  引用数据类型
'a'                                    "a"  "abc"  "" null
只能且必须是一个字符    可以是一个多个 或者空 ornull
单引号                            双引号
                                
 
 
        
原文地址:https://www.cnblogs.com/wenm1128/p/12525838.html