2.2.2特例 基本类型

来源:互联网 发布:酒店网络机顶盒案例 编辑:程序博客网 时间:2024/06/13 06:21

1:基本类型,或者叫内置类型,是我们常用的类型,不用通过new来创建,基本类型直接存储值 并置于堆栈中,提高高效


     基本类型有8种: 

        1:字符型   char                    16字节                 占32位bits                   unicode 0 -unicode2^16-1

        2:布尔型:boolean -                     -                     -                                         -----

        3:整数型  byte                     1字节                    8位                            -128      +127

                           short                    2字节                  16 位bits                     -2^15 +2^15-1

                           int                         4字节                  32位                           -2^31      +2^31-1

                          long                       8字节                   64位                          -2^63         +2^63-1

        4:浮点类型  float                     4字节                   32                                1.4E-45    3.4028235E38

                             double                8字节                  64                                4.9E-324  1.7976931348623157E308

      


注明:Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的“E+数字”表示E之前的数字要乘以10的多少倍。比如3.4E4就是3.4×10000=34000,


2:确定类型长度,与虚拟机无关, 

3:数值类型都有正负号,


jdk5 提供了基本类型的相对应的包装类,

有三方面用法: 实现了基本类型之间的转化,第二便于作为方法的参数进行传值  第三 在一些地方用到Object的时候方便将基本类装换


4:提供了两个高精度数字

    bigInteger  :支持任意精度的整数,可以准确的标识任何大小的整数值

   bigDecimal   支持任何精度的定点数。例如进行精确的货币计算

5:基本类型之间的转化(转载地址:http://blog.csdn.net/caohaicheng/article/details/38016193)

   5.1:变量或者常量必须有类型

   5.2:赋值类型需要一致

   5.3:进行运算,参与运算的的数据类型必须一直;

 类型转化有两种方式

     1:自动类型转化( 自动类型转化,有系统自动转化,是有jvm完成,需要遵守如下规则  有存储范围小存储到范围大的类型 )

             byte --> short(char) -->int --->long --->float ---double

           比如  String ss=1+"aaa" ; java会自动把1转化字符串1 ,然后进行字符串拼接计算  ,但是会产生两个sring对象

     2:强制类型转化  (从范围比较大的转化比较小的,由于存储精度不同,有可能导致数据精度的损失)

       double -->float --->long  --->int --->short(char) -->byte


其他相关知识


       

基本类型出现的面试题:


 1:基本类型是不能被继承,因为被final修饰了,可以查看jdk源代码

 2: short s1=1 ;s1=s1+1; 有什么错     (这里面试的是两个知识点,1参与运算的书籍类型必须一致 所以 程序在s1+1 自动把short类型转化为int 类型, 第二知识点变量或者常量定义 类型需要一直,所以在赋值出现错误)

         

   对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表达式的类型为int,那么将int赋予给short类型的变量s1会出现类型转换错误。

    对于short s1=1;s1+=1来说 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。


3:char类型变量能不能存储一个中文的汉字

(知识点 char存储位16位,unicode存储位 2个字节 也是16位  jdk的字符就是char可行。 都是通过unicode编码,一个unicode编码是16位 )

  由于char类型是2字节 可以占八位 二unicode字符


4:Integer int区别


int 原始数据类型,而Integer是int的封装类。 init的比那辆默认值为0   Integer默认值为null 



5:switch是否可以用byte 可以使用string 可以使用long?

   知识点:  switch的使用,在下节会提到他的使用, 第二类型自动转化 

表达式只能是一个整数表达式或者枚举常量 由于byte,short ,char 都可以隐形转化为int 是可以的但是long sring 是不能的

 

byte的存储范围小于int,可以向int类型进行隐式转换,所以switch可以作用在byte上

long的存储范围大于int,不能向int进行隐式转换,只能强制转换,所以switch不可以作用在long上

string在1.7版本之前不可以,1.7版本之后switch就可以作用在string上了。




 

  

         



原创粉丝点击