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基础(一)--操作符的更多相关文章

  1. java基础之操作符

    一:赋值 1.对基本数据类型的赋值,int a=b:   //把b的值复制给a,如果修改了a的值,b 的值不会受到影响. 2.对引用类型的赋值, public class Text { public ...

  2. Java基础——2 操作符

  3. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  4. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  5. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  6. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  7. Java基础应用

    Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...

  8. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  9. 经典的Java基础面试题集锦

    经典的Java基础面试题集锦,欢迎收藏和分享. 问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示”main方法不是public的”. 问题:Java里的传引用 ...

随机推荐

  1. iOS中.pch文件怎样使用

    pch 能够用来存储共享信息,比方设备屏幕的宽度,高度.版本等等 公用信息 Xcode 老版本号会自己主动为我们创建pch文件,新版本号開始不自己主动创建了.假设须要使用能够自己手动创建 waterm ...

  2. Vijos 1144 小胖守皇宫 【树形DP】

    小胖守皇宫 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步 ...

  3. Codesys——AD_DA在PID控制中的作用

    1. 摘要 PID控制中用到AD/DA的输入/输出,给出其大致实现思路. 2. 思路 3. 总结 无

  4. SuperSocket中的Server是如何初Initialize的

    第一个函数 d:\sourcecode\github\supersocket\quickstart\basic\telnetserver_startbyconfig\program.cs static ...

  5. Weex 和 React Native 的比较看这里

    写在前面 目前主流的应用大体分成三类:Native App, Web App, Hybrid App. Native App 特点: 性能好 完美的用户体验 开发成本高,无法跨平台 升级困难 (审核) ...

  6. 【POJ 1201】 Intervals

    [题目链接] 点击打开链接 [算法] 令sum(n)表示区间[1,n]中选了几个点 那么,显然有以下不等式 : 1. sum(n)- sum(n - 1) >= 0 2. sum(n) -  s ...

  7. POJ 2977 Box walking 长方体表面两点距离

    POJ2977 小学生的考试题,暴力得出O(1)的解法 #include<iostream> #include<cstdio> #include<cstdlib> ...

  8. SVN 打补丁 Apply Patch ***

    SVN补丁的方式,在不能连接服务器或者没有修改的权限,但是迫于形势,你又必须对这个文件进行修改,这时你就可以用Create patch创建补丁,然后把你创建的补丁发给项目人,或对此目录有写权限的工作人 ...

  9. C的结构体函数

    #include<stdio.h> #include<string.h> struct Test { int age; ]; double score; }std1; //结构 ...

  10. bzoj1880: [Sdoi2009]Elaxia的路线(spfa,拓扑排序最长路)

    1880: [Sdoi2009]Elaxia的路线 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 1944  Solved: 759[Submit][St ...