![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.4ベストアンサー
- 回答日時:
質問内容に関してはほぼ解決してるかと思いますが、#3のhidebu-さんの回答にちょっとツッコミを。
自動的に初期化されるのは、基本型、オブジェクト型によらず、インスタンス変数とクラス変数です。ローカル変数は初期値を持ちません。
例えば、以下のテストプログラムを実行すると、localObj, localIntを使う行でのみコンパイルエラーが出るはずです。
(「変数~は初期化されていない可能性があります」という内容)
public class Test {
Object instanceObj; // nullで初期化
int instanceInt; // 0で初期化
static Object staticObj; // nullで初期化
static int staticInt; // 0で初期化
public void init() {
Object localObj; // 不定
int localInt; // 不定
System.out.println(instanceObj);
System.out.println(instanceInt);
System.out.println(staticObj);
System.out.println(staticInt);
System.out.println(localObj); // コンパイルエラー
System.out.println(localInt); // コンパイルエラー
}
}
また、オブジェクト型のローカル変数を何も考えずnullで初期化するという方法はあまりおすすめできません。
コンパイルエラーは「この変数、何も値が入ってないかもしれないんで使っちゃまずいよ」という意味でメッセージを出しているのに、このチェックを効かなくしてしまうからです。
No.3
- 回答日時:
JAVAの言語仕様で宣言された変数の有効範囲は、宣言をしたブロック内となっています。
ですから
try節の中で宣言された変数はtry節を抜けると無効となってしまいます。
if文やFor文も同じです。
ですからメソッド内全ての個所で参照したい変数であれば、メソッドの先頭にまとめて宣言、初期化しておくとメソッド内のどこからでももんだいなく参照できます。
#2がいわれるオブジェクト型変数がなぜ明示的に初期化が必要かというとint型やchar型などの基本型変数は宣言とともに自動的に初期化されるのですが(int型には0、char型には\u0000が入る)、オブジェクト型変数は参照型変数に分類され、初期化したからといってNULLポインタがはいるわけではないのです。
ですからオブジェクト型変数を宣言するときは
java.lang.String strValue = null;
とか
java.sql.Connection con = null;
のようにメソッドの先頭で宣言すると同時に
Nullポインタを代入しておき、
実際にインスタンスを作成したい個所で
strValue = new String("テスト");
や
con = java.sql.DriverManager.getConnection("****");
のようにインスタンスを作成すれば余計なバグになやまされることもなくなるとおもいます。
がんばってください。
No.2
- 回答日時:
オブジェクトは宣言だけでなく代入もtryブロックの外で行う必要があったような気がします。
String str = "";
try{
str = ...
...
catch(Exception e){
...
}
out.println(str);
No.1
- 回答日時:
ブロックの中で宣言した変数はその中でしか使えないようです。
>反対に、どうすれば解決できますか?
int rsCount;
try{
rsCount = ...
...
}catch(Exception e){
...
}
out.println(rsCount);
と言う風にすれば使える様になると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Javaのソースコード作成が難しいです... 10 2022/11/11 14:06
- Java すみません。助けてください。 javaについての質問です。 integerに変換できない数値をエラー 5 2022/05/18 19:16
- オープンソース Try Kotlinで readLine()を使うには 1 2023/03/27 21:06
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- 英語 "Try not"と"Don't try"の違い等について 9 2022/12/14 11:45
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- GYAO! チャットGPTエラーメッセージ 1 2023/01/28 04:46
- 英語 figureの意味 3 2023/06/12 05:01
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
-
【C#/Java?】try-catchでcatchせずにfinallyは一般的?
その他(プログラミング・Web制作)
-
IOException ってどういうときに起こるのでしょうか?
Java
-
-
4
使用しているJUnitのバージョン確認の方法
Java
-
5
リクエストに応じたselectedの初期値設定方法
Java
-
6
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
7
eclipseのデバッグ中に変数の値(長い文字列)を確認したい
Java
-
8
System.err. printlnとSystem.out.printlnはどう違うんでしょうか?
Java
-
9
データ数をカウントしたいのですが
Java
-
10
変数名の付け方
Java
-
11
JSPやサーブレットでSystem.out.println()などでコンソールに出力できますでしょうか?
Java
-
12
抽象クラスをJUNITでテストする方法
Java
-
13
変数の前のビックリマークについて!
PHP
-
14
jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?
Java
-
15
変数を動的に利用するには?
Java
-
16
Javaで年月の取得(YYYYMM形式で)
Java
-
17
java eclipse 型に解決できません
Java
-
18
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
19
count(*)で取得した値をJAVAの変数に代入するには?
Java
-
20
スクリプトのエラー「unexpected EOF while looking for matching `'」の解決法は?"
UNIX・Linux
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPやサーブレットでSystem.out...
-
C言語のポインターに関する警告
-
Webアプリケーション checkbox...
-
構文解析中にファイルの終わり...
-
JAVA 文字色変更
-
EclipseでJava
-
パソコンキーボードで時分秒を...
-
Javaで改行などが出来ないのです。
-
論理演算子”||”またはの入力方法
-
べき乗
-
<s:iterator>の値をリストで取...
-
格闘ゲームのコマンド判定について
-
テキストボックスに入力された...
-
Ctrl+Zが入力されると終了する...
-
どんな時にIteratorを使うと便...
-
ボタンのイベントで異なるウィ...
-
改行コードの置換が…
-
ArrayListからBean配列に値をセ...
-
java 乱数を並べて重複させない...
-
java キーボード入力された値の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
[JAVA]try 内の変数を外で!?
-
JAVAのDouble型の小数点以下の...
-
「続行するには何かキーを押し...
-
EclipseでJava
-
文字列の引き算
-
JAVAのエラーの意味が分かりま...
-
配列を後ろから数えるには?
-
JAVAで素数判定
-
nullcline
-
曜日の取得方法を教えて下さい!
-
エクセルマクロ文で、赤文字セ...
-
JAVA 文字色変更
-
会員情報登録プログラムの作成...
-
Javaのコマンドライン引数を使...
-
Javaでカレントディレクトリを...
-
LC発振回路-ループ利得
-
java シンボルが見つかりません...
-
改行の判定方法
おすすめ情報