Java基础(一)--操作符
Java底层都是使用操作符来操作Java中的数据
常见的操作符:+、-、*、/、=
优先级:
当一个表达式存在多个操作符时,操作符的优先级决定了计算顺序,这点在我们刚开始学习数学的时候就会了解到
如果一个字符串后面有个+,在后面有非String类型的元素,会自动转换为String
关系运算符:> < <= >= == !=
基本数据类型通过==进行比较,其包装类需要用equals进行比较
Integer a = new Integer(2);
Integer b = new Integer(2);
int c = new Integer(2);
int d = new Integer(2);
System.out.println(a == b);
System.out.println(c == d);
System.out.println(a.equals(b));
a,b是对象,其内容相同,但是引用不同,如果比较对象,可以使用equals,而c,d虽然也是new Integer(),但只是把值赋给c,d
逻辑运算符:
&& || !,只能用于Boolean的比较,注意和& | ^ ~的区分(按位操作符)
短路:
&&除了与运算,还有一个功能就是短路,这也是面试中可能遇到的问题
if (false && true) { //第一个表达式为false,就不会计算比较后面的部分,可以获得性能提升
}
直接常量:
double:double = 1d; float:float = 1f; long:long = 1L;
PS:d/f/l大小写都可以
无论是Long还是Integer,都可以转换为二进制、八进制、十六进制的String,方法分别是:toBinaryString、toOctalString、toHexString
Double只有toHexString
八进制:以0开头,后面0-7
十六进制:以0x开头,后面为0-9-a-f
指数计数法:
float f = 1.39e-43f;
double d = 47e47d;
double d = 47e47; //此时double的d可以省略的,编译器通常把指数当做double处理的,所以float必须声明的
"e"代表自然对数的基数,约等于2.718。1.39e-43f就是1.39*2.718^-43,然而在Java、C、C++中,e等于10,也就是1.39*10^-43
按位操作符:
用来操作操作整数中的单个bit,也就是二进制,直接对底层进行操作,设置寄存器内的二进制位
&:按位与
|:按位或
^:按位亦或
~:按位非,也就是取反
~是一元操作数,也就是只能对一个操作数进行操作,其余三个都是二元操作数,可以和=联合使用,&= |= ^=
对于Boolean,可以使用& | ^,但是不能使用~(可能是避免和!混淆),此时和逻辑操作符是相同的,只是没有短路效果
移位运算符:
操作的对象也是二进制bit,只能用来处理整数
<<:操作符右侧指定的位数向左移动(低位补0)
>>:操作符右侧指定的位数向右移动(符号为正,高位补0,符号为负,高位补1)
>>>:无符号右移,无论正负,高位补0,Java独有的,C/C++没有
在对char、byte、short进行移位处理,首先会被转化为int类型,得到的结果也是int类型。只有数值的低五位才有效,int类型32位,是2的
5次方,而long类型处理的结果还是long
<<=、>=、>>>=:得到结果并赋值
int i = -1;
System.out.println(Integer.toBinaryString(i));
i >>>= 10;
System.out.println(Integer.toBinaryString(i));
long l = -1;
System.out.println(Long.toBinaryString(l));
l >>>= 10;
System.out.println(Long.toBinaryString(l));
short s = -1;
System.out.println(Integer.toBinaryString(s));
s >>>= 10;
System.out.println(Integer.toBinaryString(s));
byte b = -1;
System.out.println(Integer.toBinaryString(b));
b >>>= 10;
System.out.println(Integer.toBinaryString(b));
b = -1;
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(b>>>10));
结果:
11111111111111111111111111111111
1111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
11111111111111111111111111111111
1111111111111111111111
>>>=如果对byte和short进行运算,得到可能不是正确的结果,上面可以看到-1右移过后还是-1的结果
而Integer.toBinaryString(b>>>10);没有赋值,得到的是正确的结果
类型转换操作符:

低位自动转化为高位,高位只能强制转换为低位
截尾和舍入:
float、double转化成int,是直接舍掉小数部分,不是四舍五入。想要四舍五入,可以使用Math的round()
提升:
char、byte、short比int要小,会自动转成int。int和long运算,得到long。
Java没有sizeof,存在于C/C++
Java基础(一)--操作符的更多相关文章
- java基础之操作符
一:赋值 1.对基本数据类型的赋值,int a=b: //把b的值复制给a,如果修改了a的值,b 的值不会受到影响. 2.对引用类型的赋值, public class Text { public ...
- Java基础——2 操作符
- 【JAVA面试题系列一】面试题总汇--JAVA基础部分
JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...
- Java基础知识【下】( 转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- Java基础知识【上】(转载)
http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java基础应用
Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- 经典的Java基础面试题集锦
经典的Java基础面试题集锦,欢迎收藏和分享. 问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示”main方法不是public的”. 问题:Java里的传引用 ...
随机推荐
- 打开与关闭Linux防火墙
1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service iptables sta ...
- ubuntu14.04 的ibus不能卸载(安装fcitx输入法框架时可能有这个需求)。出现无system setting有用程序
每年的ubuntu新版本号公布,都会吸引一大批热血青年. 关注越多也让ubuntu越来越好了. 使用ubuntu的人都会在安装系统之后马上安装顺手的输入法,也可能不会.看人. 安装输入法,对于中文输入 ...
- Linux下Gcc 的编译过程
在linux下开发难免会用到gcc编译.GCC(GNU Compiler Collection.GNU编译器套装),是由 GNU 开发的编程语言编译器.它是GNU编译器套装以GPL许可证所发行的自由软 ...
- POJ 1625 Censored! (AC自己主动机 + 高精度 + DP)
题目链接:Censored! 解析:AC自己主动机 + 高精度 + 简单DP. 字符有可能会超过128.用map映射一下就可以. 中间的数太大.得上高精度. 用矩阵高速幂会超时,简单的DP就能解决时间 ...
- 音乐播放器之myeclipse项目
音乐播放器: 这个音乐播放器是用myeclipse打开的项目.假设有问题记得改掉文件的路径名.还有假设图片不显示也可能是图片的路径名不正确,如音乐无法播放也可能是路径名不正确.总之这个游戏有文件的引用 ...
- go7---map
package main /* map 类似其它语言中的哈希表或者字典,以key-value形式存储数据 Key必须是支持==或!=比较运算的类型,不可以是函数.map或slice, 这3中类型都不能 ...
- 洛谷T51924 忘情
二分上界有多大开多大 二分上界有多大开多大 二分上界有多大开多大 重要的事情说三遍 又被bright神仙带着做题了 先无脑上wqs二分 我们可以把这个柿子画一下,区间的花费就变成((sigema(l~ ...
- 【Silverlight】Bing Maps学习系列(一):开发前的准备工作
[Silverlight]Bing Maps学习系列(一):开发前的准备工作 微软推出的Bing Maps地图引擎,对外开放了Silverlight和Ajax两种客户端API,同时微软针对全球地图还推 ...
- python cmd 启动python项目报错:no module named “xxx”
场景:使用pycharm编辑器启动pyhon项目时可以启动,但使用cmd启动时,会报:no module named “xxx”的错误,此时,有两种情况: 1.no module named “xxx ...
- 洛谷 P2615 神奇的幻方 —— 模拟
题目:https://www.luogu.org/problemnew/show/P2615 直接按题意模拟即可; 用 Emacs 做的第一道题! 代码如下: #include<iostream ...