プログラマの卵:備忘録

備忘録です。メモ代わりですが、少しでも皆様の役に立てば幸いです。

【Java】フィールド変数とローカル変数

フィールド変数とローカル変数についてまとめる。

フィールド変数 クラス内に定義される変数のこと。 フィールド変数はクラス内のメソッドから参照可能な変数となる。

ローカル変数 メソッド内にて宣言された変数のこと。 ※メソッド内の範囲でしか参照できない変数。 ※if文/for文/while文等にて宣言されている変数もローカル変数に含まれる。

フィールド変数の実例

public class fieldSample {
    private String name = "Jony";

    public void name() {
        System.out.println(name); // 実行結果:Jony
    }
}

ローカル変数の実例

public class localSample {
    public void sample() {
        String name = "Jony";
        int age = 30;
    }

    public static void main(String[] args) {
        System.out.println(name); // コンパイルエラー ※上記変数にアクセス不可
        System.out.println(age);  // コンパイルエラー ※上記変数にアクセス不可
    }

以上。

【Java】可変長引数

可変長引数についてまとめる。

可変長引数 Java SE 5から引数の個数が不定(可変)なメソッドを定義できるようになった。

可変長引数の使用方法

下記のように引数の型の直後にピリオドを3つつけて宣言する必要がある。 注意点:可変長引数は2つ以上同時に宣言できない。     可変長引数は最後の引数として宣言する必要がある。

// sample1
void sample1(int... num) {
    for (int i = 0; i < num.length; i++) {
        System.out.println(num[i]);
    }
}
// sample2
void sample2(int value, int... num) {
    // do something
}

可変長引数を宣言する際の注意点が2つある。 注意点: ①可変長引数は2つ以上同時に宣言できない。 ②可変長引数は最後の引数として宣言する必要がある。

// sample1
void sample1(int... num1, int num2) {    // コンパイルエラー(可変長引数の後に別の引数が宣言されている)
    // do something
}
// sample2
void sample2(int... value, int... num) { // コンパイルエラー(可変長引数が2つ以上ある)
    // do something
}

以上。

【Java】型変換の不思議:データ型(byte ~ long) ⇔ char型

データ型からchar型にcastについてまとめる。

データ型(プリミティブ型)について

※byte ~ long & charまでを紹介する。

データ型 値の種類 ビット数 格納できる範囲
byte 整数値 8ビット -128 ~ 127
short 整数値 18ビット -32,768 ~ 32,767
int 整数値 32ビット -2,147,483,648 ~ 2,147,483,647
long 整数値 64ビット -9,223,372,036,854,775,808 ~
9,223,372,036,854,775,807
char 文字   16ビット 0 ~ 65,535
Unicode文字、\u0000~\uffff

castの実例

        int num1 = 12354;
        System.out.println((char)num1); // 実行結果:あ

        char num2 = 12356; // データ型のため直接代入も可能
        System.out.println(num2); // 実行結果:い

上記のように格納したのは整数値のはずなのに、 char型で出力すると文字列に変換されて出力される。

この理由はJavaで使用されている文字コードUnicodeのため、 文字としてではなくその実、すべて数字として格納されているため上記のような結果となる。

さらに面白いのはデータ型のため四則演算が可能である。

        char num1 = 12354;
        char num2 = 12356;
        System.out.println(num1 + num2);         // 実行結果:24710
        System.out.println((char)(num1 + num2)); // 実行結果:悆

いろいろな文字を組み合わせて遊んでみるのも楽しいかもしれません。

以上。

【Java】Stringクラス①:length

Stringクラスにてよく使用するメソッドの詳細について パート毎に内容をまとめていく。 今回はlengthについて下記の通りまとめる。

lengthの働き

length():文字列の長さ(文字数)を取得(return)する。 length :配列の長さ(要素数)を取得(return)する。

lengthの使用例
       String sample1 = "Hello";
        String sample2 = "Hello World";
        String[] str   = new String[5];
        
        System.out.println(sample1.length()); // 5 ※文字数をカウント
        System.out.println(sample2.length()); // 11 ※スペースも1文字としてカウントされる。
        System.out.println(str.length);       // 5  ※要素数にてカウントされる。
        System.out.println("123".length());   // 3  ※直接文字列入力でも問題なし。
lengthのNG使用例
       int sample1 = 123;
        String[] str = new String[5];
        
        System.out.println(sample1.length()); // コンパイルエラー ※int型のため
        System.out.println(str[0].length);    // 実行時に例外がスローされる ※NullPointerException

以上。

【Java】2進数、8進数、16進数の表記方法

2進数、8進数、16進数の表記方法についてまとめる。

表記方法

2進数 :先頭に0b若しくは0B記載 (例 10進数:327 =  2進数:0b101000111)
8進数 :先頭に0始まりで記載   (例 10進数:327 =  8進数:0507)
16進数:先頭に0x若しくは0X記載 (例 10進数:327 = 16進数:0x147)

実際の記載例

int bin = 0b101000111;  // 10進数:327
int oct = 0507;         // 10進数:327
int hex = 0x147;        // 10進数:327

表記が変わっているだけなので、 この状態でも四則演算に使用することが可能です。

System.out.println(0b101000111 + 0507 + 0x147);
// 10進数:327 + 327 + 327 = 981

使う機会はほとんどないと思うが、 10進数を2進数、8進数、16進数に変換する方法がある。

int num = 327; // 10進数
String bin = Integer.toBinaryString(num); // 2進数:101000111
String oct = Integer.toOctalString(num);  // 8進数:507
String hex = Integer.toHexString(num);    // 16進数:147

以上。

【Java】varを使用した変数宣言

Java 10から登場したvar(型推論)について簡易的にまとめる。

導入された目的 定型挿入文を減らし、コードの可読性を向上させるため。

使用例

// var型で宣言されている内容は、コメントの内容と同義である。
var num = 10;                     // int num = 10;
var str = "Hello!";               // String greeting = "Hello!";
var array = new int[3];           // int array[] = new int[3];
var object = new Object();        // Object object = new Object();
var bool = "Java".equals("Java"); // boolean bool = "Java".equals("Java");

var型とは明示的に型宣言を行わなくても、右辺の内容から型を推測して、 自動的に内容にあった型の働きをする。 そのため、varが型推論するにあったって、初期化は必ず必要になる。

下記は使用不可の例となる。

var num;               // 初期化されていないためコンパイルエラー
var str = null         // nullのため、コンパイルエラー
var array = {1, 2, 3}; // 初期化子のみの宣言は不可

以上。

【Java】複合代入演算子

代入演算子には「単純代入演算子」と「複合代入演算子」がある。 本稿では「複合代入演算子」について下記の通りまとめる。

◆複合代入演算子
種類 意味
a += b a = a + b
a -= b a = a - b
a *= b a = a * b
a /= b a = a / b
a %= b a = a % b

使用するメリット コードを短く記述することができる。 ※直観的には分かりにくいため、メリットをそこまで感じない。

実例は割愛する。 以上。