[001-02-018].第05节:数据类型及类型转换

我的后端学习大纲
我的Java学习大纲


1、数据类型介绍:

1.0.计算机存储单位:

1.1.基本数据类型介绍:

a.整型:byte、short、int、long

  • 1.整型包括:byte、short、int、long,可如下图方式类比记忆:
  • 2.Java各整数类型有固定的表数范围和字段长度不受具体OS的影响,以保证java程序的可移植性
  • 3.java的整型常量默认为 int 型声明long型常量须后加'l'或'L'
  • 4.java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
  • 5.bit: 计算机中的最小存储单位。byte:计算机中基本存储单元
  • 6.代码测试:

b.浮点类型:float、double

  • 1.与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响,用来表示待小数点的数值
  • 2.浮点型常量有两种表示形式:
    • 十进制数形式:如:5.12 512.0f .512 (必须有小数点)
    • 科学计数法形式:如:5.12e2 512E2 100E-2
  • 3.float:单精度,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求
  • 4.double:双精度,精度是float的两倍。通常采用此类型
  • 5.Java 的浮点型常量默认为double型,声明float型常量,须后加'f'或'F'

c.字符类型:char

  • 1.char 型数据用来表示通常意义上"字符"(2字节)

  • 2.Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符

  • 3.字符型变量的三种表现形式:

    • 形式1:字符常量是用单引号(' ')括起来的单个字符,例如:char c1 = 'a'; char c2= '中'; char c3 = '9';
    • 形式2:直接使用 Unicode 值来表示字符型常量:'\uXXXX'。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n。
    • 形式3:Java中还允许使用转义字符'\'来将其后的字符转变为特殊字符型常量。 例如:char c3 = '\n'; '\n'表示换行符
  • 4.char类型是可以进行运算的。因为它都对应有Unicode码

d.布尔类型:boolean

  • 1.boolean 类型用来判断逻辑条件,一般用于程序流程控制:
    • if条件控制语句;
    • while循环控制语句;
    • do-while循环控制语句;
    • for循环控制语句;
  • 2.boolean类型数据只允许取值true和false,无null
    • 不可以使用0或非 0 的整数替代false和true,这点和C语言不同
    • Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的
      boolean值,在编译之后都使用java虚拟机中的int数据类型来代替true用1表示,false用0表示
  • 3.一般不谈boolean类型占用空间大小,但是真正在内存中分配的话是占用4个字节

1.2.引用数据类型介绍:

a.字符串String类型:

  • 1.String类型是属于引用数据类型
  • 2.使用方式与基本数据类型一致。例如:String str = "abcd"使用双引号;
  • 3.String类型可以与基本的8种数据类型进行计算,计算是属于连接计算,其实就是说:当把任何基本数据类型的值和字符串(String)进行连接运算时(+)基本数据类型的值将自动转化为字符串(String)类型

b.练习题:



2、基本数据类型变量间运算规则

在Java程序中,不同的基本数据类型(只有7种,不包含boolean类型)变量的值经常需要进行相互转换

转换的方式有两种:自动类型提升强制类型转换

2.1.基本数据类型变量的自动类型提升:

a.提升规则:

  • 1.规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型 ,这里的容量大小指的是表示的数的范围大和小
  • 2.基本数据类型的转换规则如下图所示:数据类型按容量大小排序为:byte,char,short-->int-->long-->float-->double;
  • 3.测试:

b.注意事项:

  • 1.byte,short,char之间不会相互转换,或者她们自己跟自己之间的转换,他们三者都会在计算时首先转换为int类型
  • 2.基本数据类型的转换包括7中基本数据类型变量间的运算。不包括boolean类型,boolean类型不能与其它数据类型运算
  • 3.当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型

2.2.基本数据类型变量的强制类型转换:

a.强制转换规则:

  • 1.强制类型转换是:自动提升类型转换的逆运算,将容量大的类型转换成容量小的类型,强制类型转换的时候,可能会导致导致精度损失

b.转换语法:

  • 数据类型1 变量名 = (数据类型1)被强转数据值; //()中的数据类型必须<=变量值的数据类型

c.转换格式:



2.3.类型转换练习:

  • 1.判断下面是否可以编译通过:

3.进制转换:

3.1.进制的分类:

  • 1.所有数字在计算机底层都以二进制形式存在
  • 2.对于整数,有四种表示方式:
    • 二进制(binary):0,1 ,满2进1.以0b或0B开头
    • 十进制(decimal):0-9 ,满10进1。
    • 八进制(octal):0-7 ,满8进1. 以数字0开头表示
    • 十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。如:0x21AF +1= 0X21B0

3.2.进制的表示:


3.3.二进制介绍:

a.二进制概述:

  • 1.Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位

b.二进制的整数有如下三种形式:

  • 原码:直接将一个数值换成二进制数。最高位是符号位
  • 负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
  • 负数的补码:其反码加1
  • 注意:计算机以二进制补码的形式保存所有的整数;正数的原码、反码、补码都相同负数的补码是反码+1

c.为什么要使用原码、反码、补码表示形式呢?

  • 1.计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。

3.4.进制的转换:

a.二进制转十进制:

  • 案例1
  • 案例2:给出的二进制码默认是补码,然后我们根据补码来推出表示的十进制数是多少:
  • 案例3:-128二进制表示:

b.十进制转二进制:

c.二进制转八进制:

d.二进制转十六进制

e.java中的十进制转换成其他进制的api:


相关推荐
古希腊掌管学习的神34 分钟前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
赵钰老师34 分钟前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言
就爱学编程42 分钟前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
C++忠实粉丝1 小时前
Redis 介绍和安装
数据库·redis·缓存
Oneforlove_twoforjob1 小时前
【Java基础面试题025】什么是Java的Integer缓存池?
java·开发语言·缓存
emoji1111111 小时前
前端对页面数据进行缓存
开发语言·前端·javascript
每天都要学信号1 小时前
Python(第一天)
开发语言·python
TENET信条1 小时前
day53 第十一章:图论part04
开发语言·c#·图论
生信圆桌1 小时前
【生信圆桌x教程系列】如何安装 seurat V5版本R包,最详细安装手册
开发语言·r语言
ClouGence1 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存