从”JAVA“而终 5:java的运算符
来源:互联网 发布:服务器防火墙开放端口 编辑:程序博客网 时间:2024/06/05 07:55
通过“HelloWorld”程序的编写,我相信你对java 学习会有一种迫不及待的感觉。前面讲解了java的基本数据,下面我们要学习的就是操作符,就是对他们进行操作的符号。说得简单点就是数学上的+-*/符号。java的操作符主要分:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、类型转行运算符等。
这里补充一点知识:在计算机中,所有的数值操作都是以加法的形式进行的。可能你要问那减法甚至乘法和除法怎么办呢?举个简单的例子,2减1,计算机可以把它当成2加上-1,而2乘以2可以当成两个2相加。计算机内部实现减法是把要减去的那个数转换成二进制再取反,然后再用2的二进制数加上这个取反的数。
步入正题,开始java的运算符介绍。首先我要列一个标准的表达式出来:int a = 3+1;这句话表示了什么意思呢?首先是在内存中开辟两个空间,分别给3和1,然后再把它们的和赋值给a这个变量(a变量也是存在栈内存中,后边的学习会告诉这些原理)。在java中我们在申明(定义)一个变量的时候必须指明类型,否则创建是不会成功的。这也是java面向对象的一种体现。在java中+、-、*、/、>、<、<=、>=他们的使用和数学上是一样的,比如,int a = 3*2+1;这个时候a就等于7。它的运算顺序(优先级别)和数学上是一样的。另外需要注明的一点是几乎所有的操作符都只能操作“基本数据类型”例外的是“=”、“==”、“!=”、“+=”;“=”:赋值运算符,把一个值赋给一个对象;“==”:比较运算符,比较两个对象是否相等;“!=”:比较运算符,比较两个对象是否不相等;“+=”:累加运算符,a +=1;表示把a+1的值再赋给a 。在很多java编程中很多人都会对下面的例子产生疑惑:
int a = 1;
int b = 1;
a++;
++b;
System.out.println(a);
System.out.println(b);
结果是什么?a++;表示将a的值赋给a后再加上1;++b;表示将b的值加上1后再赋值给b;这个只有在循环中才会体现出来。
&和&&有什么区别?&&短路运算符,如果左边为false将不作右边的判断;
==和equals的区别: ==比较的是2个对象的地址(引用),而equals较为复杂,它默认的是比较引用和==一样(如果我们自己写的类没有覆盖/ 重写该方法就比较的是引用);像java类库中的类大多实现了equals方法,它们比较的时候比较的是2个对象的内容。显然在覆盖了该方法的情况下,当equals为true时,==不一定为true。
注:equals不使用于基础数据类型,因为这个方法比较的是两个对象,而基础数据类型不算是对象(这也是很多人说java不是全部面向对象的原因)。
再此我就不一一讲解java的各运算符的作用,大家如果有需要可以参考这篇文章:http://blog.csdn.net/is_zhoufeng/article/details/8112199
位运算符的讲解:
有符号正整数左移位(<<)
// 例:7<<2
// 步骤:
// 1:将整数7转化为二进制数(7的二进制为111)
// 2:111 左移两位变成 11100(有符号左移低位补0)
// 3: 二进制的11100对应整数为:28
// 有符号负整数左移位(<<)
// 例:-7<<2
// 步骤:
// 1:将整数7转化为二进制数(7的二进制为111)
// 2:将二进制111取反加1,
// 得到: 11111111111111111111111111111001
// 然后左移两位变成: 11111111111111111111111111100100(有符号左移低位补0)
// 3: 二进制的11111111111111111111111111100100对应整数为:-28
//
// 有符号正整数右移位(>>)
// 例:7>>2
// 步骤:
// 1:将整数7转化为二进制数(7的二进制为111)
// 2:111 右移两位变成 001(有符号正数右移高位补0)
// 3: 二进制的001对应整数为:1
// 有符号负整数右移位(>>)
// 例:-7>>2
// 步骤:
// 1:将整数7转化为二进制数(7的二进制为111)
// 2:将二进制111取反加1,
// 得到: 11111111111111111111111111111001
// 然后右移两位变成: 11111111111111111111111111111110(有符号负数右移高位补1)
// 3: 二进制的11111111111111111111111111111110对应整数为:-2
// 无符号正整数右移位(>>>)
// 例:7>>>2
// 步骤:
// 1:将整数7转化为二进制数(7的二进制为111)
// 2:111 右移两位变成 001
// 3: 二进制的001对应整数为:1
// 无符号负整数右移位(>>>)
// 例:-7>>>2
// 步骤:
// 1:将整数7转化为二进制数(7的二进制为111)
// 2:将二进制111取反加1,
// 得到: 11111111111111111111111111111001
// 然后右移两位变成: 111111111111111111111111111110(无符号右移高位补0)
// 3: 二进制的111111111111111111111111111110对应整数为:1073741822
- 从”JAVA“而终 5:java的运算符
- 从”JAVA“而终 2:java的基础数据类型
- 从”JAVA“而终 1:认识java
- 从”JAVA“而终 6:java数组
- 从”JAVA“而终 15:java 多线程
- Java的运算符(转载从网络)
- 从”JAVA“而终 11:Enum的用法
- 从”JAVA“而终 21:Html讲解
- 从”JAVA“而终 22:CSS讲解
- 从”JAVA“而终 23:JQuery讲解
- 从”JAVA“而终 25:Servlet讲解
- 从”JAVA“而终 27:Ajax讲解
- 从”JAVA“而终 4:第一个java程序”helloworld“
- 从”JAVA“而终 8:java循环判断语句讲解
- 从”JAVA“而终 12:java集合框架API讲解
- 从”JAVA“而终 14:java 注释和注解
- 从”JAVA“而终 16:java sql学习资料大全
- 从”JAVA“而终 17:java Jdbc编程
- Android~Handler机制DEMO示例
- Application类作用浅析
- Android中Looper的quit方法和quitSafely方法
- 文章标题
- Mark——URL-统一资源定位器
- 从”JAVA“而终 5:java的运算符
- 大家好
- spring的jdbc操作
- java.io.*与装饰者模式
- C++指向函数的指针
- JSONObject文档
- Objective-C 程序设计 第八章
- Android M 新的运行时权限开发者需要知道的一切
- 如何判断大端小端