zoukankan      html  css  js  c++  java
  • 数据类型与变量

    Java语言提供了八种基本(内置)类型。

    六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

    除此之外的(包括String类型)都是引用数据类型。

     基本数据类型 我们又分为大概八种:

    数据类型 名称 大小(字节) 范围 默认值
    byte 字节型 1B -128 ~ 127 0
    short 短整型 2B - 32768 ~ 32767 0
    int 整型 4B -2^31 ~ 2^31-1 0
    long 长整型 8B -2^63 ~ 2^63-1 0
    float 单精度浮点型 4B -10^-38~-10^38和10^-38~10^38 0.0f
    double 双精度浮点型 8B -10^-38~-10^38和10^--38~10^38
    0.0d
     char  字符型  2B  0 ~ 65535  'u0000'
     boolean  布尔型  1/8B  true/false  false

     

     

     

     

     

     

     

     

    引用数据类型: 

    数组类型(array), 枚举类型(enum), 类类型(string ),接口类型(interface)

    变量的使用:

    使用变量的步骤:

     第一步,声明变量, 即根据数据类型在内存申请空间。

     数据类型  变量名   int  n ;

    第二步:赋值,即数据存储至对应内存空间 。

     变量名  = 数值    n= 100;

    第三步:使用变量,即取出数据使用。

    数据类型 变量名 = 数值  int n = 100;

    注意:与JS不同,Java是一种强类型的语言,声明时必须强制定义类型,不但
    更加安全,也体现了其严谨。

    赋值运算符

    变量名 = 表达式; 

     a = b + 1 ;   准确读法:将右边的表达式 b + 1 的值赋给变量a  ;

    表达式就是符号( 如加号、 减号) 与操作数( 如b1等) 的组合 ;

     

    为什么数据有范围? 

    变量是申请内存来存储值。而每个类型的变量申请的内存大小不尽相同,比如int占4字节,char占2字节 提示:1G=1024M 1M=1024K 1K=1024Byte 1Byte=8bit 

    二进制

    计算机是依靠1和0的开关来通过处理器进行计算的。 二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。 

    二进制转换

    原则 : 除二取余,倒序排列  用数值乘以2的幂次依次相加 。

     

    取值对应:

    数据类型 大小 十进制范围 二进制范围
    byte
    1B -128 - 127
    00000000
    –11111111
    short 2B -32768 - 32767
    00000000
    00000000 –
    11111111
    11111111
    int  4B -2^31 – 2^31-1
    00000000
    00000000
    00000000
    00000000 –
    11111111
    11111111
    11111111
    11111111

     

     

     

     

     

     

     

     

     

     

     

    基本数据类型转换:

    自动数据类型转换的:
    1. 转换前的数据类型与转换后的数据类型是兼容的;
    2. 转换后的数据类型比转换前的范围表示大 ;

    double d = 3.10;
    int n = (int)d;
    //n的值为d转换截取后的值3

     String 与基本类型转换  

     1. String 转Int 
    String str = "100";
    //第一种方式
    int i = Integer.parseInt(str);
    //第二种方式
    int j = Integer.valueOf(str);
    
      2. Int 转String 
      int i = 100;
    //第一种方式
    String s1 = Integer.toString(i);
    //第二种方式
    String s2 = String.valueOf(i);
    
    String与float、long之间转换的方式类同

     

    System.out.println( (int)(char)(byte)-1 ) . 输出 65535
     如何解决精度损失问题 :  大数据操作 ;
    1 。 Bigdecimal  大浮点数
     
    BigDecimal  解决 (导入Math 包) 
    实例化 BigDecimal  
    BigDecimal  db = new  BigDecimal ( "2.00");
    BigDecimal  bi  = new BigDecimal ( " 1.10");
    // BigDecimal  方法的减法方法subtract。
    BigDecimal  d = bd.subtract( bi );
    运算符
    i ++   先用 i 再加1;
    ++ i   先加1 再用 i; 
      求值 :  i = 1 ;
        i ++  +  i ++  +  ++i   +  --i  + --i   = ? 
    byte a =1; 求 a+=1; 和a=a+1;
    a+=1. 包含隐式自动转换, 而a = a+1 ;   则需要强制类型转
    a = ( byte) ( a+1);
     
    十 ----->>二    进制转换。  
    除二取余
    二------->> 十 进制转换
    乘以2的幂次方              
     
    真值
    因为第一位是符号位,所以机器数的形式值就不等于真正的
    数值。例如上面的有符号数 10000011,其最高位1代表负,
    其真正数值是 -3 而不是形式值131(10000011转换成十进
    制等于131)。所以,为区别起见,将带符号位的机器数对应
    的真正数值称为机器数的真值。
     
    例:0000 0001的真值 = +000 0001 = +1,1000 0001的真
    值 = –000 0001 = –1
     
    原码
    原码就是符号位加上真值的绝对值, 即用第一位表示符号,
    其余位表示值. 比如如果是8位二进制:
    [+1]原 = 0000 0001
    [-1]原 = 1000 0001
    第一位是符号位. 因为第一位是符号位, 所以8位二进制数的
    取值范围就是:
    [1111 1111 , 0111 1111],即:
    [-127 , 127]
    原码是人脑最容易理解和计算的表示方式.
     
    反码
    反码的表示方法是:正数的反码是其本身;的反码是在其原
    码的基础上, 符号位不变,其余各个位取反。
    [+1] = [00000001]原 = [00000001]反
    [-1] = [10000001]原 = [11111110]反
    可见如果一个反码表示的是负数, 人脑无法直观的看出来它
    的数值. 通常要将其转换成原码再计算。
     
    补码
    补码的表示方法是:正数的补码就是其本身;的补码是在其
    原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即
    在反码的基础上+1)
    [+1] = [00000001]原 = [00000001]反 = [00000001]补
    [-1] = [10000001]原 = [11111110]反 = [11111111]补
    对于负数, 补码表示方式也是人脑无法直观看出其数值的.
    通常也需要转换成原码在计算其数值.
     
      位运算符
     
    &和&&的区别
    && 称为 逻辑与 (又称短路与),只要前者条件为假后面条件不会执行。称为遇假则假。
    &  称为按位与。 不管第一个条件是否为假,两边都要执行,最终得出结果。 
    |  和 || 的区别
    || 原理同&& 一样 , 为逻辑或(又称短路或),只要前面为真则就执行, 称遇真则真 。
    |  按位或   不管第一个条件是否为真, 两边都要执行,得出最后结果
     
  • 相关阅读:
    leetcode-滑动窗口
    leetcode刷题-双指针
    nlp
    机器学习
    tf-idf算法
    RNN和LSTM的理解
    DDD落地实践-战术实现心得
    DDD落地实践-战略设计心得
    测试平台系列(66) 数据驱动之基础Model
    Python小知识之对象的比较
  • 原文地址:https://www.cnblogs.com/thelovelybugfly/p/9619539.html
Copyright © 2011-2022 走看看