操作符
1
、使用静态导入类
import static
包名全名
.
具体类名
.* ;
可以直接使用这个类中的静态方法
2
、注意对象别名的问题,当你使用赋值运算符操作对象的时候,是操作了对象的引用
//: operators/Assignment.java
// Assignment with objects is a bit tricky.
package operators;
import static net.mindview.util.Print.*;
class Tank {
int level;
}
public class Assignment {
public static void main(String[] args) {
Tank t1 = new Tank();
Tank t2 = new Tank();
t1.level = 9;
t2.level = 47;
print("1: t1.level: " + t1.level +
", t2.level: " + t2.level);
t1 = t2;
print("2: t1.level: " + t1.level +
", t2.level: " + t2.level);
t1.level = 27;
print("3: t1.level: " + t1.level +
", t2.level: " + t2.level);
}
} /* Output:
1: t1.level: 9, t2.level: 47
2: t1.level: 47, t2.level: 47
3: t1.level: 27, t2.level: 27
*///:~
3
、同时也要注意方法调用中的对象引用问题
4
、关于
Random
类的对象产生随机数问题
当使用
Random
类产生对象的时候,如
Random rand = new Random();
那么
java
就会将当前的时间作为随机数生成器的种子,并在程序每一次执行都产生不一样的结果。反之,如果你创建对象的时候提供了种子,那么在程序执行过程中,生成的随机数数列是相同的。
可以使用
rand.nextInt(int n)
等方法产生随机数
注意:
下一个伪随机数,在此随机数生成器序列中 0(包括)和 n(不包括)之间均匀分布的 int 值。
5
、一元加号和减号
一元减号是用于转变数据的符号,而一元加号只是为了与一元减号相对应,但是它唯一的作用就是将较小类型的操作数提升为int
6
、对象的测试性
“
==
”和
equals()
的区别
“
==
”比较的是对象的引用,所以要比较对象的内容是否相同,则用
equals
方法比较,由于
java
的基础类库已经重载了此方法,所以使用这个方法比较内容是否相同,其他类型的对象必须先重载方法。
实现
equals
方法的相关代码如下:
public class T{
private String name ;
public boolean equals (Object obj){
if (this == obj){
return true ;
}
if (! (obj instanceof T)){
return flase ;
}
T t = (T)obj ;
if(this.name == t.name){
return true ;
}else {
return false ;
}
}
}
7
、对于易混淆的数据类型
比如
long
长整型,我们一般写
200L
而不是
200l
8
、移位操作:左移位操作、有符号右移操作、无符号右移操作
①左移操作:补
0
②有符号右移操作:符号为正,插入
0
;反之,插入
1
③无符号右移操作:补
0
9
、移位的数据类型问题
较低类型的数值进行移位处理的时候,如
char byte short
,在移位之前它们会先转换成为
int
型,但是数值只有最右端低
5
位才有效。当
long
类型的数值进行移位操作时,得到的结果也是
long
类型,此时只会用到数值右端的低
6
位,以防止移位超过
long
型数值具有的位数。
“移位”还可与“等号”组合使用,操作符左边的值会移动由右边的值指定的位数,再将结果赋给左边的变量。
10
、位运算实在要反复看才行,太难明白了
11
、尽量少用
if-else
三元操作符
12
、关于
while(x = y){
}
必须
x=y
这个表达式的值为
Boolean
值才会编译成功,而
java
编译器并不会把
int
型的数值转化成为
Boolean
值,所以当且仅当
x
和
y
都是
Boolean
值的时候,
x=y
,在这里才合法
13
、
java.lang.Math.round()
方法可以进四舍五入
14
、各数据类型的操作问题
Ø
Boolean
值:不能进行
*
、
/
、
+
、
-
、
%
、
++
、
--
、
取正
、取负
、
>
、
<
、
>=
、
<=
、
~
、
<<
、
>>
、
>>>
、
+=
、
-=
、
*=
、
%=
、
>>=
、
>>>=
、
<<=
、和均不能向
char byte int float double long short
类型转型
Ø
Char
值:不能进行
!
、
&&
、
||
、仅不能向
Boolean
转型
Ø
Byte
值:不能进行
!
、
&&
、
||
、仅不能向
Boolean
转型
Ø
Short
值:不能进行
!
、
&&
、
||
、仅不能向
Boolean
转型
Ø
Int
值:不能进行
!
、
&&
、
||
、仅不能向
Boolean
转型
Ø
Long
值:不能进行
!
、
&&
、
||
、仅不能向
Boolean
转型
Ø
Float
值:不能进行
!
、
&&
、
||
、
~
、
&
、
|
、
^
、
<<
、
>>
、
>>>
、
<<=
、
>>=
、
>>>=
、
&=
、
|=
、
^=
,仅不能向
Boolean
转型
Ø
Double
值:不能进行
!
、
&&
、
||
、
~
、
&
、
|
、
^
、
<<
、
>>
、
>>>
、
<<=
、
>>=
、
>>>=
、
&=
、
|=
、
^=
,仅不能向
Boolean
转型