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》 来自山本道子。