MENU

Java-05 字符串类型练习&进制与进制之间的转换(了解)

August 6, 2023 • Read: 80 • Java阅读设置

Java基本语法

变量

字符串类型String

练习

  1. +号左右两边只要存在String,该加号的结果就是直接拼接左右两边。+号两边不是String,则按照正常加法运算。
    例如'c' + 9 + "string"其结果为字符c和9进行正常加法的结果,该结果再与字符串string拼接,得到最终结果。
    2023-08-06T03:46:19.png
  2. 打印* (tab) *
    注意字符类型之间的+号,不是和字符串类型一样做拼接,而是正常的加法运算。字符在与除字符串类型外的数据类型(包括和字符类型)进行加法时,其值为对应的Unicode码对应的int型数值,因此是正常的加法操作。
    2023-08-06T03:55:32.png
  3. String数据类型的定义需要双引号"",不存在像基本数据类型中那种自动类型转换,即String s1 = 4这样是错误的。
    将数值类型转换为字符串类型的简单方法就是,将它们与空字符串进行拼接即可。
    String数据类型与其他基本数据类型之间也不存在强制类型转换。
    2023-08-06T04:00:19.png
    2023-08-06T04:02:34.png
    2023-08-06T04:08:00.png
    2023-08-06T04:09:15.png

进制与进制之间的转换(了解)

进制

  • 所有数字在计算机底层都以二进制形式存在。
  • 对于整数,有4种表示方式:

    • 二进制binary:0,1,满2进1(这里满2的意思是满了两个数),以0b0B开头表示。
    • 十进制decimal:0~9,满10进1。
    • 八进制octal:0~7,满8进1,以0开头。
    • 十六进制hex:0~9和A~F,满16进1,以0x0X开头表示。此处的A~F不区分大小写。
      2023-08-06T06:27:37.png
      2023-08-06T06:28:10.png
      即使我们使用不同进制,计算机最后呈现出来的还是以十进制的形式。
      2023-08-06T06:35:07.png

二进制与十进制之间的转换

  • Java整数常量默认是int型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位。
  • 二进制的整数有如下三种形式:

    • 原码:直接将一个数值转换为二进制。最高位为符号位。
    • 负数的反码:是对原码按位取反。只是符号位即最高位确定为1。
    • 负数的补码:其反码加1。
  • 计算机以二进制补码的形式保存所有的整数。

    • 整数的原码、反码、补码都相同。
    • 负数的补码是其反码+1。
  • 二进制转十进制(以byte类型为例,即1个字节表示一个数):

    • 正数:由于满2进1,因此最低位的数代表几个2^0,高一位的数代表几个2^1,以此类推(由于二进制只有0,1两个数,因此每位要么有1个2的几次方,要么为0),每位计算得到的数累加就可得到十进制。(几进制转十进制都适用)。
      2023-08-06T06:41:36.png
    • 负数:最高位为符号位,最高位为0表示正数,最高位为1表示负数。

      • 要用二进制表示一个负数,需要先得到其原码,再转换为反码,最后得到其补码,就得到了该负数的二进制表示。
        2023-08-06T06:52:39.png
      • 给出一个二进制,并且最高位为1,即一个负数的二进制,转换为十进制,那么就需要倒推,因为相当于给出了一个负数的补码,这时就需要先得到反码,再得到原码,最后计算出表示的十进制的负数。
        2023-08-06T06:56:32.png
  • byte b = (byte)128 --> b = -128

    • 可以通过-127的补码,-1即是-128的补码,即可知强制转换时截断的结果就是-128
    • 也可以通过从128计算其-128的补码,由于byte类型,因此最高位始终为1,经过转换后可以得到-128的补码。
    • 还可以这么想:byte类型表数范围为-128~127,一半正数一半负数,那么多出一个0和一个-128,0的二进制表示,考虑最高位符号位,就既可以是0也可以是-128。
      2023-08-06T07:03:14.png

十进制转二进制

  • 除2取余的逆
    2023-08-06T07:06:53.png

进制的基本转换

  • 十进制与二进制之间的转换

    • 二进制转十进制:乘2的幂数。
    • 十进制转二进制:除2取余数。
  • 二进制与八进制之间的转换,二进制与十六进制之间的转换等其他各进制之间的转换

    • 以与二进制之间的转换作为中间步骤。
      2023-08-06T07:09:57.png
    • 二进制与八进制之间的转换

      • 由于二进制与八进制之间是2^3的关系,因此二进制三位代表八进制1位,即二进制转八进制将二进制的三位合为八进制的1位,同理八进制转二进制时,将1位扩展为二进制的三位。
        2023-08-06T07:13:39.png
    • 二进制与十六进制之间的转换

      • 由于二进制与十六进制之间是2^4的关系,因此与二进制与八进制之间的转换类似,只不过是换成4位。
        2023-08-06T07:14:59.png
        2023-08-06T07:15:51.png
Last Modified: October 26, 2023