
A 回答 (12件中1~10件)
- 最新から表示
- 回答順に表示

No.12
- 回答日時:
APIドキュメントを読めば、どのようなコンストラクタがあるのかはすぐ分かります。
Java5.0の場合:http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
です。APIドキュメントは、困ったときはまず最初に参照するよう習慣付けてください。
「コンストラクタの概要」にある7つのコンストラクタのうち、あなたが欲しいPrintStreamオブジェクトを作るのにふさわしい、と思われるコンストラクタを使えばよいのです。
たぶん質問者さんが一番とっつき易いのではないかと思われる、6つ目の
public PrintStream(String fileName)
を使った簡単なコードを例示しましょう。APIドキュメントにはこう書いてあります:
////////////////
パラメータ:
fileName - この出力ストリームの宛先として使用するファイルの名前。ファイルが存在する場合、サイズ 0 に切り捨てられる。ファイルがなければ新しいファイルが作成される。出力はファイルに書き込まれ、バッファに格納される
////////////////
ので、"D:\test.txt"というファイル名を渡してみましょう。
(念のため、最低限のことしか書いていないのでこんなコーディングはしないように)
----
import java.io.PrintStream;
public class PrintTest{
public static void main(String[] args) throws Exception{
PrintStream ps = new PrintStream("D:/test.txt");
ps.print("PrintStream test");
}
}
----
うまく実行できればD:\test.txt"というファイルが出来て、そこにPrintStream test"と出力されるはずです。
ここまでは理解できましたか?
でもSystem.outはあくまでSystem.outです。くどいようですが、「new PrintStream()とすべきだ」のように変な方向に進まないようにお願いします。

No.11
- 回答日時:
>これはコンパイルエラーになります。
>どうしてなのでしょうか?
1.java.io.PrintStreamをimportしていない。
2.java.io.PrintStreamにデフォルトコンストラクタはない
からです。
もしも上記二つの説明が理解できないのならば、これ以上new PrintStream()にこだわるのはやめましょう。今の状態では深みにはまるだけです。
当分の間、入門書を片手にサンプルプログラムを打ち込むことで言語の基礎を身につけることです。その間、"System.out.print()"はただの呪文だと思って疑問を持たないように。言語の基礎がもう少し身についてから考えれば別に難しいことではありません。
逆に、言語の基礎を身につけるためのサンプルプログラムを動かしてみるには"System.out.print()"が必須なので、最初にこれに疑問をもたれてしまうと一歩も前へ進めません。
ありがとうございます。見えてきました。
1はわかります。
2も少しわかります。ようは
PrintStream a = new PrintStream(●●●);
a.println("helloworld");
●●●の部分に引数を入れればいいんですよね?
そうすれば動くはずです。
その引数は何を入れたらよいのでしょうか?
あと少しで山を越えれそうです。
よろしくお願いいたします。

No.10
- 回答日時:
>普通は
>A a = new A();
>とやって
>「a.メソッド」つまり
>「参照型変数.メソッド()」とやるはずです。
>どう考えても
>PrintStream a = new PrintStream();
>a.print(~~)
>の形になるはずなのですが。。。
誰に教わったかしりませんが、その思い込みを今すぐやめましょう。
どこかにそうしなければならないとでも書いてあったんですか?
Systemクラスのoutフィールドをなぜあなたがnewしなくてよいのかは、
>「参照型変数.メソッド()」とやるはずです。
>「フィールド.メソッド」の意味がよくわかりません。
という疑問とはちょっと違う問題ですので、一度忘れましょうか。
以下のコードを読んでみてください。
grandpa.child.child.getName()
という書き方が理解できれば一歩前進です。
---------
public class test{
public static void main(String[] args){
Human grandpa = new Human("おじいちゃん");
Human dad = new Human("パパ");
Human me = new Human("僕");
grandpa.child = dad;
dad.child = me;
//この表現は理解できますか?
System.out.println(grandpa.child.child.getName());
}
}
class Human{
private String name;
public Human child;
public Human(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
---------
>クラスフィールドは鵜飼のゲットした魚数です。
>インスタンスフィールドは個々の鵜がゲットした魚数です。
全然違うと思います。
ありがとうございます。しかし理解ができません。
class A
{
public static void main(String args[])
{
PrintStream a = new PrintStream();
a.println("helloworld");
}
}
これはコンパイルエラーになります。
どうしてなのでしょうか?
このレベルがわかってないのでせっかく書いていただいた例文も
歯が立ちません。

No.9
- 回答日時:
>PrintStream out = new PrintStream();
>という文章が必要だと思うのですが。。。
>それはどこにあるのでしょうか?
java.lang.Systemクラスの初期化処理の中です。
残念ながらoutへ代入されているところはnativeメソッドのようで中身が分かりませんでしたが、少なくとも、
new PrintStream(...
という箇所はありましたよ。
あと、
>フィールドとはそのクラス内におけるグローバル変数のようなものです。
こちらからも、やはりクラスフィールドとインスタンスフィールドの違いが理解できているのかに疑問が沸きます。
private int a
private static int a
の違いは?
この回答への補足
PrintStreamクラスにprintメソッドがあるのであれば、
どう考えても
PrintStream a = new PrintStream();
a.print(~~)
の形になるはずなのですが。。。
Systemクラスは関係ないはずです。
>やはりクラスフィールドとインスタンスフィールドの違いが理解できているのか
例えるなら
クラスフィールドは鵜飼のゲットした魚数です。
インスタンスフィールドは個々の鵜がゲットした魚数です。
ざっくり言うとそういうことです。

No.7
- 回答日時:
java.lang.Systemのドキュメントを見てください
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
Systemクラスにはクラスフィールドoutがあります。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/ja …
ここに、『public static final PrintStream out』
とあることから分かるように、outはPrintStreamクラスのインスタンスです。
>PrintStream a = System.out;
>という形は始めて見たのですが、
>まず右辺と左辺のクラス名が違うことと
違いません。
aも、System.outもPrinsStreamです。
>右辺にカッコ()がないことです。
>あとnewはいらないんでしょうか?
必要ありません。System.outはPrintStreamのインスタンスです。
>System a = new System();
>a.println(~~);
>とやることも可能なのでしょうか?
できませんし、する必要もありません。
インスタンス化することができないことは上のページにもこう書いてあります:
『System クラスには有用なクラスフィールドおよびメソッドがあります。インスタンス化することはできません。 』
し、もっと具体的に言えば、Systemクラスのコンストラクタはprivateですので、貴方のプログラムからインスタンス化することはできないようになっています。
クラスフィールド、クラスメソッド、static等をキーワードにもう少し調べてみてはいかがでしょうか。
>outはPrintStreamクラスのインスタンスです。
ということは
PrintStream out = new PrintStream();
という文章が必要だと思うのですが。。。
それはどこにあるのでしょうか?
No.6
- 回答日時:
オブジェクト指向の概念を再度確認してみてはいかがでしょうか。
・クラスとは何かインスタンスとは何か
・それぞれのフィールド、メソッド特徴
・Javaにおけるそれらの記述方法
これらを調べてみると System.out.print の意味を解っていただけるかも知れません。
「;」は実装をしていないことを明示するために書きました。
「0」は数字の零で整数であればなんでもかまいませんでした。
>・クラスとは何かインスタンスとは何か
クラスとはたい焼きの鉄のやつです。
インスタンスとは食べれるたい焼きそのものです。
newするとメモリ上に実体が生成されます。
>それぞれのフィールド、メソッド特徴
フィールドとはそのクラス内におけるグローバル変数のようなものです。
メソッド内で変数を宣言するとそれはローカル変数です。
一番範囲の広いグローバル変数はpublic staticをつけます。
このぐらいの理解度からSystem.out.printを理解するには何が欠けているのでしょうか?
No.5
- 回答日時:
> System a = new System();
> a.println(~~);
> とやることも可能なのでしょうか?
惜しいですね。
> Systemのフィールド変数outは、PrintStreamクラスのインスタンス
ですので、
System.out.println("hello");
は
PrintStream a = System.out;
a.println("hello");
と書き換えることができます。
ありがとうございます。
PrintStream a = System.out;
という形は始めて見たのですが、
まず右辺と左辺のクラス名が違うことと
右辺にカッコ()がないことです。
あとnewはいらないんでしょうか?
PrintStreamクラスとSystemクラスが相互にからみあってる印象があるのですが、理解のコツのようなものはありますでしょうか?
No.4
- 回答日時:
[追記]
.は、メンバアクセス演算子ともいい、結合規則として左からというのが決まっているのです。したがって
System.out.print(1)
は
(System.out).println(1)
ということになります。
実際に試してみてください。
No.3
- 回答日時:
>>> System a = new System();a.println(~~);とやることも可能なのでしょうか?
ダメです。
println(~~)
は、System.outオブジェクトのメソッドです。
System.outでひとかたまりと考えてください。
outだけでもなく、Systemだけのメソッドでもありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- 英語 home where you've rented one out for a week? 4 2022/08/06 09:13
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- 英語 文の構造をご教示ください 2 2023/01/01 18:03
- 英語 この英文の意味を教えてください 3 2023/07/07 20:36
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java final 1 2022/06/10 22:49
- Perl perlについての質問 2 2022/10/17 15:25
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String.containsの反対機能はあ...
-
abstract と static を一緒に付...
-
親の親のメソッドを呼ぶには?
-
レコード件数の表示
-
C言語での文字列より値を抜き出す
-
return new使用時
-
説明文書でのメソッド・変数の...
-
C# 点の描き方をおしえてくだ...
-
クラスを作るとメソッドの数が...
-
メソッドの引数に指定されてい...
-
Java初級 引数に適用できません
-
YYYYMMDD書式の日付に対する適...
-
サーブレットから他サーブレッ...
-
C# でメソッドに送られてきたOb...
-
mainクラス内に書いたメソッド...
-
Google Apps Script で getRang...
-
c# IPAdressは型でし...
-
リストボックスの並べ替え (VB...
-
java ジェネリックスに関して
-
CSVから読み込んだデータの保持...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
String.containsの反対機能はあ...
-
abstract と static を一緒に付...
-
StringBufferからStringへキャ...
-
レコード件数の表示
-
Java初級 引数に適用できません
-
C言語での文字列より値を抜き出す
-
YYYYMMDD書式の日付に対する適...
-
C# 点の描き方をおしえてくだ...
-
なぜprotected overrideなのか
-
別クラスのmainメソッドの実行
-
Google Apps Script で getRang...
-
クラスを作るとメソッドの数が...
-
Strutsでチェックボックスの値...
-
Java初心者です、エラーの意味...
-
Javaの関数名が長い?
-
親の親のメソッドを呼ぶには?
-
C# 他のnamespaceにあるメソッ...
-
Javaのメモリの管理
-
シェルスクリプトからのJavaメ...
-
メソッド宣言の戻り値の型にク...
おすすめ情報