首页 > 其他 > 详细

03-基础语法2

时间:2020-04-28 12:39:06      阅读:75      评论:0      收藏:0      [点我收藏+]

基本数据类型

对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分配了不同大小的内存空间
技术分享图片

整型变量/常量

  • 整型用于表示没有小数部分的数值,它允许是负数。整型的范围与运行Java代码的机器无关,这正是Java程序具有很强移植能力的原因之一。与此相反,C和C++程序需要针对不同的处理器选择最有效的整型
    技术分享图片
  • 为什么在初始化long类型变量的时候 ,值的末尾要加上L?
    技术分享图片
    • Java语言的整型常数默认为int型
    • 当定义的变量类型是 byte/short 时,赋值的时候会自动检查该整型常量是否在声明的类型的取值范围内
      • 如果在,就会自动类型转换
      • 如果不在,就会报错(在编译期)
    • 当声明的变量类型是long时,还是那句话:整数默认是int类型的;虽然你声明的变量是long类型,但是你后边的那个数值默认就是int型。所以,当编译的时候,会因为数值超过int类型的范围而报错 (long无法自动强转为int,怕精度丢失)
    • 故long型变量初始化时,值末尾必须添加 "l" / "L"

浮点型变量/常量

  • 带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型
    技术分享图片

    • float
      • float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求
      • 浮点型常量默认类型也是double,float类型赋值时需要添加后缀F/f
      • float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型(与上面同理)
    • double
      • double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型
      • 浮点型常量默认类型是double,也可以在浮点数值后添加后缀D或者d, 以明确其为double类型
    • Java浮点类型常量有两种表示形式
      • 十进制数形式,例如:3.14、314.0、0.314
      • 科学记数法形式,例如:314e2、314E2、314E-2
  • 使用科学记数法给浮点型变量赋值
    技术分享图片

  • Tip1:为什么 int 和 float 类型都占有4个字节,但是float类型表示范围却比int类型大好多?

    摘自:https://blog.csdn.net/C2681595858/article/details/84865920

    技术分享图片

  • Tip2:浮点数存在舍入误差,数字不能精确表示

    • 运行以下两个示例,发现示例2的结果是 " false ",而示例1的输出结果是 " d1 == d2 " 。这是因为由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。 浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近, 但不等于。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示
      技术分享图片
    • 如果需要进行不产生舍入误差的精确数字计算,需要使用java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值 // BigInteger实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点运算
      技术分享图片

字符型变量/常量

  • 字符型在内存中占2个字节,在Java中使用单引号来表示字符常量
    技术分享图片
    • 注意! ‘a‘ 是一个字符,它与 "a" 是不同的,"a" 表示含有一个字符的字符串
  • 允许使用转义字符 ‘ \ ‘ 来将其后的字符转变为其它的含义
    技术分享图片
  • 字符型的十六进制值表示方法
    技术分享图片
    • char 类型用来表示在Unicode编码表中的字符
    • Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符
    • Unicode具有从0到65535之间的编码,他们通常用从 ‘\u0000‘ 到 ‘\uFFFF‘ 之间的十六进制值来表示(前缀为u表示Unicode)
  • 这也就是为啥char类型可以参加算术运算~
    • 它将其编码转成一个int类型数值参与运算
    • 同理,也可以这么给char类型变量赋值
      技术分享图片
  • 转义字符
    技术分享图片

布尔类型变量/常量

  • boolean 类型有两个常量值:true 和 false,在内存中占一位 (不是1个字节)
    • 注意!不可以使用 0 或 非0 的整数替代 true 和 false,这点和 C 语言不同
  • boolean 类型用来判断逻辑条件,一般用于程序流程控制
    技术分享图片

类型转换

自动类型转换

[自动类型转换] 指的是 {容量小的数据类型} 可以自动转换为 {容量大的数据类型}
[容量大小] 指的是 数据类型所表示的数据范围的大和小 !而不是说它所占用的内存空间的大小

  • 数据类型按容量大小排序(当有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算)
    技术分享图片

  • 测试
    技术分享图片

  • 可以将整型常量直接赋值给 byte、 short、 char 等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可 // 整型变量赋给这仨就算不超范围也会报错~ 详见下面的小问题
    技术分享图片

  • 容量大小:float(4) > long(8)
    技术分享图片

  • Tips

    • boolean 类型不能与其它数据类型运算
    • byte, short, char 之间不会相互转换,他们三者在计算时首先转换为 int 类型 (包括本类型之间做运算)
    • 当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型
  • 小问题
    技术分享图片

    技术分享图片

强制类型转换

自动类型提升运算的逆运算
用于显式的转换一个数值的类型
在有可能丢失信息的情况下进行的转换是通过强转来完成的,但可能造成精度降低或溢出

  • 语法格式
    技术分享图片

  • 测试
    技术分享图片

  • 当将一种类型强制转换成另一种类型,而又超出了目标类型的表数范围,就会被截断成为一个完全不同的值
    技术分享图片

  • 小问题
    技术分享图片

String

  • String不是基本数据类型,属于引用数据类型

  • String类其实就是字符序列 (char sequence)
    技术分享图片

  • 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据
    技术分享图片

  • 当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类型的值将自动转化为字符串(String)类型
    技术分享图片

  • 到底是做运算还是做连接?
    技术分享图片

03-基础语法2

原文:https://www.cnblogs.com/liujiaqi1101/p/12793249.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!