zoukankan      html  css  js  c++  java
  • Java中的基本数据类型以及自增特性总结

    Java中的数据类型:

     

    •  计算机中的数据的存储方式是二进制,并且相应数据类型的最高位为转换十进制数的符号位,1为负数,0为正数;
    • 浮点型数据的取值范围是根据IEEE754标准获得的;
    • 在Java中Float.MIN_VALUE表示的是浮点型数据的可表达的最小正数,Double.MIN_VALUE也是如此,所以在0~Float.MIN_VALUE的范围的数,float数值类型取不到; 一种解释是,通过 — Float.MAX_VALUE 就能获得单精度浮点型数据的最小值,所以采用Float.MIN_VALUE来表示更有意义的数值。
     Java中的基本数据类型转换:

    分为两种: 自动类型转换、强制类型转换

    • 自动类型转换 
    1.    当小数转换为大数时,可以自动转换,例如:
    byte a=126;
    int b=a;  //此时byte类型的数据可以自动转换为int类型

            2.   大数、小数指的是这种数值类型所能表示的数值范围,并不是占用的字节数;

            3.   数值类型的大小数关系  (byte、char、short)<int<long<float<double;

           4.  byte、char、short三种数据类型是平级的,除了byte可以自动转化为short之外,其余两者转换需要强转;

           5.当short类型、byte类型、char类型的操作数进行运算操作时,会将其转化为int类型的数据进行运算,并生成int类型的数据,例如:

    byte b=12;
        short c=b;
        char d='f';
     short e=b+c-d;//Type mismatch: cannot convert from int to short

       上述代码最后一行将编译错误,通过提示可知byte、short、char类型的数据进行数值操作时会先转化为int类型数值,然后进行运算,并且生成int类型的数据,但是不会改变原来的操作数的数值类型.

    •  强制类型转换
    1. 使用强制转换的格式,例如 long s=(long) 3.14F;

    2. 使用包装类进行转换 ,例如 int q=new Double(3.15).intValue();

    3. 使用包装类中的静态parseXXX方法,将字符串转换为相应的数据类型,例如 float a= Float.parseFloat("123");
    4. 将大数转换为小数时需要强制类型转换,这会由于大数占用的位数多,而小数占用的位数少导致溢出,溢出时会截断,不是取小数类型的最大值,例如大数是64位的long类型转换为int32位的小数,则会取63位中的低31位二进制数,最高位为符号位。

    Java中的“++”自增

    如下代码:

    public class SelfAddTest {
    static int x,y; 
    public static void main(String args[]){
        x++;
        myMethod();
        System.out.println(x+y+ ++x);
    }
    private static void myMethod() {
        y=x++ + ++x;  
        
    }
    }

    上述代码执行后控制台打印的是多少呢?   

    1. 首先要理解i++、++i区别,i++是先返回i值然后再执行+1操作,++i是先+1再返回i的值;
    2. 然后是理解 y=x++;
    y=x++;  //可以分解为如下三步;
    int temp=x;
    x=x+1;
    y=temp;

              3. 所以当执行   y=x++ + ++x时;相当于在操作栈中先存入1,然后执行+1,此时x=2;然后执行++x;此时x=3并将3压入操作栈;所以y=1+3;

             4.  所以控制太输出的结果是11;

             5. 然后是++x的操作可以分解为:

    //y=++x 等效于:
    x=x+1;
    int temp=x;
    y=temp;

    理解了上述++i和i++的区别也就容易得到如下代码的输出了:  

    int i=0;
    i=i++;
    i=++i;
    System.out.println(i);  //1

    "i++"、 "i+=1"和"i=i+1"的区别

    • "i++"、 "i+=1"都隐含强制类型转换;
    • i=i+1 没有强制类型转换,因为其中的1是默认的int类型,如果i是小数,例如 byte类型,则该代码将编译错误。
  • 相关阅读:
    golang的select典型用法
    vscode配置git和提交代码到github教程
    VsCode中好用的git源代码管理插件GitLens
    GoMock框架使用指南
    golang对结构体排序,重写sort
    Go语言开发Prometheus Exporter示例
    golang 字符串拼接性能比较
    golang中的strings.Compare
    各大厂分布式链路跟踪系统架构对比
    NV triton启动方式说明
  • 原文地址:https://www.cnblogs.com/zwwang/p/14896981.html
Copyright © 2011-2022 走看看