🔰
新卒研修で学んだJavaまとめ
はじめに
この内容は新卒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