运算符注意的问题
来源:互联网 发布:警察查封淘宝假章 编辑:程序博客网 时间:2024/06/02 03:50
容易忽略情况
运算符无论哪种语言都是不可或缺的一部分。
我们知道运算符包括+ 、-、*、/ 、%等等,运算顺序遵循优先级策略原则。那么我们在使用时,需要注意什么呢?
首先,String 是有+=这个用法的,尽管它是String。
其次,整数除法会直接砍掉小数,而不是进位。
最后,%运算是针对正整数,虽然小数也能有结果。
书写注意事项
书写尽量简单清晰明了。
比如,
int a = 5;int b = a*-a;
这种写法就不好,尽管机器能识别,但是不利于我们辨识,可以
int a = 5;int b = a*(-a);或者int a = 5;int b = -a*a;
自增自减
我们都知道变量增加1或者减少1,我们通常会这么写:
int aa = 1;int bb = aa+1;或者 cc = 3;int dd = cc-1;
我们可以简写为:
int aa = 1;int bb = ++aa;或者int cc = 3;int dd = --cc;
这++ 或– 就是自增自减,那么自增自减的表示是什么?
自增:
int i = 0;
i++;//表示先计算表达式值,然后i增加1
++i;//表示i先自增1,然后计算表达式值
以例为证:
int x = 0;int y1 = x++;//++在变量之后,先引用后增加结果:y1= 0;但是 int y2 = ++x;//++在变量前,先增加后使用结果:y2 = 1;
==运算
下面来看一个例子,这个结果是多少呢?
public void ss(){ Integer i = new Integer(22); Integer b = new Integer(22); System.out.println(i == b); System.out.println(i != b); }
结果:
false
true
刚开始乍一看,觉得第一个是true,第二个是false,但是呢?
此时== 、!=比较的是对象的句柄而不是内容,所以我们看到的22是相同内容。那么怎么比较内容呢?对象而言,用equals.
public void ss(){ Integer i = new Integer(22); Integer b = new Integer(22); System.out.println(i.equals(b)); }
结果:true
对基本数据类型而言,比较的就是值。
public void ss(){ int i = 22; int b = 22; /* * 或者 * int i = new Integer(22); * int b = new Integer(22); */ System.out.println(i == b); }
结果:
true
移位运算
比如,如下情况:
int x = Integer.MAX_VALUE<<1;
那么,x值是多少呢?
出现了一种情况就是超越了int的最大值范围
我们都知道 Integer.MAX_VALUE在计算机中的表示
01111111 11111111 11111111 11111111
共32位,最高位是符号位
左移1位就是
11111111 11111111 11111111 11111110
最高位变为1
这是它的补码形式,负数是以补码形式存在,所以求其源码
已知补码求原码 :补码减去1,取反,符号位不变
所以补码
10000000 00000000 00000000 00000010
结果就是-2
所以2*Integer.MAX_VALUE的值为-2,取低32位值,并不是想的会报错。
- 运算符注意的问题
- JavaScript中的逗号运算符值得注意的问题
- 使用三目运算符时注意的一个问题
- 关于数字运算符值得注意的一点小问题
- Java学习之运算符使用注意的问题
- 赋值运算符函数注意问题
- 平时没注意的++运算符
- 运算符重载 = 的注意
- 运算符重载需要注意的事项
- C++ 运算符重载的注意点
- 7,运算符的一些注意点
- 算术运算符的使用注意
- 在GridView中使用三目运算符应注意的问题
- C语言自增、自减运算符使用中应注意的问题 王红
- php foreach 使用&(与运算符)引用赋值要注意的问题
- JS中使用短路运算符(&& || & |)时需要注意的小问题
- 初学Java,粗浅看待数据类型与运算符中需要注意的问题
- C++中使用转换构造函数和运算符重载时需要注意的问题
- rhel6.4部署gateone
- LeeCode编程训练日记一:Two Sum
- 看雪ctf记录第一题
- Linux误删文件教训,吃一堑长一智
- rhel6.4部署tomcat
- 运算符注意的问题
- 开源框架源码分析:网速监听—facebook/network-connection-class
- Linux-rhel6.4部署nginx
- Linux-rhel6.4 编译安装PHP,Nginx与php连接
- Linux 制作本地yum源
- Linux-bcmath编译安装
- 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
- Linux-RHEL6.4部署zabbix监控
- Canny边缘检测算法原理及其VC实现详解