`
samuschen
  • 浏览: 405918 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java中一些细节问题

 
阅读更多


9,i=i+1和i+=1完全等价吗?
    可能有很多程序员认为i+=1只是i=i+1 的简写方式,其实不然,它们一个使用简单赋值运算,一个使用复合赋值运算,而简单赋值运算和复合赋值运算的最大差别就在于:复合赋值运算符会自动地将运算 结果转型为其左操作数的类型。看看以下的两种写法,你就知道它们的差别在哪儿了:
  (1) byte i=5;
      i+=1;
  (2) byte i=5;
      i=i+1;
     第一种写法编译没问题,而第二种写法却编译通不过。原因就在于,当使用复合赋值运算符进行操作时,即使右边算出的结果是int类型,系统也会将其值转化为 左边的byte类型,而使用简单赋值运算时没有这样的优待,系统会认为将i+1的值赋给i是将int类型赋给byte,所以要求强制转换。理解了这一点 后,我们再来看一个例子:
  byte b=120;
  b+=20;
  System.out.println("b="+b);
   说到这里你应该明白了,上例中输出b的值不是140,而是-116。因为120+20的值已经超出了一个byte表示的范围,而当我们使用复合赋值运算时 系统会自动作类型的转化,将140强转成byte,所以得到是-116。由此可见,在使用复合赋值运算符时还得小心,因为这种类型转换是在不知不觉中进行 的,所以得到的结果就有可能和你的预想不一样。

1,位移运算越界怎么处理
    考察下面的代码输出结果是多少?
    int a=5;
    System.out.println(a<<33);
按 照常理推测,把a左移33位应该将a的所有有效位都移出去了,那剩下的都是零啊,所以输出结果应该是0才对啊,可是执行后发现输出结果是10,为什么呢? 因为Java语言对位移运算作了优化处理,Java语言对a<<b转化为a<<(b%32)来处理,所以当要移位的位数b超过 32时,实际上移位的位数是b%32的值,那么上面的代码中a<<33相当于a<<1,所以输出结果是10。

分享到:
评论

相关推荐

    Java编程中须注意的细节.pdf

    在进行Java编程时,许多开发者往往会忽略一些琐碎但至关重要的细节,这些细节可能在项目的开发和维护中造成不可预见的问题。为了解决这些问题,可以参考《Java Pazzlers》(Java解惑)这本书,其中对许多常见的编程...

    java 一些细节知识

    在这个"java一些细节知识"的压缩包中,包含了一份名为"java test.doc"的文档,我们可以期待它涵盖了作者个人测试后总结的Java关键知识点。以下是对这些可能包含的内容的详细解释: 1. **变量与数据类型**:Java支持...

    java中命名细节

    java中命名细节

    一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节 .zip

    一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节 一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节 一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节 一个桌面程序,通过游戏闯关的...

    一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节.zip

    一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节.zip一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节.zip一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节.zip一个桌面程序,通过...

    java笔记(细节问题讲的很细)

    这份"java笔记(细节问题讲的很细)"很可能包含了Java语言的核心概念、类库使用、编程技巧以及常见问题的解决方案。 一、Java基础 1. 变量与数据类型:Java提供了八种基本数据类型,包括整型、浮点型、字符型和...

    Java 一些值得注意的细节

    Java编程语言以其强大的跨平台能力和丰富的库而广受开发者喜爱,但在实际开发中,很多细节问题往往会成为初学者或有经验的开发者们的困扰。本文将深入探讨Java的一些值得注意的细节,帮助你避免常见陷阱,提升代码...

    javaSE编程常见细节问题

    根据提供的描述,本文将围绕 Java 语言的一些基础而重要的知识点进行深入探讨,特别是那些容易被忽略但又极其关键的细节。这些内容不仅涵盖了 Java 语言本身的特点,还涉及到 Java 虚拟机(JVM)的相关机制,对于理解...

    java基础 java细节

    Java基础,你想不到的知识,JVM等,java基础 java细节

    java连接数据库的步骤和问题的细节问题

    以下是对标题和描述中所述的“java连接数据库的步骤和问题的细节”进行的详细说明。 1. **JDBC(Java Database Connectivity)**: JDBC是Java平台的标准API,它允许Java程序与各种数据库进行交互。在Java中,我们...

    Java语言细节问题大全.rar

    这份名为"Java语言细节问题大全.rar"的压缩包文件,显然为开发者提供了一份全面的Java编程指南,涵盖了从基础到高级的各类问题。下面将详细讨论其中可能包含的知识点。 1. 文件系统操作: 在Java中,`java.io`和`...

    Java编程中影响性能的细节

    以下是一些关键的性能优化细节: 1. **使用单例模式**:单例模式可以确保一个类只有一个实例,从而节省资源和提高效率。不过,过度使用单例可能导致设计复杂性和测试困难,因此需谨慎使用。例如,`java.lang....

    java中Exception的细节

    本文将深入探讨Java中的Exception细节。 首先,异常分为两种类型:检查型异常和非检查型异常。检查型异常是那些在编译时期就需要处理的异常,例如`IOException`和`SQLException`。这些异常通常由外部因素引起,如...

    Java性能优化的45个细节.pdf

    以上是Java性能优化的一些关键点,开发者在开发过程中应当根据具体情况合理运用这些细节,以提高Java程序的性能。这些细节的掌握和运用需要对Java编程有较深的理解和实践经验,能够帮助开发者编写出更高效、更优质的...

    java 细节代码收集 供自己查看

    这篇集合了关于Java编程的一些重要细节,旨在帮助开发者更好地理解和运用这个强大的后端语言。以下是一些基于提供的文件名和标签所衍生出的Java编程知识点。 首先,`Test.java` 是一个常见的Java测试类文件名,通常...

    java一些意见 一些问题 技术

    在实际开发中,Java程序员可能会遇到各种各样的问题,尤其是在理解语言的细节时。以下是一些关于Java技术的问题及其答案: 1. **位移运算越界处理**: Java中的位移运算符`用于进行位移动操作。当尝试左移32位以上...

    一些java简单程序

    "一些java简单程序"这个主题,显然聚焦于帮助初学者理解Java编程基础。在这个压缩包中,"study path"可能是一个目录或者文件,它可能包含了学习Java的路径或者一系列逐步进阶的代码示例。 在Java编程中,初学者通常...

    JAVA中汉字字符转化为英文字符

    ### JAVA中汉字字符转化为英文字符 #### 知识点概览 本文将详细介绍如何在Java中实现汉字到英文字符的转换。此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr`...

Global site tag (gtag.js) - Google Analytics