knowledge_java

knowledge_java

1 JAVA运算符总结

JAVA是建立在C++的基础之上的,所以大多数运算符都和C、C++相同,在此基础上,做出了自己的一些改进和简化。

java包括如下运算符:

  1. 算术运算符: +(正号、加),-(负号,减),*(乘),/(除),%(取模,其运算结果的正负号,仅取决于被模数的正负号),++(自增,包括前(先运算后取值)、后(先取值后运算)),--(自减,包括前(先运算后取值)、后(先取值后运算))
  2. 关系运算符: >,<,>=,<=,==,!=(运算结果是一个布尔值)
  3. 布尔逻辑运算符: !(NOT(逻辑非)) &(AND(逻辑与)) | (OR(逻辑或)) ^(XOR(逻辑异或)) &&(AND(短路与)) ||(OR(短路或))
  4. 位运算符: &(按位与,符号两边都为1,结果才是1) |(按位或,符号两边都为0,结果才是0) ^(按位异或,符号两边都是0或都是1,结果为0,否则为1) ~(按位非,即按位取反) <<(左移,被移除的高位丢弃,低位补0) >>(右移,被移出的低位丢弃,并用0或1补充左边的高位(被操作数是正数时全部用0补充,负数时全部用1补充)) >>>(无符号右移,被操作数无论是正数还是负数,高位全部用0补充)
    位运算符用来操作整数基本数据类型中的单个"比特"(bit),即二进制位。

下面例子说明移位运算符的特性:
note:
(1) << ,该操作符的左移操作也是无符号的!即,如果为负数,则左移操作时,符号位也将丢弃,操作结束后,可能得到一个正数。下面举2个极端的例子:

  a) System.out.println(-2147483647<<1); //该数值为int型能表示的最小值+1:输出正数2

  b) System.out.println(2147483647<<1); //该数值为int型能表示的最大值,输出负数-2

(2) ~ ,该操作符也是无符号的,针对一个数的取反操作,是将其每一位取反,包括符号位。它容易和一个数的反码搞混,一个数的反码,正数是本身,负数,是将其除了符号位外的每一位取反而得到的,是有符号的。

  1. 赋值运算符: =
  2. 扩展赋值运算符: +=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=
  3. 字符串连接运算符: +
  4. 三元运算符(又称条件运算符): ?:
    (条件表达式)?表达式1:表达式2;如果条件为true,运算后的结果是表达式1;如果条件为false,运算后的结果是表达式2.
  5. 其他运算符
    • 括号:() 优先级最高,可改变表达式运算顺序。
    • 方括号:[] 数组运算符。
    • 对象运算符:instanceof :用来判断一个对象是否属于某一个指定类或其子类的实例,如果是则返回true,否则返回false。注意只能判断对象,无法判断基本数据类型,比如:new Integer(123) instanceof Integer合法;123 instanceof int非法。
    • new 运算符:用于创建对象。

2 java数据存储位置

寄存器、堆、堆栈等。pending...

3 java原码反码补码

pending...

4 java的方法签名

java的方法签名包括方法名称和参数类型,编译器用它来区分不同的方法。但是,返回类型不是方法签名的一部分。

5 java接口中的字段

java接口中的字段自动为public static final的,不用显式指定这3个修饰符;
java接口中的方法自动为public abstract的,不用显式指定这2个修饰符。
事实上,接口里只允许有public方法,如果不提供访问权限修饰符,它的方法默认不是“友好的”(类中方法,是默认,包访问权限),而是public的。抽象类则几乎允许所有内容。

6

7

8

9

10

11

posted @ 2018-01-26 16:00  mediocrep  阅读(311)  评论(0编辑  收藏  举报
既然选择了远方,便只顾风雨兼程!