FAQ

フォーマット記述子とは何ですか

System.out.printf に渡す%sなどの表示形式を指定するための文字列です. Java言語の場合,C言語とほぼ同じですが,Javaの場合は型がより多彩ですので,どの記述子にすべきかを注意する必要があります. 記述子が対応しない型の値を対応づけると実行時エラー(IllegalFormatConversionException)が発生します. フォーマット記述子と対応する型を以下に示します.

  • %c
    • 1文字(characterの頭文字)を出力する.
    • 対応する型:Character
  • %s
    • 与えられた値の文字列表現(stringの頭文字)を出力する.
    • 対応する型:何でもOK.
  • %d
    • 整数を10進数で出力する(decimalの頭文字).
    • 対応する型:Integer型,Long型,Short
  • %o
    • 整数を8進数で出力する(octalの頭文字).
    • 対応する型:Integer型,Long型,Short
  • %x
    • 整数を16進数で出力する(hexadecimalのx).
    • 対応する型:Integer型,Long型,Short
  • %f
    • 浮動小数点変数を出力する(floating point numberの頭文字)
    • 対応する型:Float型,Double
  • %e
    • 浮動小数点変数を指数表現で出力する(exponentialの頭文字).
    • 対応する型:Float型,Double
  • %n
    • 改行を出力する.実行環境によって改行コードが異なり,その違いを吸収するため.

なぜ\nではなく,%nを利用するのでしょうか

C言語では,\nで改行を表していましたが,Javaでは明示的に \n を使うことはありません. 改行のみを出力するときは,System.out.println(); とし, 改行付きで出力するときは,printlnメソッドの引数に出力したい内容を渡します. また,System.out.printf でも,\nは使わず%n を利用する方が良いとされています.

なぜなら,改行コードはプラットフォーム(WindowsやmacOSなど)で異なるためです. Windows では,改行は\r\nの2バイトで表されており,macOSやLinuxは\nで改行を表しています. 古いmacOS(MacOS 9以前)は\rで改行を表していました.

一方で,Java は,一度書けばどこでも動く(Write Once, Run Anywhere)ことを重要視しています. そのため,環境ごとの違いをどこかで吸収する必要があります. macOSでは改行されるのに,Windowsでは改行されない,のようなプログラムがあっては困るわけです. そのため,改行コードを直に書くことは避け,改行コードを表す記号を利用する方が良いとされているわけです.

改行が必要な場合は,printlnprintf%nを渡すようにしましょう.

import 文とは何ですか

Javaの型は必ずパッケージに所属しています. パッケージとは,ディレクトリのようなもので,階層構造が存在します. パッケージには,サブパッケージと型が属します. 型が約4,000個存在するため,パッケージを導入して分類しなければ混乱するためです. 標準的には,java.langパッケージに所属する型が利用できます. しかし,java.langパッケージに所属する型以外を利用する場合は,どのパッケージの型を利用するのかを指定しなければいけません. その指定を行うのが,import文です.

Java言語の型一覧は次のURLから確認できます. https://docs.oracle.com/javase/jp/8/docs/api/

なお,java.langパッケージには,String型やInteger型,Double型, System 型などが所属しています.

可視性とは何ですか

Javaでは実は,publicprotectedprivate というキーワードをクラス,メソッド,フィールドに付けられます. このキーワードの付け方により,どこからアクセスできるのかを制御できるようになります.

可視性のデフォルトはなしprivateより弱く,protectedよりも強い制限です. この可視性を使うときは,publicは最低限にする方が良いとされています.

この授業では扱いません.

リンクリストとは何ですか

順序を持つデータ集合を実現する方法の一つ. 各要素が次の要素へのリンクを持つことで順序を持つデータ構造を実現しています.

下のようにNode型が次の要素へのリンクであるNode型のフィールドと, 要素である valueフィールドを持ちます. 最初の要素さえ持っていれば,最後まで順番に辿れるようになります.

リンクリスト

Wikipediaの連結リストも参照すると良いでしょう.

講義資料に間違いを見つけました.

講義資料に間違いを見つけた場合は,間違いの報告をお願いします. 報告は,バグレポートから行えます. 具体的な報告方法は,こちらを参照してください.

GitHub にアカウントを持っている場合,匿名で報告する場合の2通りがありますので, 上記バグレポートに記載されている説明にしたがって報告をお願いします.

バグ報告は以下からお願いします.どちらも同じところに報告されますので,どちらで報告してもらっても良いです.