
Java初心者です。
コメントアウトされた中のエスケープシーケンスの使い方について質問があります。
class sample{
public static void main(String args[]){
System.out.println("16進数 :\u0001")
// System.out.println("16真数 :\ugggg")
}
}
上記のようなソースコードがあった場合、
System.out.println("16進数 :\u0001")
については、当然Unicodeの16進数範囲内なので、
コンパイルエラーにならないのですが、
コメントアウトされている行
// System.out.println("16真数 :\ugggg")
については、
コンパイルエラーになります。
エラーメッセージは「エスケープシーケンスが不正です。」
コメントアウトされているので、この行は無視されるものだと思っていたのですが、コンパイルエラーになるのは何故でしょうか。
どうかご教授願います。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>おそらく、そのためにユニコードのエスケープシーケンスに関してのみは、コメント内であってもコードが16進数の範囲外だとエラーになってしまうのでしょう。
あっていますよ。試しに、\uggggを\u000Aに変えてみてください。
今度は「ダブルクォートが閉じていないよ」(意訳)とエラーが出ると思います。
\u000Aは改行なので、こういったことになります。
逆に、↓はコンパイルエラーになりそうですが、正常に動作します。
public class A {
public static void main(String[] args) {
System.out.print(
// "\u000A"Test");
}
}

No.2
- 回答日時:
// System.out.println("16真数 :?ugggg")
?uggggが16進数の範囲から外れているからでしょう。
JLS(Java Language Specification)によると、Javaのコンパイラは、ソースコードを読み込んでからコンパイルを完了するまでに以下のようなステップを踏む、とあったように記憶しています。
ユニコード変換→字句解析→構文解析→コード生成
ユニコードのエスケープシーケンスは、最初のユニコード変換のところで処理されます。つまり、具体的な字句や構文の解析(ここで、その行がコメントかどうかチェックされる)より前にユニコード変換は行われるようです。
おそらく、そのためにユニコードのエスケープシーケンスに関してのみは、コメント内であってもコードが16進数の範囲外だとエラーになってしまうのでしょう。
(うろ覚えなので、もし微妙に違っていたらどなたか補足を)
参考URL:http://java.sun.com/docs/books/jls/third_edition …
No.1
- 回答日時:
こんにちは。
コメントアウトされているのにエラーになるのはおかしいですね。ひとつ気になるのは;が無いということです
class sample{
public static void main(String args[]){
System.out.println("16進数 :\u0001");
// System.out.println("16真数 :\ugggg")
}
}
真ん中の行の最後に";"を追加してみました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Ruby vscode 文字化け 1 2022/05/21 19:17
- 英語 この英文の意味を教えてください 3 2023/07/07 20:36
- Java java final 1 2022/06/10 22:49
- その他(プログラミング・Web制作) pythonでDBのカラム名で取得したオブジェクトの値を表示したい 1 2022/05/13 03:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPやサーブレットでSystem.out...
-
【Java】再帰的なプログラムで...
-
java Threadのsleepを途中で止...
-
[JAVA]try 内の変数を外で!?
-
printfの%fにおいて教本どおり...
-
C言語のポインターに関する警告
-
セッションのリセット
-
java プログラミングについて
-
vb6 オブジェクトライブラリは...
-
JAVAのDouble型の小数点以下の...
-
エクセルマクロ文で、赤文字セ...
-
Javaでカレントディレクトリを...
-
JAVAのエラーの意味が分かりま...
-
InputStreamはreadが1回しかで...
-
イメージボタンを作成したいの...
-
C#で、あるクラスのメンバーす...
-
System.err. printlnとSystem.o...
-
stderrとstdout
-
javaアプレット repaintのタイ...
-
javaのパッケージについての質...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
EclipseでJava
-
[JAVA]try 内の変数を外で!?
-
JAVAのDouble型の小数点以下の...
-
文字列の引き算
-
「続行するには何かキーを押し...
-
会員情報登録プログラムの作成...
-
Javaのコマンドライン引数を使...
-
java プログラミングについて
-
Javaでカレントディレクトリを...
-
複数行キーボード入力した後に...
-
JAVA 文字色変更
-
エクセルマクロ文で、赤文字セ...
-
配列を後ろから数えるには?
-
java シンボルが見つかりません...
-
改行の判定方法
-
JAVAのエラーの意味が分かりま...
-
JAVA 三角形の判定
-
nullcline
おすすめ情報