Skip to content

Instantly share code, notes, and snippets.

@tamago324
Last active October 10, 2018 21:40
Show Gist options
  • Save tamago324/ee83f037881dfe00776db60ee7d14bae to your computer and use it in GitHub Desktop.
Save tamago324/ee83f037881dfe00776db60ee7d14bae to your computer and use it in GitHub Desktop.

1 はじめの一歩

1.1 プログラムの作成

Javaソースをコンパイルし、バイトコードを生成する。 JDKのコンパイラはjavacコマンドを使う。

C:\\JSample\01> javac sample1.java

クラスファイルが生成される(sample1.class)。これが、バイトコード。

1.2 プログラムの実行

javaコマンドを使う。

C:\\JSample\01> java sample1

javaコマンドはバイトコード(クラスファイル)を解釈して、プログラムを実行する。 また、JavaのインタプリタのことをJVMとも呼ぶ。

クラスファイルがあれば、どのOS上でも同じように動作するのがJavaの強み。

2 Javaの基本

2.1 画面への出力

class Sample1 {
    public static void main(String[] args) {
        System.out.println("ようこそJavaへ!");
        System.out.println("Javaをはじめましょう!");
    }
}

実行結果

ようこそJavaへ!
Javaをはじめましょう!

ここで3行目のようこそJavaへ!と4行目のJavaをはじめましょう!が出力する文字列で、その前に記述したSystem.out

==標準出力== (standard output)

という、「コンピュータの画面装置」のことを表している。

また、printlnは「文字列を表示する」ということを表している。 そのため、System.out.println

==文字列を画面に出力する処理をしなさい==

ということになる。

ptintlnprintがある。

  • printlnは最後に改行される。
  • printはそのまま出力される。
class Sample1 {
    public static void main(String[] args) {
        System.out.print("ようこそJavaへ!");
        System.out.print("Javaをはじめましょう!");
    }
}

実行結果

ようこそJavaへ!Javaをはじめましょう!

2.2 コードの内容

詳しくコードを見てみる

main()メソッド

// 画面に文字列を表示するプログラム
class Sample1 {
    public static void main(String[] args) {
        System.out.print("ようこそJavaへ!");
        System.out.print("Javaをはじめましょう!");
    }
}

原則として、mainと記述されている部分(main()メソッド)から処理が始まる。

public static void main(String[] args)
  • ==ブロック== {}で囲まれた部分。
  • ==main()メソッド== mainがついたブロック。

  • ==文== ;で区切られた処理。

文は原則として、上から順に実行される。

コードを書くとき、キーワードの間であれば、空白や改行をしても良い。

// 空白をたくさん入れてもいい
public   static  void    main (String[]   args){

インデント

コード中で字下げを行うことをインデントという。 インデントを行うことでコードが見やすくなる

public class Sample2 {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}

動作はするけど、見づらい...

:::info 字下げ(インデント)は大事! :::

エディタ内では==tabキー==でインデントができる。

コメント

//以降の記述はコメントとして解釈される。

// 今日の気分
System.out.println("お寿司食べたい");
// 明日の気分
System.out.println("お寿司をたくさん食べたい");

/* */を使うことで複数行のコメントもできる。

/* お寿司ばっかりだと
   飽きるから、違うものも食べたい 
   お肉とかお魚とか */

クラス

class Sample1 {
    ...
}

classがついたブロックを==クラス==(class)という。classの隣のSample1を==クラス名==という

:::info Javaのコードは1つ以上のクラスから成り立つ :::

2.3 文字と数値

リテラルとは

class Sample3 {
    public static void main(String[] args) {
        System.out.println('A');
        System.out.println("ようこそJavaへ!");
        System.out.println(123);
    }
}

リテラルとは

:::info 一定の値を表すために用いられる、Javaの単語のようなもの :::

  • 文字リテラル
  • 文字列リテラル
  • 数値のリテラル

文字リテラル

'A'
'a'
' あ '

1文字を表すには'でくくる。

エスケープシーケンス

キーボードからの入力では表せない文字がある。改行、'"など。これらは\を最初につけた2つの文字の組み合わせで「1文字」を表すことができる。これを==エスケープシーケンス==と呼ぶ。

入力値 意味
\t タブ
\n 改行
' '
" "
||
\xxx 8進数xxxの文字コードを持つ文字(xxxは0~7の数字)
\uhhhh 16進数hhhhの文字コードを持つ文字(hhhhは09の数字、AFの英字)
class Sample4 {
    public static void main(String[] args) {
        System.out.println("バックスラッシュ:\\");

        System.out.println("\t列を");
        System.out.println("\t整える");
    }
}

実行結果

バックスラッシュ:\
    列を
    整える

:::info エスケープシーケンスを使うと特殊な文字をあらわすことができる :::

文字コード

コンピュータ内では、文字も数値で扱われる。各文字に対応する数値を==文字コード==と呼ぶ。Javaでは、==Unicode==と呼ばれる文字コードが使われている。

エスケープシーケンスの「\xxx」や「\uhhhh」を出力すると、指定した文字コードに対応する文字が出力される。

class Sample5 {
    public static void main(String[] args) {
        System.out.println("8進数101の文字は\101です。");
        System.out.println("16進数0061の文字はaです。");
        System.out.println("16進数3042の文字はあです。");
    }
}

0x0061 = 97 0x3042 = 12354

文字列リテラル

複数の文字の並びを==文字列リテラル==という。 "でくくる

"Hello"
"プラス"
"12345"

数値リテラル

  • 整数リテラル(integer literal):12999など
  • 浮動小数点リテラル(floating-point literal):2.13.14など

整数リテラルの表記法

  • 8進数表記
  • 10進数表記
  • 16進数表記
10      // 10進数 10
010     // 8進数  8
0x10    // 16進数 16
0xF     // 16進数 15

いろいろな表現方法で出力してみる

public class Sample6 {
    public static void main(String[] args) {
        System.out.println("8進数の10は" + 010 + "です。");
        System.out.println("10進数の10は" + 010 + "です。");
        System.out.println("16進数の10は" + 0x10 + "です。");
    }
}

実行結果

8進数の10は8です。
10進数の10は10です。
16進数の10は16です。

キーワード

:::success 画面への出力 main()メソッド ブロック コメント クラス リテラル エスケープシーケンス :::

練習問題

==a-1.== 文字や数値などを使って、次のように画面に出力するコードを記述してください。

123
100円もらった
お寿司食べたい

==a-2.== 「タブ」記号をあらわすエスケープシーケンス(\t)を使って、次のように画面に出力するコードを記述してください。

こ    ん    に    ち    は

3 変数

3.1 変数

値を記憶しておくための箱

変数はコンピュータのメモリという装置を利用して値を記憶している。

コードの中で変数を使うには以下の2つのことを決めなければならない

  1. 変数に「名前」をつける
  2. 変数の「型」をつける

3.2 識別子

==識別子==とは、変数の名前として使える文字や数字の組み合わせのこと

識別子の規約

  • 通常、英字・数字・アンダースコア(_)・$などを使う
  • 長さの制限はない
  • キーワードは使えない。例)classreturnなど
  • 数字で始めることはできない
  • 大文字と小文字は区別される

識別子の例

num
tmp_str
print_hello
str2

3.3 型

値にはいつくか種類がある。変数にどんな値の種類(==データ型==、==型==)を格納するのかを指定する。 Javaには以下のような、基本的な型(基本型)がある。

名前 値の範囲
boolean true または false
char 2バイト文字( 〜 �)
byte 1バイト整数(-128 〜 127)
short 2バイト整数(-32768 〜 32767)
int 4バイト整数(-2147483648 〜 2147483647)
long 8バイト整数(-9223372036854775808 〜 9223372036854775807)
float 4バイト単精度浮動小数点数
double 8バイト単精度浮動小数点数

3.4 変数の宣言

:::warning 型名 識別子; :::

実際のコード

int num;
char c;
double db, dd;

:::info 変数は型と名前を指定して宣言する :::

3.5 変数の利用

値の代入

変数に特定の値を記憶させること。=を使って、記述する。

num = 3;

:::warning 変数名 = 式; :::

代入を使ったコード

class Sample7 {
    public static void main(String[] args) {
        int num;
        num = 3;
        System.out.println("変数numの値は" + num + "です。");
    }
}

実行結果

変数numの値は3です。

値の出力

num

のように変数名だけを記述すると、変数に格納されている値が取り出される。

変数の初期化

int num;
num = 3;

というように宣言と代入を分けていた。 Javaの場合、

宣言と同時に値を格納することもできる

このことを==変数を初期化する==という。

以下のように1行で記述できる。

int num = 3;

もし、初期化せずに変数の値を取り出そうとした場合、エラーになる。

class Sample8 {
    public static void main(String[] args) {
        int num;
        // numに値を設定する前に使用しているため、エラーになる
        System.out.println("変数numの値は" + num + "です。");
    }
}

Eclipseの場合

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    ローカル変数 num が初期化されていない可能性があります

値を変更

変数内の値を変更(上書き)することができる。

class Sample9 {
    public static void main(String[] args) {
        int num = 3;
        System.out.println("変数numの値は" + num + "です。");
        num = 9;
        System.out.println("変数numの値は" + num + "です。");
    }
}

実行結果

変数numの値は3です。
変数numの値は9です。

変数に値を代入することで、変数の値を変更できる。

他の変数の値を代入する

class Sample10 {
    public static void main(String[] args) {
        int num1 = 3;
        int num2;
        System.out.println("変数num1の値は" + num1 + "です。");
        num2 = num1;
        System.out.println("変数num2の値は" + num2 + "です。");
    }
}

実行結果

変数num1の値は3です変数num2の値は3です

6行目でnum2に「num1の値」を代入している

変数の宣言の注意点

ブロックの中では、同じ変数名の変数は宣言できない

class Sample11 {
    public static void main(String[] args) {
        int num1;
        // エラーになる
        int num1;
        // 型が異なっても、エラーになる
        double num1;
    }
}

3.6 キーボードからの入力

キーボードから入力する

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Sample12 {
    public static void main(String[] args) throws IOException {
        System.out.println("文字列を入力してください。");

        BufferedReader br = new BefferedReader(new InputStreamReader(System.in));

        String str = br.readLine();

        System.out.println(str + "が入力されました。");
    }
}

実行画面

文字列を入力してください。
こんにちは ⤵
こんにちはが入力されました。

数値を入力する

入力された文字は文字列であるため、数値に変換する必要がある

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Sample12 {
    public static void main(String[] args) throws IOException {
        System.out.println("文字列を入力してください。");

        BufferedReader br = new BefferedReader(new InputStreamReader(System.in));

        String str = br.readLine();

        int num = Integer.parseInt(str);

        System.out.println(num + " + 100 = " + (num + 100));
    }
}

実行画面

文字列を入力してください。
10 ⤵
10 + 100 = 110

キーワード

:::success 変数 識別子 型 変数の宣言 代入 初期化 キーボード入力 :::

練習問題

==b-1== 以下のコードを埋めて、最終結果を出力するコードを記述してください。

class Practice_b1 {
    public static void main(String[] args) {
        // int型の変数numberを定義し、2018を代入
        
        // 変数numberを使い、"今年は2018年です。"と出力する
    }
}

実行結果

今年は2018年です。

==b-2== 次のように画面に出力するコードを記述してください。

あなたは何歳ですか?
20 ⤵
あなたは20歳です。

※自分の年齢を入力

4 式と演算子

4.1 式と演算子

式の仕組み

式は==演算子==と==オペランド==を組み合わせて作られている。 1+2 の場合、+が演算子、12がオペランド。

式の評価

式の計算が、評価と同じ意味。 例)1+2が評価すると3になる。 また、評価された後の値である3を式の値と呼ぶ

いろいろな演算

class Sample14 {
	public static void main(String[] args) {
		int num1 = 2;
		int num2 = 3;
		int sum = num1 + num2;

		System.out.println("変数num1の値は" + num1 + "です。");
		System.out.println("変数num2の値は" + num2 + "です。");
		System.out.println("num1+num2の値は" + sum + "です。");

		num1 = num1+1;

		System.out.println("変数num1の値に1を足すと" + num1 + "です。");
	}
}

実行結果

変数num1の値は2です。
変数num2の値は3です。
num1+num2の値は5です。
変数num1の値に1を足すと3です。

5行目のように、変数もオペランドとして使うこともできる。

11行目の処理は「変数num1の値に1を足し、その値を再度num1に代入する」という意味

キーボードに入力した値を足し算する

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment