美文网首页
Java基础之常量、变量

Java基础之常量、变量

作者: sexyhair | 来源:发表于2018-03-26 22:44 被阅读0次

    四、常量

    4.1 概述:

    -在程序执行的过程中其值不可以发生改变
    

    4.2 分类:

    -字面值常量
          字符串常量
          整数常量:Java对整数常量提供了4中表现形式(二、八、十、十六进制);
          小数常量
          字符常量
          布尔常量
          空常量
    

    4.3 关于进制:

    4.3.1 概述:
    -就是进位制,是人们规定的一种进位方法。
    -规则:X进制,则表示逢X进一位;
    

    计算机的电子元件的状态:开关
    仅仅开关两个状态是不够表达我们常见的数据的:英文字母,数字,标点符号等。为了能便是更多的数据,国际化组织就规定:用8个这样的信号(开关)来表示一个数据,这个数据单位叫:字节。
    后来,通过数字1,0来表示开和关;那么1个字节 等于有8位(bit)。
    由这样的1,0组成的数据就是二进制数据;

    单位转换:
    1byte = 8bit
    1k = 1024byte
    1m = 1024k
    1g = 1024g
    1t = 1024g

    4.3.2表现形式:

    二进制:有这样的1,0组成的数据就是二进制。以0b开头。

    八进制:Octal,缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。以0开头

    十进制:由0,1,2...9组成。整数默认是十进制。

    十六进制:它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。以0x开头

    4.3.3相互转换:

    1)二进制转化成八进制

    -A.把二进制的数据,从右开始,每三位一组合,最左边不够的时候补0。
    -B.分别计算出对应的十进制数值,
    -C.再把每个十进制的数据组合起来,就是一个八进制。
    
    二进制转八进制

    2)二进制转化成十六进制

    -A.把二进制的数据,从右开始,每四位一组合,最左边不够的时候补0。
    -B.分别计算出对应的十进制数值,
    -C.再把每个十进制的数据组合起来,就是一个十六进制。
    
    二进制转十六进制

    3)任意进制转化为十进制

    按权求和:
    系数:每一个位上的数据值本身就是系数。
    基数:x进制的基数就是x
    权:针对每一个位上的数据进行编号,从右边并且是从0开始编号,这个编号就是该位上数据的权值
    x进制转化成十进制:每一个位上的系数*基数的权次幂 之和。
    十进制转化十进制,推导出规律


    按权求和的推导

    4)十进制他转化其他进制

    除基取余,直到商为0,余数反转;
    52转二进制:0b110100
    52 / 2 = 26 余0
    26 / 2 = 13 余0
    13 / 2 = 6 余1
    6 / 2 = 3 余0
    3 / 2 = 1 余1
    1 / 2 = 0 余1
    52转八进制:064
    52 / 8 = 6 余4
    6 / 8 =0 余6
    52转十六进制:0x34
    52 / 16 = 3 余4
    3 / 16 = 0 余3

    5)任意的x进制到y进制的转换?

    以十进制为桥梁:
    x进制 转 十进制
    十进制 转 y进制

    6)二进制与十进制之间的快速转换法:8421码
    (一知半解,暂不考虑)

    4.4 有符号的数据表示法:

    4.4.1 概述:
    -在计算机内,有符号数据的表示法:原码、反码、补码。
    -所有数据的运算都是采用数据对应的二进制的补码进行的。
    
    4.4.2 原码、反码、补码:
    原码、反码、补码定义.png
    原码、反码、补码练习:
    练习1
    练习2

    五、变量

    5.1 概述:

    -在程序执行过程中,在某个范围内变化的量
    -可以理解成变量就是在内存中的一小块区域,使用变量名来访问这一块区域,区域中的内容就是变量的值;
    

    5.2 格式:

    数据类型 变量名 = 初始化值;此格式是固定的;

    5.3 关于数据类型

    5.3.1 概述:

    Java是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同的大小的内存空间。

    数据类型 基本数据类型及其字节数
    5.3.2 注意事项:
    A.整数类型默认值是int,浮点类型默认是double。(在运算是会把byte转换成int再运算)
    B.声明long类型时,后面要加上“L”或者"l";

    C.声明float类型,后加“F”或"f",否则可能损失精度,因浮点数据默认是double的。

    D.默认转换:1)byte,short,char--int--long--float--double(从小字节转到大字节,避免可能损失精度)

    2)byte,short,char之间不能相互转换,他们参与运算首先转成int类型;
    char在转化int类型时对应一张ASCII表,其中有3个关健对应值须记住
    '0'-----48
    'A'-----65
    'a'-----97

    练习:
    衍生:当字符串+其他类型时
    字符串+其他类型
    E.强制转换:目标类型 变量名 = (目标类型)(被转换的数据)

    F.运算时直接是常量想加,查看注意A中的图的解释

    5.3.3 练习

    5.4 使用变量的主意事项:

    A.作用域:变量定义的位置决定了他的作用域,定义在方法内,作用域就是这个方法体,定义在类中作用域就是这个类。相同的作用域中不能丁两个同名变量。
    B.初始化值:没有初始化值不能直接使用。
    C.在一行上建议之定义一个变量。可以多个不算错,书写不规范。

    5.5 思考:

    1.变量相加和常量相加的区别?答案:注意A与F
    2.强制转换数据移除后的结果怎么算?答案:练习

    byte,short他们接收的其实是int类型的值,它们会自己做一个检测,如果超出他们所能表达的数值范围则就报错了。byte b = 128;//就报错。

    byte临界值的问题(-128~127)
    byte b1 = 127;//无错
    byte b2 = 128;//打印出来的是-128
    byte b3 = 129;//打印出来的是-127
    byte b4 = 130;//打印出来的是-126
    128的二进制是10000000,-128的二进制也可以是:10000000(这个的1既是符号位也是数值位),其他类型的临界值也是这样的;

    数据类型的默认转换:
    byte 、char、short --int -- long --float --double
    其中long是8字节,而float是4字节,为什么long还能默认转成float呢?
    A.long与float的底层存储结构不同
    1) long是整数类型,直接是1,08位那么存储;
    2) float是浮点类型,是带小数的二进制换算,存储的是有效数字位(科学计数法)
    B.float所表示的数值范围要大于long类型所表示的数值范围的;
    1) long表示的数值范围:2^63-1
    2) float表示的数值范围:3.410^38
    3.4
    10^38 > 210^38 > 28^38 > 22338 = 22^114 > 2^63-1

    Java语言中的字符char可以存储汉字吗?
    可以的,因为Java中的char是2个字节的;一个汉字是占2个字节的;Java的编码是采用Unicode编码;

    float类型的数据在内存中是怎么存储的?(了解)
    SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
    S表示浮点数正负
    E指数加上127后的值得二进制数据
    M底数
    举例:17.625在内存中的存储
    首先要把17.625换算成二进制:10001.101
    整数部分,除以2,直到商为0,余数反转。
    小数部分,乘以2,直到乘位0,进位顺序取。
    在将10001.101右移,直到小数点前只剩1位:
    1.0001101 * 2^4 因为右移动了四位
    这个时候,我们的底数和指数就出来了
    底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
    指数:实际为4,必须加上127(转出的时候,减去127),所以为131。也就是10000011
    符号部分是整数,所以是0
    综上所述,17.625在内存中的存储格式是:
    01000001 10001101 00000000 00000000

    参考书籍视频:
    -学习视频:黑马程序员_Java基础视频-深入浅出精华版
    -阅读书籍:Java核心技术 卷I(机械工业出版社)
              API1.8

    相关文章

      网友评论

          本文标题:Java基础之常量、变量

          本文链接:https://www.haomeiwen.com/subject/fcwwoxtx.html