三、Operators 运算符

  Assignment Operators(赋值运算符)

  =   +=   -=   %=   *=   /=    <<=     >>=     >>>=    &=    ^=      |=

public class ByteDemo {
public static void main(String[] args) {
byte b1=2;
byte b2=3;
b1=(byte)(b1+b2); //加法,转int
b1+=b2; //赋值,不转int
}
}

  b1+=b2;与b1=b1+b2;是否完全等价?

  答案是否定的。byte类型参数与运算时要先转换为int型,因此要进行强制类型转换。(可以把“b11+=b2;”看做是对“b1=(byte)(b1+b2);”的优化!)

  Comparison Operators(比较运算符)

  >    >=     <     <=     instanceof

  Equality Operators(相同运算符)

  ==  !=

  Arithmetic Operators(算术运算符)

  +       -       *       /        %

  Shift Operators(移位运算符)

  >>   <<    >>>

public class Test {
public static void main(String[] args) {
String s1 = Integer.toBinaryString(-1);
System.out.println(s1); // 11111111,11111111,11111111,11111111
int i1 = Integer.valueOf("1111111100000000", 2);
System.out.println(i1); // 65280
int i2 = i1 >> 1;
System.out.println(Integer.toBinaryString(i2)); // 01111111,10000000
int i3 = i1 << 1;
System.out.println(Integer.toBinaryString(i3)); // 00000001,11111110,00000000
int i4 = i1 >>> 1;
System.out.println(Integer.toBinaryString(i4)); // 01111111,10000000
// 零位扩展和符号位扩展
System.out.println(Integer.toBinaryString(-1 >> 1)); // 11111111,11111111,11111111,11111111
// -1
System.out.println(Integer.toBinaryString(-1 >>> 1)); // 01111111,11111111,11111111,11111111
// 2147483647
}
}

  Bitwise Operators(位运算符)

  &     |      ^(按位异或)   ~(按位取反)

  Logic Operators(逻辑运算符)

  &&  &  ||  |  !

  Conditional Operators(条件运算符)

  ?:

public class Test {
public static void main(String[] args) {
boolean b = true;
int i = b ? 1 : 2;
System.out.println(i); // 1
}
}

  

  Other operators

  ++  --

public class TestAction {

	public static void main(String[] args) {
int i = 2;
System.out.println(i++); // 2
System.out.println(i); // 3
int a = i++ + i; // 3+4=7
System.out.println(a);
int b = i++ + ++i; // 3+5=10
i++;
System.out.println(b);
System.out.println(i); // 7
for (int j = 0; j < 1000; j++) {
i = i++;
}
System.out.println(i); // 7
}
}

  

Java 基础知识总结 (三、运算符)的更多相关文章

  1. java 基础知识(三)

    Arraylist与Vector的区别 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料   162 人赞同了该文章 这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉 ...

  2. Java基础知识(三)

    一.hashCode 与 equals (重要) 面试官可能会问你:"你重写过 hashcode 和 equals 么,为什么重写equals时必须重写hashCode方法?" 1 ...

  3. java基础知识(三)java关键字

    关键字是电脑语言事先定义的,是特别意义的标识符,又叫保留字.用来表示一种数据类型或程序的结构等,关键字不能用作变量名.类名.方法名或参数.java目前共有50个关键字,其中"const&qu ...

  4. java基础知识拾遗(三)

    1.类加载 bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类. extension classloader -扩展类加载器,它负责加载JRE的扩展目 ...

  5. java基础知识(三)之数组

    声明数组: 语法:数据类型[ ] 数组名://例:int[ ] scores;  或者 数据类型 数组名[ ]://例:int scores[ ];分配空间 语法:数组名 = new 数据类型 [ 数 ...

  6. Java基础知识陷阱(三)

    本文发表于本人博客. 之前都讲了有关字符串的陷阱,那今天来说下关于静态这个东西,这分为静态变量.静态方法,先看下面的代码请问结果输出是什么?: class Person01{ private stat ...

  7. JAVA基础知识(三):input.nextLine() 和input.next()

    next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键.Tab键或Enter键等结束符,next()方法会自动将其过滤掉:只有在读取到有效字符之后,next()方 ...

  8. Java基础知识陷阱系列

    Java基础知识陷阱系列 今天抽空把Java基础知识陷阱有关的文章汇总于此,便于大家查看. Java基础知识陷阱(一) Java基础知识陷阱(二) Java基础知识陷阱(三) Java基础知识陷阱(四 ...

  9. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

随机推荐

  1. C#委拖小例子

    委托具有以下属性: 委托类似于 C++ 函数指针,但它们是类型安全的. 委托允许将方法作为参数进行传递. 委托可用于定义回调方法. 委托可以链接在一起:例如,可以对一个事件调用多个方法. 方法不必与委 ...

  2. 微信接口access_token

    //调用聚合网笑话接口 $url = 'http://japi.juhe.cn/joke/img/text.from?page=&pagesize=2&key=f0d06a1fe45b ...

  3. C++常见gcc编译链接错误解决方法

    除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词): 用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdy ...

  4. WCF netTcp配置

    服务端配置 <system.serviceModel> <bindings> <netTcpBinding> <binding name="netT ...

  5. java程序打包成jar 配置文件信息路径

    一个普通的java project,里面引用了config.properties配置文件,将项目打成Runnable jar,然后将config.properties放到打包后的jar路径下,执行该j ...

  6. Python第十二章正则表达式(2)

    1.前提是引入import re 匹配邮箱后缀需要写入r=r'\.com\.cn|\.com|\.cn' r=r'(\w+@\w+(\.com\.con|\.com|\.cn))'ll=re.find ...

  7. PHP连接SQLServer

    连接前配置系统: 1.检查文件 php5.2.5/ntwdblib.dll 默认下面有一个,不能连接再替换. 下载正确版本的 ntwdblib.dll (2000.80.194.0),地址: http ...

  8. http的响应对象

    Servlet 服务器 HTTP 响应 正如前面的章节中讨论的那样,当一个 Web 服务器响应一个 HTTP 请求时,响应通常包括一个状态行.一些响应报头.一个空行和文档.一个典型的响应如下所示: H ...

  9. 属性传值,协议传值,block传值,单例传值四种界面传值方式

    一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...

  10. Django web 基础

    一.Django概述 Django大而全; 创建Django工程:django-admin startproject sitename 创建django之后生成的目录结构如下: Project Pro ...