Java Silver 1章 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)で実行している。
// ソースに複数のクラスがあれば複数のクラスファイルが作製される
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 Virtual Machine)が埋めてくれる。
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()メソッド
mainメソッドはJavaでは特別なメソッドで記述は必ず
Public static void main(String[] arg){...}
(今のところ意味不明)
プログラムの実行開始位置となる。
コンパイルエラーと実行時エラーのイメージ
コンパイルエラー:英語でいう単語や文法の間違い
実行時エラー :単語や文法はあってるが言ってる内容がおかしい
PacageとImport
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();
}
}
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();
}
}
PHPのNamespaceに似ている
Javaではフォルダとファイル構造でも区別する。おもしろい。
パッケージファイルをコンパイルする時は、パッケージ階層の一番上のディレクトリで実行
-d オプションで com\se\Foo.class と com\se\Main.classが作製される。
Import
Import宣言をする場合とパッケージ名まで含めた完全なクラス名を指定する場合がある
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();
}
}
Importされる側
package com.se.ren;
// 外部クラスからアクセスできるのはPublic修飾子が付いたクラスと
public class Foo {
// Public修飾子が付いたメソッドのみ。
public void print(){
System.out.print("Foo#print()");
}
}
ファイル名とPublicクラス名は同一
クラスライブラリ
便利な機能を提供してれるクラスの集まり
PHPではWebサイト作製に特化したライブラリが多かった。
Composerで管理していたがJavaはどうか…
Pacage化されているので使用する時はImport文を宣言
一章の感想
メソッド定義が必ずクラス内でなければいけない所がオブジェクト指向っぽい。
JSやPHPではメソッドも変数も好きに宣言できてたが、その分ごちゃごちゃになりやすかった。
必要なパーツはクラス名を付けて管理して使うときはクラスを明示して使う。
参考文献:Javaプログラマ Silver SE11.山本道子
Author And Source
この問題について(Java Silver 1章 Javaの基礎), 我々は、より多くの情報をここで見つけました https://qiita.com/naitoyuma/items/c605e4b88526a0844b72著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .