1、关于别名效应
对对象赋值实际上是拷贝的对象的引用,而引用会指向同一个对象。这会带来“别名效应”。
当把对象传递给方法的时候,也会产生别名效应。比如下面的代码中的例子:
class letter()...{
char c;
}
public class PassObject()...{
static void f( letter y )...{
y.c = 'z';
}
public static void main( string[] args)...{
letter x = new letter();
x.c = 'a';
System.out.println("x.c="+x.c);
f...{x};
System.out.println("y.c="+y.c)
}
}
在这里传的还是reference。
别名效应是个很复杂的问题,在后面还会讲到。
2、正则表达式
expect()方法
3、对象的相等性
比较对象的相等性,使用equals() 方法,但是在默认的 equals()方法中比较的还是对象的引用,只是在大多数的类中系统已经重写了这个方法,用来比较对象的相等性。
4、短接
处理逻辑运算时,只要准确的知道整个表达式的结果,会自动结束整个表达式,这种现象叫做“短接”。
java中不提供运算符重载。
5、 while ( x = y ) 在JAVA中在等待一个boolean 值,而这个表达式不是 boolean 值,它更不会将int 转化为 boolean 值,所以编译器会自动报错。
6、类型转换
cast 的意思是“将东西浇到模子里”
JAVA 允许对除 BOOLEAN 之外的任何基本类型的数据任意转换,而boolean 值根本不能转换。类是不允许转化的。要让他们相互转换,必须有特殊的方法。JAVA中所有的对象都可以在自己的类系中上下传递。
如果对比 int 小的数据类型(也就是char,byte 和 short 型的数据)进行数学和位运算时,这些值会自动被提升为int 在进行运算。所以运算的结果仍然是int ,所以当你把这个值赋给更小的变量时,必须进行类行转换。 java中没有sizeof()运算符,因为JAVA中的所有的数据类型在所有的机器语言上相同的。
7、程序的控制
GOTO 是 JAVA 中的保留字,但是并没有用进去。而JAVA 中有 LABLE(标签)。