0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

今日から携わるJava

Last updated at Posted at 2020-08-22

Javaを勉強して必要なことのまとめ

#Eclipseショートカットキー

■ 補完(Ctrl + Space)
(sysout) System.out.println();
(syso) System.out.println();
(main) public static void main(String[] args) {}

■ ローカル変数を宣言(Ctrl + 2 → L)
new ArrayList(); → ArrayList arrayList = new ArrayList();

■ その他のショートカット
ソースコードのフォーマット(Ctrl + Shift + F)
コメントアウト(Ctrl + /)
クイックフィックス(Ctrl + 1)
1行移動、1行コピー(Alt + ↓↑、Ctrl + Alt + ↓↑)
1行削除(Ctrl + D)
メソッドの抽出(Alt + Shift + M)
呼び出し階層を開く(Ctrl + Alt + H)
宣言を開く(Ctrl + クリック)
型を開く(Ctrl + Shift + T)

#プログラムの書き方
スッキリわかるJava入門を読んだ自分用のまとめ
https://sukkiri.jp/books/sukkiri_java3

▼クラスブロック+メインブロック

Main.java
public class Main {
	public static void main(String[] args) {

	}
}

##メインブロック内の記述

Main.java
System.out.println("こんにちは");こんにちはと表示させる
System.out.println("二重引用符(¥"");「二重引用符(")」と表示させる

int age;//変数宣言(ageという箱を用意)
age = 20;//変数age 代入 20
int age = 20;//変数 ageを20で初期化
age = 32;//変数ageに再代入
final double Pi = 3.14;//定数として円周率を宣言

//:データ型(整数)
byte glasses = 2;//所持するメガネの数
short age = 20;//年齢
int salary = 180000;//給与金額
long worldPeople = 6900000000L;//世界の人口
//データ型(少数)
float weight = 56;//体重
double pi = 3.14;//円周率
//データ型(真偽値)
boolean isError = true;//trueかfalse
//データ型(文字、文字列)
char initial = F;//イニシャル1文字
String name = Haru;//名前

int m = Math.max(,);//数字を比較して大きい方を代入
int n = Interger.parseInt();文字列を数字に変換
int r = new java.util.Random().nextInt();//乱数を発生(最大①まで)
String s = new java.util.Scanner(System.in).nextLine();キーボードから文字入力
int i = new java.util.Scanner(System.in).nextInt();キーボードから整数入力

#分岐

Main.java
//if
if (tenki == true) {
	System.out.println("晴れです");
}else {
	System.out.println("雨です");
}

//switch
int lucky = new java.util.Random().nextInt(3)+1;
System.out.println(lucky);
switch (lucky) {
case 1:
	System.out.println("大吉です");
	break;
case 2:
	System.out.println("吉です");
	break;
case 3:
	System.out.println("凶です");
}

//繰り返し処理の中断 break文
//今回だけ中断して次の周へ continue文

//論理演算子 &&(かつ)、||(または)

#繰り返し

Main.java
for (int i = 0; i < 10; i++) {
  ブロック	
}

while (i < 100) {
  ブロック
}

do {
	if (i % 3 == 0) {
		System.out.println(i);
	}
	i++;
} while (i < 100);

#配列

Main.java
int[] score;//int型の要素を代入できる配列変数scoreを用意
score = new int[5];int型の要素を5つ作成してscoreに代入

score.length//配列の要素数の取得

int[] scores1 = new int[] {1,2,3};//省略法1
int[] scores2 = {1,2,3};//省略法2

for (要素の型 変数名:配列変数名){//拡張for文
}

//例
int[] moneyList = {1,2,3};
for(int i=0; i < moneyList.length; i++) {
	System.out.println(moneyList[i]);
}
for(int m : moneyList) {
	System.out.println(m);
}

#メソッド

Main.java
//メソッドの定義
public static 戻り値の型 メソッド名(引数リスト) {
	メソッドが呼び出されたときに実行される具体的な処理
}

public static void hello() {//helloメソッド、voidは戻り値がなしのときに使用
	System.out.println("こんにちは");
}
hello();//helloメソッドを呼び出す

//例
public static void main(String[] args) {
	introduceOneself();
}
public static void introduceOneself() {
	String name = "はる";
	int age = 6;
	double height = 110.5;
	char zodiac = '午';
	System.out.println(name);
	System.out.println(age);
	System.out.println(height);
	System.out.println(zodiac);
}

//例(オーバーロード)
public static void main(String[] args) {
	String address = "hoge@hogehoho.hoge";
	String text = "メールの本文";
	email(address,text);
}
public static void email(String address, String text) {
	System.out.println(address + "に、以下のメールを送りました");
	System.out.println("件名:無題");
	System.out.println("本文:" + text);
}
public static void email(String title, String address, String text) {
	System.out.println(address + "に、以下のメールを送りました");
	System.out.println("件名:" + title);
	System.out.println("本文:" + text);
}

//例(三角形の面積)
public static void main(String[] args) {
	double triangleArea = calcTriangleArea(10.0,5.0);
	System.out.println(triangleArea);
}
public static double calcTriangleArea(double bottom, double height) {
	double area = bottom * height / 2;
	return area;
}

▼参考:メソッドの使い方
https://www.javadrive.jp/start/method/index1.html

#複数クラスを用いた開発

Calc.java
public class Calc {
	public static void main(String[] args) {
		int a = 10; int b = 2;
		int total = CalcLogic.tasu(a, b);
		int delta = CalcLogic.hiku(a, b);
		System.out.println("足すと" + total + "、引くと" + delta);
	}
}
CalcLogic.java
public class CalcLogic {
	public static void main(String[] args) {
		public static int tasu(int a, int b) {
			return (a + b);
		}
		public static int hiku(int a, int b) {
			return (a - b);
		}
	}
}

#インスタンスとクラス
オブジェクト指向

Main.java
public class Main {
	public static void main(String[] args) {
		Cleric c = new Cleric();
		c.name = "聖職者";
		c.SelfAid();
		c.pray(3);
	}
}
Cleric.java
import java.util.Random;

public class Cleric {
	String name;
	int hp = 50;
	final int MAX_HP = 50;
	int mp = 10;
	final int MAX_MP = 10;

	public void SelfAid() {
		System.out.println(this.name + "は、セルフエイドを唱えた");
		this.hp = this.MAX_HP;
		this.mp -= 5;
		System.out.println("HPが最大まで回復した");
	}

	public int pray(int sec) {
		System.out.println(this.name + "は" + sec + "秒間天に祈った!");

		int recover = new Random().nextInt(3) + sec;

		int recoverActual = Math.min(this.MAX_MP - this.mp, recover);

		this.mp += recoverActual;
		System.out.println("MPが回復した" + recoverActual);
		return recoverActual;
	}
}

#様々なクラス機構
コンストラクタの条件
・メソッド名がクラス名と完全に等しい
・メソッド宣言に戻り値が記述されていない(voidもダメ)

public class クラス名 {
	クラス名() {
		自動的に実行する処理
	}
}

コンストラクタの特例
クラスに1つもコンストラクタが定義されていない場合に限って、「引数なし、処理内容なし」のコンストラクタがコンパイル時に自動的に追加される

Thief.java
public class Thief {
	String name;
	int hp;
	int mp;

	//new Thief("ハルタ", 40, 5)でインスタンス化する場合の記述
	public Thief(String name, int hp, int mp) {
		this.name = name;
		this.hp = hp;
		this.mp = mp;
	}
	//new Thief("ハルタ", 40)でインスタンス化する場合の記述(MPは5で初期化)
	public Thief(String name, int hp) {
		this(name, hp, 5);
	}
	//new Thief("ハルタ")でインスタンス化する場合の記述(HPは40,MPは5で初期化)
	public Thief(String name) {
		this(name, 40);
	}

	//new Thief()ではインスタンス化できないようにする(名前の無いThiefは存在させない)
}

上記のThiefクラスを利用したプログラム

Main.java
public class Main {
	public static void heal(int hp) {
		hp += 10;
	}
	public static void heal(Thief thief) {
		thief.hp += 10;
	}
	public static void main(String[] args) {
		int baseHp  = 25;
		Thief t = new Thief("ハルタ", baseHp);
		System.out.println(baseHp + ":" + t.hp);
		heal(baseHp);
		heal(t);
		System.out.println(baseHp + ":" + t.hp);
	}

	//実行結果
//	25:25(引数がint型の場合、変数baseHpの値が引数hpにコピーされる値渡しのため)
//	25:35(引数がクラス型の場合、変数tが示すアドレスが引数thiefにコピーされる参照渡しにより、t.hpとthief.hpはメモリの同じ場所を指すことになるため)
}

#継承

Matango.java
//キノコモンスターのクラスを作成
public class Matango {
	int hp = 50;
	char suffix;
	public Matango(char suffix) {
		this.suffix = suffix;
	}
	public void attack(Hero h) {
		System.out.println("キノコの攻撃 " + this.suffix);
		System.out.println("10のダメージ");
		h.hp -= 10;
	}
}
PoisonMatango.java
public class PoisonMatango extends Matango {
	int poisonCount = 5;
	public PoisonMatango(char suffix) {
		super(suffix);
	}
	public void attack(Hero h) {
		super.attack(h);
		if (this.poisonCount > 0) {
			System.out.println("さらに胞子をばらまいた");
			int dmg = h.hp / 5;
			h.hp -= dmg;
			System.out.println(dmg + "ポイントのダメージ");
			this.poisonCount--;
		}
	}
}
Hero.java
public class Hero {
	String name;
	int hp = 150;
	public Hero(String name) {
		this.name = name;
		System.out.println("名前は" + this.name + "、体力は " + this.hp);
	}
}
Main.java
public class Main {
	public static void main(String[] args) {
		Hero h = new Hero("ヒロタ");
		Hero h2 = new Hero("ヒロタ2");

		Matango m1 = new Matango('A');
		m1.appear();
		m1.attack(h);

		PoisonMatango pm1 = new PoisonMatango('A');
		pm1.appear();
		pm1.attack(h2);
	}
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?