• java2


    思考一:

    public class EnumTest {

    public static void main(String[] args) {
    Size s=Size.SMALL;
    Size t=Size.LARGE;
    //s和t引用同一个对象?
    System.out.println(s==t); //    false
    //是原始数据类型吗?
    System.out.println(s.getClass().isPrimitive());
    //从字符串中转换
    Size u=Size.valueOf("SMALL");
    System.out.println(s==u); //true
    //列出它的所有值
    for(Size value:Size.values()){
    System.out.println(value);
    }
    }

    }
    enum Size{SMALL,MEDIUM,LARGE};

    执行结果如下

      其中==是判断两个变量指向地址是否相等,所以s和u相等意味着两变量指向同一段地址,既枚举类型中变量实质是指向枚举类型中的数据存储地址。在实际判断中原始数据类型中大写的如:String,Enum都是引用数据类型,其他小写的如int,float则是原始数据类型。其中System.out.println(s.getClass().isPrimitive());不懂为何,getClass是得到原始类,isPrimitive字面意思应该是判断是非为原始数据类型,那么这个应该判断的是s是否为类中的原始数据,那么返回值可能为true或false,然而并没有Orz.......

    数值的二进制表示

      

    所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
    反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
    原码10010= 反码11101 (10010,1为符号码,故为负)
    (11101) 二进制= -2 十进制
    补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
     
    java中数据存储的形式为补码。;

    package demo;


    import java.text.ParseException;

    public class text {
    public static void main(String[] args) throws ParseException {

    int i = -1;
    //使用包装类的toBinaryString转换成二进制
    System.out.println(Integer.toBinaryString(i)); 

    }
    }

    1的值应为16个0+1

    所以-1的值为1+15个0+1;

    则-1的反码码为1+15个1+0;

    而-1的反码则为17个1;

    如图所示补码正是如此。

    测试 +0,-0;二者补码均为0,所以java中使用补码。

    变量的作用域问题

    package demo;


    import java.text.ParseException;

    public class text {

    int i=3;
    public static void main(String[] args) throws ParseException {

    int i=2;
    System.out.println(i);

    }
    }

    输出结果为 2;

    ,局部定义的变量能够覆盖全局范围内的变量。在局部使用某个变量的时候JVM会优先找和当前使用位置"近"的变量的的定义!如果在局部定义了和全局变量一样的名字,我们使用的过程中,调用全局变量的话,会使用this关键字辅助。如:
    class A{
    int i=10;
    void f(){int i=100;
    System.out.println(this.i);//全局
    System.out.println(i);//局部
    }
    }        //百度

    java中数据转换

    1字节8位;

    byte 1字节 [-2^7,2^7-1]
    short 2字节 [-2^15,2^15-1]

    int 4字节[-2^31,2^31-1]
    long 8字节 [-2^63,2^63-1]
    float 4字节 [1.4013e-45,3.4028e+38]
    double 8字节 [4.9e-324,1.7977e+308]
    char 2字节 [0,2^16-1]
    boolean 1字节

    字节数占有数量多的向少的转换时会丢失数据,而少的向多的则不会
    长整形向double,int向float会出现精度损失。

  • 相关阅读:
    Linux Command
    sql查询将列里面的值替换为别的值但是实际值不变
    MY_SQLCode
    ComboBox设置Text属性
    WPF bmp和二进制转换
    C#中打开文件、目录、保存窗口
    WPF实现右键菜单
    BarTender SDK 实现调用模板条码打印
    VS Code非英语版本连接TFS错误解决方案
    DBeaver连接达梦数据库
  • 原文地址:https://www.cnblogs.com/zhanghengstdu/p/5935933.html
Copyright © 2020-2023  润新知