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
▼クラスブロック+メインブロック
public class Main {
public static void main(String[] args) {
}
}
##メインブロック内の記述
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();キーボードから整数入力
#分岐
//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文
//論理演算子 &&(かつ)、||(または)
#繰り返し
for (int i = 0; i < 10; i++) {
ブロック
}
while (i < 100) {
ブロック
}
do {
if (i % 3 == 0) {
System.out.println(i);
}
i++;
} while (i < 100);
#配列
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);
}
#メソッド
//メソッドの定義
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
#複数クラスを用いた開発
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);
}
}
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);
}
}
}
#インスタンスとクラス
オブジェクト指向
public class Main {
public static void main(String[] args) {
Cleric c = new Cleric();
c.name = "聖職者";
c.SelfAid();
c.pray(3);
}
}
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つもコンストラクタが定義されていない場合に限って、「引数なし、処理内容なし」のコンストラクタがコンパイル時に自動的に追加される
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クラスを利用したプログラム
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はメモリの同じ場所を指すことになるため)
}
#継承
//キノコモンスターのクラスを作成
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;
}
}
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--;
}
}
}
public class Hero {
String name;
int hp = 150;
public Hero(String name) {
this.name = name;
System.out.println("名前は" + this.name + "、体力は " + this.hp);
}
}
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);
}
}