【Java】スレッド

マルチスレッドの書き方
MacBookでテストしてみたものの性能良すぎて動作確認できてない模様
もしかしたら間違ってるかもしれないけどサンプル通りだからあってるはず!

 
public class ThreadTest {
	public static void main(String[] args) {
		ExThread et1 = new ExThread();
		ExThread et2 = new ExThread();

		et1.go();
		et2.go();
		
		System.out.println("ここまで継承、ここからインターフェイス");
		
		ImpThread it1 = new ImpThread();
		ImpThread it2 = new ImpThread();

		it1.run();
		it2.run();
	}
}

// その1:継承
class ExThread extends Thread{
	void go(){
		for(int i=0;i<50;i++){
			System.out.println(this.getName());
		}
	}
}

// インターフェイスの使用
class ImpThread implements Runnable{
	@Override
	public void run() {
		for(int i=0;i<50;i++){
			System.out.println(i);
		}
	}
}

【Java】例外処理

class Test{
	// throws [例外クラス]
	// 例外が発生した場合、呼び出し元で対応させる
	void hoge() throws Exception {
		// 処理
	}
}

public class Anomaly {
	// mainでthrowsをし、try/catchをしなかった場合JVMは停止する
	//public static void main(String[] args) throws Exception{
	public static void main(String[] args){
		Test test = new Test();
		try{
			test.hoge();
		} catch (Exception ex){
			ex.printStackTrace();
		} finally{
			// 必ず実行される
		}
	}
}

【Java】オーバーライドとオーバーロードの違い

オーバーライド

 スーパークラスで定義されたメソッドをサブクラスで再定義すること

 

class TestA{
	void hoge(){
		// 処理
	}
}
class TestB{
	void hoge(){
		// TestAと違う処理が書ける
	}
}

オーバーロード

 メソッド名が同一で引数が異なるもの
 型、数、順番が同じものはエラー

class Test{
	void hoge(){
		// 処理
	}
	void hoge(String str){
		// String型が引数にあるときの処理
	}
	void hoge(int num){
		// int型が引数にあるときの処理
	}

}

【Java】変数、メソッドの修飾子

変数、メソッドの修飾子

省略時 同じパッケージ内からのみアクセスが可能

public 全ての場所からアクセスが可能

protected 同じパッケージ及びサブクラスからのみアクセスが可能

private 同じクラス内からのみアクセスが可能

final 継承・オーバーライドのできないメンバ

static インスタンス化せずに使用できる

static:

基本的にインスタンス名ではなくクラス名に対して呼び出す。

 

class Test(){
	static void method(){
		// 処理
	}
}
// ~~~~~~~~~~~~~~~~~

Test hoge = new Test();
hoge.method() 	// ☓
Test.method() 	// ○


【Java】instanceof演算子

左辺と右辺を比較し、以下の条件の時trueを返す
・左辺が右辺と同じクラス(もしくはインターフェイス)である時
・左辺が右辺のサブクラス(もしくは同じインターフェイスを親に持っているクラス)である時

var instanceof type