YaxuSong

代码的世界我不懂.

  • 主页
  • 随笔
  • JAVA
  • Linux
  • ATLASSIAN
  • 简历
搜索 友请链接 关于我

YaxuSong

代码的世界我不懂.

  • 主页
  • 随笔
  • JAVA
  • Linux
  • ATLASSIAN
  • 简历

《Thinking in java》读书笔记(20)

2017-09-30

3.14使用操作符时常犯的错误

使用操作符时一个常犯的错误就是,即使对表达式如何计算结果不确定,也不愿意使用括号。
这个问题在Java中仍然存在。
在C和C++中,一个特别常见的错误

1
2
3
while(x = y){
//do something
}

很明显是“==”而不是“=”,但是因为C和C++的机制,如果y是一个非0值m,这会造成一个死循环。而在java中它期望的是一个boolean结果,而int不会转成boolean,自然会报错的。

3.15 类型转换器操作符

类型转换(cast)的原意就是“模型铸造”。在适当得时候,Java会将一种数据类型自动转换成另一种。例如,假设我们为浮点变量赋以一个整数值,编译器会自动将int转为float。类型转换允许我们显式地进行这种类型转换,或者在不能自动进行转换的时候进行强制转换。

1
2
int i = 200;
long lon= (long)i;

在C和C++中,类型转换有时会让人头痛。但在Java中,类型转换则是一种比较安全的操作。然而,如果执行一种名为窄化转换(narrowing conversion)的操作(也就是说,将能容纳更多信息的数据类型转换成无法 容纳那么多信息的类型),就会可能面临信息丢失的危险。此时编译器会强制我们去进行类型转换。而对于扩展转换(widening conversion),则不必进行显示转换。
Java允许我们把任何基本数据类型转换成别的基本数据类型,布尔类型除外。

3.15.1 截尾和舍入

在执行窄化转换时,必须注意截尾与舍入的问题。例如浮点型转整型。
29.7转化成int,结果不是30而是29。
因为float或者double转为整型时进行的是截尾,如果想要进行舍入需要使用java.lang.Math中的round()方法。

3.15.2 提升

如果对基本数据类型执行算术运算或按位运算,大家会发现,只要类型比int小(char、byte、short),那么在运算前,这些值会自动转换成int。最终的结果也是int。如果想把结果赋值给小的类型,就必须使用类型转换。

3.16 Java没有sizeof

在C和C++中,sizeof()操作符可以告诉我们数据项分配的字节数。在C和C++中,需要使用sizeof()的最大原因是为了“移植”。不同的数据类型在不同的机器上可能会有不同的大小。
Java不需要sizeof()是因为所有数据类型在所有机器的大小都是相同的。我们不必考虑移植问题——————因为它已经被设计在语言中了。

3.17 操作符小结

能够对布尔型值进行的运算非常有限。我们只能赋予它true和false值,并测试它为真还是为假,而不能将布尔值相加,或对布尔值进行其它运算。
我们要在类型的提升上多多关注。

3.18 总结

这一张花了很多时间,主要是自己的时间不是很多,希望自己能在2018年之前看完一半吧。

赏

谢谢你请我吃糖果

支付宝
微信
  • 读书笔记
  • Java

扫一扫,分享到微信

微信分享二维码
国庆快乐
《Thinking in java》读书笔记(19)
  1. 1. 3.14使用操作符时常犯的错误
  2. 2. 3.15 类型转换器操作符
    1. 2.1. 3.15.1 截尾和舍入
    2. 2.2. 3.15.2 提升
  3. 3. 3.16 Java没有sizeof
  4. 4. 3.17 操作符小结
  5. 5. 3.18 总结
Like Issue Page
Error: Not Found
Login with GitHub
Styling with Markdown is supported
Powered by Gitment
© 2019 YaxuSong
Hexo Theme Yilia by Litten
  • 搜索
  • 友请链接
  • 关于我

tag:

  • 随笔
  • ATLASSIAN
  • 读书笔记
  • Java
  • Linux
  • JAVA

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • jira-managing-project-permissions

    2018-08-22

    #读书笔记

  • SpringBoot使用Swagger2

    2018-06-10

    #JAVA

  • Redisson 的介绍与使用

    2018-06-04

    #JAVA

  • Spring Boot 关乎java程序员

    2018-05-16

    #JAVA

  • Kafka在SpringBoot 2.0中的整合-1

    2018-05-07

    #JAVA

  • 微信公众号后台在SpringBoot2.0中的实现(上)

    2018-05-01

    #JAVA

  • Kafka在SpringBoot 2.0中的整合

    2018-04-23

    #Java

  • Redis在SpringBoot 2.0中的整合

    2018-04-18

    #Java

  • 好久都没有发表博客了

    2018-04-18

    #随笔

  • 使用Xtrabackup备份InnoDB(MySQL)

    2018-03-06

    #Linux

  • LinuxMySQL的安装(3)

    2018-02-08

    #Linux

  • Linux下MySQL主从数据库的安装与配置

    2018-02-08

    #Linux

  • Linux离线安装Nginx

    2018-02-07

    #Linux

  • Linux定时任务备份mysql和数据

    2018-02-06

    #ATLASSIAN#Linux

  • 回家过年前一周

    2018-02-05

    #随笔

  • LinuxMySQL的安装(2)

    2018-02-02

    #ATLASSIAN#Linux

  • Atlassian产品设置JVM

    2018-01-31

    #读书笔记

  • Crucible安装

    2018-01-29

    #读书笔记

  • 当璀璨速朽成尘埃

    2018-01-25

    #读书笔记

  • JIRA高于7.2版本导出xlsx格式的EXCEL文件

    2018-01-22

    #ATLASSIAN

  • Linux离线git的安装

    2018-01-17

    #Linux

  • 终于复活啦

    2018-01-15

    #随笔

  • LinuxMySQL的安装(1)

    2018-01-15

    #ATLASSIAN#Linux

  • Bitbucket的安装

    2018-01-15

    #ATLASSIAN

  • JIRA修改license

    2018-01-11

    #ATLASSIAN

  • rsync的使用与配置

    2018-01-09

    #Linux

  • 最近电脑重装了,导致电脑里边的博客全没了

    2018-01-08

    #随笔

  • JIRA安装

    2017-12-15

    #ATLASSIAN

  • Nginx代理Atlassian产品(2):Use Domain:*.mydomain.com

    2017-12-13

    #ATLASSIAN

  • Nginx代理Atlassian产品(1):Use Domain:www.mydomain.com/*

    2017-12-13

    #ATLASSIAN

  • Atlassian产品使用单点登陆-SSO

    2017-12-13

    #ATLASSIAN

  • Atlassian产品安装环境准备-数据库(1):MySQL

    2017-12-11

    #ATLASSIAN

  • 《Thinking in java》读书笔记(23)

    2017-11-24

    #读书笔记#Java

  • 《Thinking in java》读书笔记(22)

    2017-11-24

    #读书笔记#Java

  • Java工程师成神之路

    2017-11-24

    #Java

  • say something to myself

    2017-11-23

    #随笔

  • 怀念那些我喜欢的经典

    2017-10-25

    #随笔

  • 《Thinking in java》读书笔记(21)

    2017-10-24

    #读书笔记#Java

  • 国庆快乐

    2017-10-01

    #随笔

  • 《Thinking in java》读书笔记(20)

    2017-09-30

    #读书笔记#Java

  • 《Thinking in java》读书笔记(19)

    2017-09-27

    #读书笔记#Java

  • 《Thinking in java》读书笔记(18)

    2017-09-18

    #读书笔记#Java

  • 《Thinking in java》读书笔记(17)

    2017-09-18

    #读书笔记#Java

  • 《Thinking in java》读书笔记(16)

    2017-09-11

    #读书笔记#Java

  • 回忆总是会使我泪流满面

    2017-09-05

    #随笔

  • 迷茫

    2017-09-01

    #随笔

  • 一个人的情人节

    2017-08-28

    #随笔

  • 没有什么事情是办不到的,只怕你没法战胜自己

    2017-08-23

    #随笔

  • 感觉最近有点霉运

    2017-08-07

    #随笔

  • 确实感觉还是有点小累的

    2017-08-04

    #随笔

  • 难受

    2017-08-01

    #随笔

  • 《Thinking in java》读书笔记(15)

    2017-08-01

    #读书笔记#Java

  • 感觉慢慢的步入正轨了

    2017-07-31

    #随笔

  • 每次写标题都很困难啊

    2017-07-24

    #随笔

  • 2017.07.18记

    2017-07-18

    #随笔

  • 《Thinking in java》读书笔记(14)

    2017-07-14

    #读书笔记#Java

  • 停更ThinKing in Java的读书笔记

    2017-07-11

    #读书笔记

  • 做决定看似简单其实很难

    2017-07-05

    #随笔

  • 《Thinking-in-java》读书笔记(13)

    2017-06-23

    #读书笔记#Java

  • 《Thinking in java》读书笔记(12)

    2017-06-22

    #读书笔记#Java

  • 《Thinking in java》读书笔记(11)

    2017-06-22

    #读书笔记#Java

  • 《Thinking in java》读书笔记(10)

    2017-06-21

    #读书笔记#Java

  • 《Thinking in java》读书笔记(9)

    2017-06-17

    #读书笔记#Java

  • 《Thinking in java》读书笔记(8)

    2017-06-15

    #读书笔记

  • 《Thinking in java》读书笔记(7)

    2017-06-14

    #读书笔记

  • 一些想法

    2017-06-14

    #随笔

  • 《Thinking in java》读书笔记(6)

    2017-06-12

    #读书笔记#Java

  • 《Thinking in java》读书笔记(5)

    2017-06-10

    #读书笔记#Java

  • 《Thinking in java》读书笔记(4)

    2017-06-07

    #读书笔记#Java

  • 决定

    2017-06-07

    #随笔

  • 《Thinking in java》读书笔记(3)

    2017-06-06

    #读书笔记#Java

  • 听完这首歌忘记所有的一切

    2017-06-05

    #随笔

  • 《Thinking in java》读书笔记(2)

    2017-06-04

    #读书笔记#Java

  • 《Thinking in java》读书笔记(1)

    2017-06-01

    #读书笔记#Java

  • 六一儿童节快乐

    2017-06-01

    #随笔

  • The mood may be better

    2017-05-31

    #随笔

  • NoTitle

    2017-05-27

    #随笔

  • 努力吧,少年

    2017-05-26

    #随笔

  • 想念那些日子

    2017-05-08

    #随笔

  • 此时此刻的心情

    2017-05-04

    #随笔

  • welcome

    2017-05-03

    #随笔

  • Leno's Blog
  • GitHub
  • CSDN博客
  • 国内站点(同站)
宋亚旭,就读于内蒙古大学软件工程专业,在大学期间就很喜欢写代码,现在在一家公司做Java后端工作。