Java Silver 第一章:Java基础

编译和运行

// ソースに複数のクラスがあれば複数のクラスファイルが作製される
class Foo {}

// JavaではPublicクラスはファイルと同名
public class Main{
  public static void main(String[] args){
    System.out.println("Hi!!");
  }
}

// ソースファイル→クラスファイル(コンパイル)→実行(JVM:Java Virtual Machine上で実行)
// この学習ではWindowsOSにあるJVM.ver11を VScode Editerで参照してターミナル(PowerShell)で実行している。

PHP和JS是解释型语言,与之不同的是,编译器可以将源代码文件编译成各个类文件。JVM(Java虚拟机)填补了执行环境的差异。

当执行1亿次循环时,执行时间的差异。

public class Loop {
    public static void main(String[] args){
        int result = 0;
        long start = System.currentTimeMillis();
        for(int i = 0; i < 10000000; i++){
            result += 1;
        }
        long end = System.currentTimeMillis();
        System.out.println((end - start) + "ms");
    }
}
// 1億回足し算をするコードを実行する場合
// インタプリタ(1行づつ翻訳:PHP、JS、Rubyなど) ターミナルで -xオプション →821mm秒
// コンパイラ(機械語に一旦翻訳)  クラスファイルを作り実行    →31mm秒

###主函数(main()方法)
主函数是Java中的一个特殊方法,必须编写为:
public static void main(String[] arg){…}
(目前不明确意思)
它是程序的起始执行位置。

###编译错误和运行时错误的概念
编译错误:指的是英语单词或语法错误
运行时错误:指的是单词和语法是正确的,但表达的内容有问题

#包和导入

package com.se;
// PHPにおけるNamespaceと同じような概念
// ファイルを置くディレクトリーも分け、物理的に区別する感じ
class Foo{
    void print(){
        System.out.println("package sample");
    }
}
class Main{
    public static void main(String[] args){
        Foo f = new Foo();
        f.print();
    }
}

Java中的文件夹和文件结构与PHP的命名空间有相似之处。挺有意思的。

在编译包文件时,需要在包层级的最顶层目录中执行。
通过使用-d选项,会生成com\se\Foo.class和com\se\Main.class这两个文件。

有时候在Import声明中需要指定完整的类名,包括包名。
###导入方面

package com.se;

// 他パッケージを参照するにはImportを使用
import com.se.ren.Foo;

public class Main {
    public static void main(String[] arg){
        Foo f = new Foo();
        f.print();
    }
}

###被导入的一方

package com.se.ren;

// 外部クラスからアクセスできるのはPublic修飾子が付いたクラスと
public class Foo {
    // Public修飾子が付いたメソッドのみ。
    public void print(){
        System.out.print("Foo#print()");
    }
}

文件名和公共类名相同
#类库
是一组提供方便功能的类

PHP的库有很多是专门用于网站制作的。在PHP里,库的管理通常使用Composer。不过对于Java呢?

当使用时,需要声明导入语句,因为它已被封装为包。

第一章的感想是,方法的定义必须在类内部,这种要求类似于面向对象的特点。

在JS和PHP中,可以随心所欲地声明方法和变量,但这样容易变得混乱不堪。

使用时,将所需的部件以类名的形式进行管理,并明确使用该类。

参考文献:《Java程序员 银 SE11》 来自山本道子。

广告
将在 10 秒后关闭
bannerAds