🔰

新卒研修で学んだJavaまとめ

2023/05/15に公開

はじめに

この内容は新卒1年目がjava研修で学んだことのまとめです。

データ型

分類 型名 格納できるデータ
整数 int 普通の整数
小数 float あいまいでもよい小数
double 普通の小数
真偽値 boolean trueかfalse
文字 char 1つの文字
文字列 String 文字の並び
なぜStringは大文字なのか

Javaには文字列を扱うデータ型がない。
なので文字列を扱うときはStringクラスを使う。
クラスは先頭を大文字にする暗黙のルールがあるため大文字になっている

変数の初期化

型 変数名 = 代入するデータ;

int age = 20;

定数

final 型 定数名 = 初期値;

final double PI = 3.14;

演算子

算術演算子

演算子 機能 優先順位
+ 加算(足し算)
- 減算(引き算)
* 乗算(掛け算)
/ 除算(割り算)
% 剰余(割り算の余り)

文字列結合演算子

演算子 機能 優先順位
+ 文字の連結

代入演算子

演算子 優先順位
= 最低 a=10
+= 最低 a+=2
-= 最低 a-=2
*= 最低 a*=2
/= 最低 a/=2
%= 最低 a%=2
+= (文字列) 最低 a+="風" [a+"風"と同じ]

インクリメント/デクリメント演算子

演算子 優先順位
++ 最低 a++ [a=a+1と同じ]
-- 最低 a-- [a=a-1と同じ]

キャスト演算子

int age=(int)3.2;

条件分岐

// 条件分岐1
if (a == b) {
    「a == b」が「true」だった場合の処理をここに記述する
}

//複数の分岐
if (a >= 100) {
    System.out.print(“aは大きい数です。”);
} else if (a >= 50) {
    Sytem.out.print(“aはそこそこ大きい数です。”);
} else if (a >= 25) {
    System.out.print(“aは小さくはない数です。”);
} else {
    System.out.print(“aは小さいです”);
}

論理演算

演算子
&&(AND) a == c && b == d aとcが等しいかつ、bとdが等しい場合にtrue
||(OR) a == c ||b == d aとcが等しいか、またはbとdが等しい場合にtrue
!(NOT) a != b aとbが等しいときにfalse、等しくないときにtrue
^(XOR) a ^ b aがtrue、bがfalseまたは、aがfalse、bがtrueのときtrue、それ以外はfalse

繰り返し処理

for

for (int i = 0; i < 10; i++) { 
    // ここに繰り返す処理を書く
}
//ネストする場合
for(int i = 0; i < 10; i++) {
    for(int j = 0; j < 10; j++) {
    }
}
//条件分岐と
for(int i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        // カウンタ「i」の数を判断して処理を分ける
	System.out.println(i + “は偶数です。”);
    } else {
      System.out.println(i + “は奇数です。”); 
    }
}
//continue
for (int i = 0; i < 10; i++) {
    if (i == 5) {
	//iが5の時だけスキップする
        continue;
    }
    System.out.print(i);
}
//実行結果 1,2,3,4,6,7,8,9

//break
for (int i = 0; i < 10; i++) {
    if (i == 5) {
	//iが5になったらfor文を抜け出す
        break;
    }
    System.out.print(i);
}
//実行結果 1,2,3,4,5

while

while(true) {
    // 永久に繰り返す処理
}

配列

添え字について詳しく

配列変数の宣言

要素の型[] 配列変数名

//int型の要素数が5つある配列を作成

//作成方法1
scores = new int[5]

//[宣言してから使うver]作成方法2
int[] scores;
scores = new int[5]

//作成方法3
int[] scores = new int[5];
[0] [1] [2] [3] [4]
new

newのことをnew演算子という

配列作成(最初から代入)

//作成方法1
int[] scores = new int[] {20,30,40,50};
//[省略ver]作成方法2
int[] scores = {20,30,40,50};

配列の長さを調べる

配列変数名.length

int num = scores.length;
System.out.println(num);

配列の要素に値を代入

int[] scores;
scores = new int[5];
//2つめの要素に代入
scores[1] = 30;

2次元配列

//宣言
String[][] str = new String[3][3];

// 値の代入
str[0][0] = "a";  // 0行目の0番目の部屋と考えると理解しやすい
str[2][1] = "b";  // 2行目の1番目の部屋と考えると理解しやすい
 
// 値の取得
System.out.println(str[0][0]);  // 0行目の0番目の部屋と考えると理解しやすい
System.out.println(str[2][1]);  // 2行目の1番目の部屋と考えると理解しやすい

//多次元配列の場合([]はいくらでも増やせる)
String[][][] str = new String[5][5][5];

配列とfor文を使う

よく使うからいつでも引き出せるように覚えておくとよき

int[] i = {1, 2, 3, 4, 5};

for (int j = 0; j < 5; j++) {
    System.out.println("i[" + j + "] = " + i[j]);
}

//2次元配列
String[][] str = {{"a","b","c"},{"d","e","f"},{"g","h","i"}};

for (int i = 0; i < 3; i++) {
   for (int j = 0; j < 3; j++) {
        System.out.print(str[i][j]);
    }
}

オブジェクト指向プログラミング

人間が把握しきれない複雑さを克服するために生まれた
3大オブジェクト

  • 継承
    • 過去に作った作品を流用し、新しい部品を簡単に作れる機能
  • 多能性
    • 似ている2つの部品を「同じようなもの」とみなし、「いいかげん」に利用できる機能
  • カプセル化
    • 属性や操作を、一部の相手からは利用禁止にする機能

オブジェクトとは

クラスは設計図
オブジェクトはモノ

クラス名とメンバ名のルール

対象 品詞 用法
クラス名 名詞 単語の頭が大文字
フィールド名 名詞 最初以外の単語の頭が大文字
メソッド名 動詞 最初以外の単語の頭が大文字

クラス作成

public class クラス名{
}

フィールドの宣言

String name;
int hp;
final int LEVEL = 10;

操作の宣言

public class Hello{
	String name;
	int hp;
	public void sleep(){
		this.hp = 100
                System.out.println(this.name + "は、眠って回復した!)";
	}
}

インスタンス

インスタンスの生成

クラス名 変数名 = new クラス名();

public class Main{
	public static void main(String[] args){
	Hero h = new Hero();
	}
}

フィールドへの値の代入

変数名.フィールド名 =;

public class Main{
	public static void main(String[] args){
	Hero h = new Hero();
	h.name = "ミナト";
	h.hp = 100;
	}
}

コンストラクタ

コンストラクタの定義

public class クラス名{
	public クラス名(){
		//↑ここがコンストラクタの名前
		自動的に実行する処理
	}
}
研修でやったデモ
import java.util.Scanner;
 
  public class Test082 {
    Test082() {
 
        Scanner scan= new Scanner(System.in);
        System.out.print("整数を入力してください>>");
        int num =scan.nextInt();
        scan.close();
 
        String[][] str = new String[num][num];
 
        // 配列すべての部屋に「 」全角スペースを代入する。
        for(int i =0 ; i < num ; i++) {
 
            for(int j = 0 ; j < num ; j++) {
 
                str[i][j] = " ";
 
            }
 
        }
 
        // 「○」を代入する
        for(int i = 0 ; i <num ; i++) {
 
            for(int j = 0 ; j< num ; j++) {
 
                if(i+ j >= num - 1) {
 
                    str[i][j] = "○";
 
                }
 
            }
 
        }
 
        // 表示
        for(int i = 0 ; i < num ; i++) {
 
            for(int j = 0 ; j < num ; j++) {
 
                System.out.print(str[i][j]);
 
            }
 
            System.out.println();
 
        }
 
    }
 
    public static void main(String[] args) {
 
        Test082 test = new Test082();
  
    }
 
}

コンストラクタを利用して他のメソッドを利用する

どうやら無駄にstaticを使うと現場で嫌われるらしい

Test.java
class Test {
    Test() {
        メソッド1();
        メソッド2();
    }
    public static void main(String[] args) {
        Test test = new Test();
    }
    void メソッド1() {
        // 処理1
    }
    void メソッド2() {
        // 処理2
    }
}

次回アクセス修飾子

Discussion