プログラムを変更する

サンプルのプログラムを変更してみよう. まず, printlnと良く似たメソッド として, printというものがあるのでそれを使ってみる (詳しい説明は こちら を参照). Emacsを使って, 最初のprintlnをprintに変更してみよう

class Hello {
  public static void main(String[] argv){
    System.out.print("Hello World");
    System.out.println("Hello Again");
  }
}

ファイルを保存してから,

javac Hello.java
としてコンパイルしてから
java Hello
を実行してみよう. 今度は,
Hello WorldHello Again
と表示される.
次に, 表示する文字列を変えてみよう. 3行目の"Hello World", 4行目の "Hello Again"の部分を好きな文字列に変えて, コンパイル, 実行してみる. 思うように表示されただろうか?

Java言語内部では欧米語以外も扱えるように文字を表現するためには, Unicodeと いう多くの文字集合を含んだ表現方式を用いている.そのため,言語処理系内 部では日本語も問題なく扱えるが,ファイルの入出力などに関しては,注意が 必要になる.

センターのMacOS環境では環境変数LANGは

ja_JP.UTF-8
のようになっているので,プログラム中のファイルの漢字コードは本来UTF-8という Unicodeベースの漢字コードで記述する必要があるが,javac, javaコマンドを相談員 作成のラッパープログラム(wrapper program)で置き換えてあるので,他の漢字コードで ファイルを作成しても問題なくコンパイルできることが多い.


練習問題

自分のイニシャルを大きく格好良く表示するプログラムを書きなさい.ファイルは, 自分のホームディレクトリの下に java というディレクトリを作成して,その 下にMyName.java という名前で作成する(クラス名もMyNameという名前で作成する).
実行例
ca20121$ cd ~/java
ca20121$ javac MyName.java
ca20121$ java MyName

  ____  ____/ ____  ____/
       /           /
      /           /
     /           /
    /           /
   /    /      /
 _/  __/     _/

ca20121$ 
実行例では,「格好良く」するために,イタリックにして影をつけるというこ とをやったが,どのように表現しても良い.

提出の必要はないが,トレーニングのために自分でやってみること.
以下のようにバックスラッシュ「\」(フォントによっては¥に見えるかもしれない)を使って線を書こうとしてみよう.
class Hello{
  public static void main(String[] args){
    System.out.println("\  ");
    System.out.println(" \ ");
    System.out.println("  \");
  }
}
このプログラムをコンパイルしようとすると,
ktanaka@dell>javac Hello.java
Hello.java:3: エスケープ文字が不正です。
    System.out.println("\  ");
                         ^
Hello.java:4: エスケープ文字が不正です。
    System.out.println(" \ ");
                          ^
Hello.java:5: 文字列リテラルが閉じられていません。
    System.out.println("  \");
                       ^
Hello.java:5: ')' がありません。
    System.out.println("  \");
                              ^
エラー 4 個
と大量のエラーを出して止まってしまう.これは,Java言語では(C言語の流れ を組んで),バックスラッシュともう1文字 をつなげて,表示上は表わせない文字を表わすというもので,主なものとして 以下のものがある.
\n
asciiコードの0xa(man ascii とやってみるべし), Unix系のテキスとファイルでの,改行(newline)をあらわす.
\r
asciiコードの0xd, キャリッジリターンを表わす.Macintosh系のテキス トファイルではこれが改行の意味に用いられる.DOS系のテキストファイルでは \r\n で改行の意味に用いられる.
\t
タブを表わす
\\
本来のバックスラッシュを表わす
したがって,元のプログラムは,
class Hello{
  public static void main(String[] args){
    System.out.println("\\  ");
    System.out.println(" \\ ");
    System.out.println("  \\");
  }
}
のようにすればよかったということになる.


次に進む