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编程时,许多开发者往往会忽略一些琐碎但至关重要的细节,这些细节可能在项目的开发和维护中造成不可预见的问题。为了解决这些问题,可以参考《Java Pazzlers》(Java解惑)这本书,其中对许多常见的编程...
在这个"java一些细节知识"的压缩包中,包含了一份名为"java test.doc"的文档,我们可以期待它涵盖了作者个人测试后总结的Java关键知识点。以下是对这些可能包含的内容的详细解释: 1. **变量与数据类型**:Java支持...
java中命名细节
一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节 一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节 一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节 一个桌面程序,通过游戏闯关的...
一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节.zip一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节.zip一个桌面程序,通过游戏闯关的方式来了解一些java的语言细节.zip一个桌面程序,通过...
这份"java笔记(细节问题讲的很细)"很可能包含了Java语言的核心概念、类库使用、编程技巧以及常见问题的解决方案。 一、Java基础 1. 变量与数据类型:Java提供了八种基本数据类型,包括整型、浮点型、字符型和...
Java编程语言以其强大的跨平台能力和丰富的库而广受开发者喜爱,但在实际开发中,很多细节问题往往会成为初学者或有经验的开发者们的困扰。本文将深入探讨Java的一些值得注意的细节,帮助你避免常见陷阱,提升代码...
根据提供的描述,本文将围绕 Java 语言的一些基础而重要的知识点进行深入探讨,特别是那些容易被忽略但又极其关键的细节。这些内容不仅涵盖了 Java 语言本身的特点,还涉及到 Java 虚拟机(JVM)的相关机制,对于理解...
Java基础,你想不到的知识,JVM等,java基础 java细节
以下是对标题和描述中所述的“java连接数据库的步骤和问题的细节”进行的详细说明。 1. **JDBC(Java Database Connectivity)**: JDBC是Java平台的标准API,它允许Java程序与各种数据库进行交互。在Java中,我们...
这份名为"Java语言细节问题大全.rar"的压缩包文件,显然为开发者提供了一份全面的Java编程指南,涵盖了从基础到高级的各类问题。下面将详细讨论其中可能包含的知识点。 1. 文件系统操作: 在Java中,`java.io`和`...
以下是一些关键的性能优化细节: 1. **使用单例模式**:单例模式可以确保一个类只有一个实例,从而节省资源和提高效率。不过,过度使用单例可能导致设计复杂性和测试困难,因此需谨慎使用。例如,`java.lang....
本文将深入探讨Java中的Exception细节。 首先,异常分为两种类型:检查型异常和非检查型异常。检查型异常是那些在编译时期就需要处理的异常,例如`IOException`和`SQLException`。这些异常通常由外部因素引起,如...
以上是Java性能优化的一些关键点,开发者在开发过程中应当根据具体情况合理运用这些细节,以提高Java程序的性能。这些细节的掌握和运用需要对Java编程有较深的理解和实践经验,能够帮助开发者编写出更高效、更优质的...
这篇集合了关于Java编程的一些重要细节,旨在帮助开发者更好地理解和运用这个强大的后端语言。以下是一些基于提供的文件名和标签所衍生出的Java编程知识点。 首先,`Test.java` 是一个常见的Java测试类文件名,通常...
在实际开发中,Java程序员可能会遇到各种各样的问题,尤其是在理解语言的细节时。以下是一些关于Java技术的问题及其答案: 1. **位移运算越界处理**: Java中的位移运算符`用于进行位移动操作。当尝试左移32位以上...
### JAVA中汉字字符转化为英文字符 #### 知识点概览 本文将详细介绍如何在Java中实现汉字到英文字符的转换。此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr`...
根据提供的文件内容,以下是对“有关JAVA的一些PPT”中所涉及知识点的详细解析: ### 1. 面向对象编程(OOP) 面向对象编程是Java编程中的核心概念,涉及如何使用对象和类来设计软件和程序。OOP的基本原则包括: -...