java 执行代码结构
class Test {
public static void main(String[] args) {
sout("xxxxx")
}
}
scala 执行代码结构
Object Test {
def main(args : Array[String]) : Unit = {
print("xxxxx")
}
}
1.使用Object关键字
如果使用Object声明类,可以编译出2个类,一个为当前类,另外一个是当前类的辅助类(类名$),辅助类可以构建对象使用(伴生对象),模拟静态语法。
2.声明main方法
2.1使用def(definded)关键字
scala必须使用def声明
2.2不需要public关键字
scala种没有public关键字,默认访问权限就是public
2.3不需要static
scala是一个完全面向对象的语言,所以没有静态语法
java静态:
public class TestJava {
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(new Runnable() {
public void run() {
}
});
Thread t2 = new Thread(new Runnable() {
public void run() {
}
});
t1.start();
t2.start();
t1.sleep(1000); //静态方法 不是t1休眠,实际是Thread.sleep(1000);说明是main线程在休眠。sleep跟对象无关,都没有对象锁。
t2.wait(1000); //成员方法 t2线程在等待。
}
}
sleep和wait()的区别:核心区别在于静态和成员。
public static native void sleep(long millis) throws InterruptedException;
public final void wait() throws InterruptedException {
wait(0);
}
scala怎么模拟静态方法呢?
伴生对象
直接用类名.方法
2.4不需要void
scala没有void关键字,void不是面向对象语法。
代替的是Unit类用来表示scala返回无返回值
java: 返回值类型 方法名
scala: 方法名() : 返回值类型
3.都有方法参数列表,声明方式不一样。
java : 参数类型 参数名
scala:参数名: 参数类型
原因: java的强类型是必须要先声明再使用
scala的强类型是类型推断,scala更关心对象名字。