今晩は、java初心者です、宜しくお願いします。
Integerクラスについて下のように「i1 = new Integer("1");」と書いても「i2 = new Integer(1);」
と書いても、どちらも数字として認識されているようです。
正式な書き方としてはどちらなんでしょうか、宜しくお願いします。
=========================================================================
public class Test1
{
public static void main(String[] args)
{
Integer i1 = new Integer("1");
System.out.println((i1+2));
Integer i2 = new Integer(1);
System.out.println((i2+3));
}
}
No.1
- 回答日時:
> 正式な書き方としてはどちらなんでしょうか、宜しくお願いします。
……えーと、あなたが言う「正式」とはどういう意味でしょうか。
Integer には int を引数とするコンストラクタと String を引数とするコンストラクタの両方が定義されています。両方が定義されている以上、どちらを使っても構わないのです。
どちらをよく使うかという意味で聞いているのであれば、それはプログラムの処理内容で違ってきます(たとえば CSV ファイルから数値を読み込む場合は String からのほうが便利ですし、計算結果をコレクションに格納するときには int からのほうが使われています)。
しいて言うならば、両方の書き方が可能であると定義されているので、両方とも正式な書き方と私は考えます。
No.2ベストアンサー
- 回答日時:
質問の答えとしては、どちらも正式という事になります。
というか、コンストラクタを含め公開されているメソッドに正式/非正式の区別は特にありません。非推奨の場合はありますが。
ただし、Integer オブジェクトの取得については Integer.valueOf(int) や Integer.valueOf(String) を使った方が実行速度やメモリの利用効率が良くなる場合がありますので、新しいインスタンスを作る必要が特に無ければ、それらを使った方が良いでしょう。
http://docs.oracle.com/javase/jp/6/api/java/lang …
Integer i1 = Integer.valueOf("1");
Integer i2 = Integer.valueOf(1);
なお、引数が int のものと String のもののどちら使うかに関しては、基本的には必要に応じて使い分ければ良いのですが、引数がリテラル(「1」「"2"」などの値そのもの)の場合はなるべく int の方を使ったほうが良いでしょう。
String が引数の場合は符号や数字以外の文字が含まれていてもコンパイルエラーにならないので、パッと見て分かりづらい下記の様なバグを作りこむ可能性がありますので。
Integer.valueOf("l0"); // 実はエルとオーなので実行時エラーになる
No.3
- 回答日時:
Integerクラスのリファレンスマニュアルはこちら。
http://docs.oracle.com/javase/jp/6/api/java/lang …
このコンストラクタには,引数としてint値もString値もどちらも渡せますから,どちらも正式な書き方です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java final 1 2022/06/10 22:49
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:07
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:13
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Excel(エクセル) バイナリー演算を勉強したい 1 2023/04/19 14:17
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Visual Basic(VBA) VBA 配列を使ったコードに直していただけますか 4 2023/05/06 15:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス間でのデータ参照
-
関数内の変数に<summary>コメン...
-
範囲外の数値を代入したらエラ...
-
c++,ある関数のクラスから別の...
-
親クラスから子クラスへアクセス。
-
Javaコンストラクタthisとsuper...
-
無名パッケージからのインポート
-
内部クラスのスコープについて。
-
JTableのイベント取得方法
-
dllエクスポート時のdeclspec(d...
-
アップキャスト、ダウンキャス...
-
C#にて別クラスの関数を使いたい
-
a href="..." とServlet
-
dynamic_castの必要性
-
C# インターフェイスの実装
-
Strategyパターンを用いた実装...
-
違うクラスからの変数の共有化
-
C++/C#間での構造体の引き渡し...
-
プログラムの変数名にするとど...
-
private変数を設定(Java)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
クラス間でのデータ参照
-
c++,ある関数のクラスから別の...
-
範囲外の数値を代入したらエラ...
-
C#にて別クラスの関数を使いたい
-
C#でほかのファイルにある自作...
-
C++でfriendクラスにしているの...
-
java-別クラスの変数の使い方を...
-
親クラスから子クラスへアクセス。
-
構造 他のクラスの構造体を別...
-
ひとつのファイルにクラスは1つ?
-
Java
-
import と extends について
-
継承したクラス側のクラス名の取得
-
SwingでgetContentPaneのエラー...
-
Java リフレクションについて
-
C#のクラスライブラリでメッセ...
-
アップキャスト、ダウンキャス...
-
C# インターフェイスの実装
-
visual studioのデザイナ画面で...
おすすめ情報