Top > Java > 基本文法


プログラムの構成

Java/開発環境で作成したSample.javaの内容を元に、 Javaプログラムの構成を見ていきましょう。


main()メソッド

最初に、

public static void main(String args[])

と書かれている行を見てください。Javaのプログラムは、原則としてこの main() と記述されている部分から 処理が行われます。直ぐ下の中括弧"{"から、同じインデントの中括弧"}"までが、Javaでは特別にmain()メソッドと呼ばれています。 今回の例は、最初に実行される命令が[System.out.println("ようこそJavaへ!");]です。 もし、この下にも命令行が記述されていれば、特殊な命令を使用しない限り、原則として上の行から1文ずつ順に実行されていきます。

main()メソッド
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
 
-
|
|
|
!
public static void main(String args[])
{
   System.out.println("最初に実行される行です");
   System.out.println("2番目に実行される行です");
   ・・・・
}


ブロック

中括弧"{}"で囲われている部分をブロックと言います。 先の例では、class Sample{}と、public static void main(String args[]){}という2つのブロックが存在していることになります。


クラス

Javaのコードは、classという言葉が先頭についたブロックから成り立っています。 class の次に書かれている言葉(例では"Sample")を、クラス名と言います。 Javaのプログラムには、クラスが最低1つ以上無ければなりません。例えば、Sample.javaには、[Sample]というクラスが1つあります。 クラスの名前は、自由につけることができます。


見やすいコードの書き方

改行とインデント

まず、下記の2つの例を見てください。

例1
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
 
-
|
-
|
|
!
!
class Sample
{
    public static void main(String args[])
    {
        /* 画面出力 */
        System.out.println("ようこそJavaへ!");
    }
}
例2
すべてを展開すべてを収束
  1
  2
  3
-
-
!
class Sample{
public static void main(String args[]){
System.out.println("ようこそJavaへ!");} }

どちらのプログラムもコンパイルできますし、実行することができます。また、実行結果も同じです。 例1の方が、見やすく感じられると思います。見やすいプログラムのコツは、

  • ブロック部分が分かりやすいように改行する
  • ブロック内部の行頭を字下げする
  • 適切な量のコメント

などがあげられます。Javaでは、文の途中やブロックの中で改行してもよいとなっているため、 ブロック部分が分かりやすくなるように、"{"の部分で改行し、内部の行頭を少し下げています。 なお、出力する文字列"ようこそJavaへ!"の中で改行することはできません。 コードの中で字下げを行うことをインデントと言います。複雑なコードを書く際や、 プログラム作成期間が長い場合は、特に読みやすいコードを書くことを心がけましょう。


コメント

プログラムの処理とは直接関係のない自分の言葉を、プログラム上に記述することができます。 これを、コメントと言います。通常、分岐処理や、複雑な条件式の上などに使用します。 コメントの書き方は、

コメント
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 
-
|
|
|
|
|
|
!
public static void main(String args[])
{
   // 1行分無視されます
   System.out.println("Welcome!!");
   /* 複数行のコメント
      です。 */
   System.out.println("ようこそJavaへ!");
   ・・・・
}

単一行をコメントとする"//"と、複数行をコメントとする"/* ・・・*/"と、2種類あります。


クラスや変数の命名

クラスや変数については、後にじっくりと解説しますが、これらの命名について説明します。 クラスや変数の名前は、その名前を見れば何を意味しているのか、何をするクラスなのかがある程度 理解できる方が望ましいです。 例えば、a, b, c, dといった変数を使用していれば、後で見直したときなど理解に苦しむと思います。 合計を計算するのであれば、calc_sum()という命名などが例になります。"calc" はCalculate:計算する の略で、"sum" は足し算を意味します。
このように、長すぎても読みにくいですし、短すぎても読み取れません。 個人で作成するプログラムでは問題ありませんが、後で読み直すという事を考えれば、なかなか無視できない 事でもあります。


標準入出力

用途

標準入出力とは、通常画面の入出力を意味します。ここでは、画面への出力の用途について、説明しておきます。 "画面へ文字を出力する"といった処理は、

  • メニューや処理の結果を出力する
  • 予想通りの結果が得られなかった時、処理途中で変数の値等をを出力する

といった用途があります。特に2つ目は、プログラム作成途中で最も活躍する用途です。 通常、プログラムが複雑になればなるほど、バグが多く含まれます。その解析(デバッグ)の 手法としても使用することができます。


printlnを使う

"println"を使用して、画面に文字を出力することができます。 正確には、"System.out.println(Strings)"と記述します。Stringsを文字列と言い、この部分が 画面に出力されます。文字列については、後にじっくり解説します。最初に記述されている"System.out"とは、標準出力と呼ばれ、コンピュータの装置と結びつけられている言葉です。


printを使う

"println"と同様に、画面に出力する処理ですが、違いがあります。 "println"では、1つの処理毎に改行されますが、"print"では続けて処理されることになっています。

例3
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 
-
|
-
|
|
|
!
!
class Sample3
{
    public static void main(String args[])
    {
        /* 画面出力 */
        System.out.println("ようこそJavaへ!");
        System.out.println("あかさたな!");
    }
}
例4
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 
-
|
-
|
|
|
!
!
class Sample4
{
    public static void main(String args[])
    {
        /* 画面出力 */
        System.out.print("ようこそJavaへ!");
        System.out.print("あかさたな!");
    }
}
例3の実行結果
ようこそJavaへ!
あかさたな!
例4の実行結果
ようこそJavaへ!あかさたな!


リテラル

文字と数値

まず、下記のコードと実行結果を見てください。

例5
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 
-
|
-
|
|
|
!
!
class Sample5
{
    public static void main(String args[])
    {
        System.out.println('A');           /* 文字を出力   */
        System.out.println("あかさたな!");  /* 文字列を出力 */
        System.out.println(123456);        /* 数字を出力   */
    }
}
例5の実行結果
A
あかさたな!
123456

例5では、様々な文字や数値が出力されています。このコードの中のA"あかさたな!"123 といった特定の文字や数値の表記を、Javaではリテラルと呼んでいます。 リテラルには、次のようなものがあります。

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

文字リテラルは、例にあるように1つの文字を' 'でくくって表します。 文字列リテラルは、複数の文字を" "でくくって表します。


n進数の表記

n進数とは、基数をnとした数値の表現方法です。桁が1つ移動する毎に、値の重みがn倍になります。 例えば、私たちが日頃用いている10進数は0~9までの数字で数を表し、10になると次の桁が1増えます。 一方、コンピュータの世界では、2進数や16進数が最もよく使われます。ここでは、10進数、8進数、16進数の Javaでの表記の仕方を説明します。例えば、10を各進数で表記するには、

  • 10進数: 10
  • 8進数 : 010
  • 16進数: 0x10

と書きます。10進数はそのまま表記し、8進数の場合には先頭に「0」、16進数の場合には「0x」をつけます。 下記のプログラムを実行して、実行結果を見てみましょう。

例6
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
  9
 
-
|
-
|
|
|
!
!
class Sample6
{
    public static void main(String args[])
    {
        System.out.println("10進数の10は" + 10 + "です");
        System.out.println("8進数の10は" + 010 + "です");
        System.out.println("16進数の10は" + 0x10 + "です");
    }
}
例6の実行結果
10進数の10は10です
8進数の10は8です
16進数の10は16です

10進数、8進数、16進数で表記した「10」を出力しました。数値はダブルクォーテーション("")の中には 含みません。中に入れてしまうと、文字列として扱われてしまうからです。数値と文字列を組み合わせて出力するには 、[+]という記号を使用します。色々な表記方を使っても、画面には10進数で出力されます。


特殊文字

エスケープシーケンス

文字の中には、キーボードから入力できない特殊な文字が存在します。このような文字については、\を最初につけた2つの文字の組み合わせで 1文字分を表すことができます。これをエスケープシーケンスと言います。エスケープシーケンスには、以下のようなものがあります。

エスケープシーケンス意味
\bバックスペース
\t水平タブ
\n改行
\f改ページ
\r復帰
\'シングルクォーテーション '
\"ダブルクォーテーション "
\\\ マーク

なお、環境によっては、\がバックスラッシュ[\]として表記される場合もあるので注意が必要です。


文字コード

実はコンピュータの内部では、文字も数値として扱われています。このような各文字のかたちに対応する数値を、文字コード と言います。Javaでは、Unicode(ユニコード)と呼ばれる文字コードが使用されています。 エスケープシーケンスである「\ooo」や「\uhhhh」を出力すると、指定した文字コードに対応する文字が出力されます。 下記のコードを実行してみてください。

例7
すべてを展開すべてを収束
  1
  2
  3
  4
  5
  6
  7
  8
 
-
|
-
|
|
!
!
class Sample7
{
    public static void main(String args[])
    {
        System.out.println("8進数の101の文字は \101 です");
        System.out.println("16進数の0061の文字は \u0061 です");
    }
}
例7の実行結果
8進数の101の文字は A です
16進数の0061の文字は a です

このように、文字コードを指定して画面に出力することもできます。


リロード   凍結解除 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 13 May 2011 00:14:37 JST (2743d)