zoukankan      html  css  js  c++  java
  • Java 2. 量与常量

    1. 常量:

      • 固定不变的值 3.14 'a' true 所有基本数据类型的值都是常量
      • 特殊的常量 'abc' -->String,String是一个引用数据类型,他的值很特殊,可以简单的视为常量
      • 自己创建的空间,存储一个值,让他固定起来,不能改变
      int UP = 1;  还可以改变UP这个二空间存的值 
      final int UP = 1;  使用final修饰 UP空间,  UP在运行过程就不能再改变
      
    2. 变量:

      • 在程序执行过程可以改变的
      • 变量是一个内存空间(小容器)
      • 变量空间在创建(声明)的时候 必须指定数据类型 变量空间的名字
      • 变量空间 里面只能存储一个内容(值 引用)
      • 变量空间内的内容可以改变
    int a;
    String b;
    
    • 需要注意:
      • 变量是一个空间 可以只创建空间 里面不存放内容
      • 变量空间创建后是没有默认的内容 空的
      • 空的变量空间不能拿来使用 编译错误
    note 1:
    public class Test{
        public static void main(String[] args){
            byte x;  //声明一个变量空间 空间的名字是x 空间内要求存储的类型是byte整数
            x = 1;  //将一个1赋值到x空间内进行存储   
        }
    }
    
    • 计算机底层做了什么事情?

    • x是什么? 变量空间 存在哪里? --栈内存里

    • 1是什么? 1是常量 存在哪里? --常量缓冲区

    • =是什么? =是赋值 做了什么?

    1. 硬盘上创建一个文件 Test.java

    2. 文件中的内容是我们编写的源代码(跟计算机发送指令)

      public class Test{
       public static void main(String[] args){
           byte x; 
           x = 1;    
       }
      }
      
    3. 将Test.java源文件-->编译-->Test.class
      字节码 留给计算机识别

    4. 执行 -->内存中执行 将硬盘上的Test.class内容加载到内存里

    5. 我们写好的指令 执行内存的空间 赋值 变化。。。

    note 2:
    float x = 3.4;  
    
    • 从double转化到float会有损失,比如1,3.4都是常量值,存储在常量缓冲区中,常量值的存储形式肯定不是十进制,是以二进制形式储。
    • 1 --> 32bit 存储的如果是整数,相当于int类型。
    • 3.4 -- 64bit 存储的如果是小数,相当于double类型,因为机器为了更精确的显示小数,会把他当作double类型存储在double的空间里。
    • 所以 3.4是从double空间拿出来存到float空间,存不进去, 需要人为加个F告诉机器。
     float x = 3.4F;
    
    note 3:

    那么byte a=1;为什么不会报错? 1是32bit的,byte是8bit的,存不下1啊

        1-->32bit
        00000000 00000000 00000000 00000001
        a-->8bit
        00000001
        =赋值的时候做了一个自动的决定,自动类型转换,把前面的24个0去掉了,前提必须是0
    
    note 4:

    double为什么不能自动转化为float?因为算法不一样,

    • float 4字节 32bit 1个符号位+9个整数的部分+22个表示小数的部分 0 000000000 22个0.。。
    • double 8字节 64bit 1个符号位+19个整数的部分+44个小数的部分
    note 5:

    long d = 2147483648L;

    int 范围-2147483648~2147483647
    如果创建的常量值超过以上范围(int范围)
    程序编译检测的时候会认为 数字太大
    如果我们真的需要那么大的数字 必须在后面加L告知机器
    
    note6:

    String i = "abc";

    字符 字符串
    char String
    基本数据类型 引用数据类型
    'a' 'a' 'abc' '' null
    • 变量赋值

    更多学习笔记移步 https://www.cnblogs.com/kknote
  • 相关阅读:
    expect script
    2011年11月28日,29日学习内容总结
    2011年11月27日学习内容总结
    Toad使用(转)
    2011年11月30日学习总结
    2011年11月24日学习内容总结
    2010年11月23日学习内容总结
    Toad Can't initialize OCI. Error 1解决办法
    2011年11月25日学习内容总结
    2011年12月1日学习内容总结
  • 原文地址:https://www.cnblogs.com/kknote/p/12663781.html
Copyright © 2011-2022 走看看