下周去考SCJP,这两天再复习一下。
调用线程实例的start()方法他的run()方法会运行,你直接调用run()它也会运行。 Java中方法参数是按值传递的,最简单的情况就是传递基本数据类型。他不能更改传递给他的参数的,例如下面的程序会输出0
public class MyClass
{
public static void main(String argv[])
{
MyClass mc = new MyClass();
int i = 0;
mc.increment(i);
System.out.println(i);
}
void increment(int i)
{
i++;
}
} throws用在方法的声明中表示方法可能出现异常,throw表示抛出一个异常。不要混淆 finally中抛出异常可以导致try中的异常被忽略。看下面的例子
public class Test2
{
public static void main(String[] args) throws Exception
{
try
{
f();
}
finally
{
m();
}
}
public static void f() throws MyException
{
throw new MyException();
}
public static void m() throws MyException2
{
throw new MyException2();
}
}
class MyException extends Exception
{}
class MyException2 extends Exception
{} assert Exp1:Exp2这种形势中 Exp2如果是方法的话必须有返回值,可以是基本数据类型也可以是任何Object但是不可以void。 如果你提供了一个类的构造器那么编译器就不会提供无参数的构造器给你了,往往在扩展类的时候会出现问题,下面的例子就不能通过编译
class Base
{
Base(int i)
{
System.out.println("Base");
}
}
class Derived extends Base
{
public static void main(String argv[])
{
Derived d = new Derived();
}
void Derived()
{
System.out.println("Derived");
}
} 构造器是不能被覆盖的 native的方法是不能有body的,因为他们通常用c/c++来实现 public class MyClass
{
private static int x = getValue();
private static int y = 5;
private static int getValue()
{
return y;
}
public static void main(String args[])
{
System.out.println(x);
System.out.println(y);
}
}
这段程序的输出会是0,5。因为首先x,y都会设置为默认值0,当给他们赋值的时候y还是0,所以返回的y付给了x,所以x=0,然后给y赋值=5 引用声明为final的表示他不能再指向其他的对象,但是不说明引用的内容不能被修改 数组声明的时候,如果是基本数据类型的初始化为0或者false,如果是对象的初始化为null String = String+char是合理的 char = char+String是不合理的 StringBuffer sb = new StringBuffer("haha"); String s1 = "haha";System.out.println(s1.equals(sb));输出会是false的。不要被迷惑,不同类型的比较输出是false String和StringBuffer在层次上没有关系 static的方法中不能使用this &可以用在两个int之间表示bit与操作 &&不能用在两个int之间 要在布尔型之间使用