質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

1777閲覧

javaの構文について 初心者

hkrkgyk7

総合スコア26

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/03/19 10:22

java開発初心者です。
独学で勉強しております。

下記のソースコードについて、質問させてください。

public class Test { String name; //指定のコードを追加 public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Test b = new Test(); if(b.name == "") b.name = "abc"; System.out.println(b.name); } }

「//指定のソースコードを追加」の部分に
”System.out.println(name);”
を入れたいのですが、エラーとなってしまいます。
構文の誤りがあるのだと思いますが、理由が分かりません。
この理由について、教えていただけますと幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xenbeat

2017/03/19 11:59

逆にそこに入れたい理由がわかりません。
guest

回答4

0

ベストアンサー

その位置はクラス内であってメソッド内ではありません
そこでは変数の宣言、確保等以外はメソッド、static{}、{}などの記述しかできません
直接そのクラス内メソッド外の部分にSystem.out.println(name);などの記述を書いてもエラーになるだけです

public static void main(String[] args) {}内に記述するか、

どうしてもその位置に入れたければ、

public static void prn(){
System.out.println(name);
}
のように、メソッド内に入れてメソッドごと記述して下さい。

投稿2017/03/19 10:30

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

フィールドとメソッドの違いについての理解をしたほうがよいかと。

はじめのうちはクラスは、フィールドとメソッドでできている思えばわかりやすいかと。

”System.out.println(name);” は、メソッドの呼び出しであり、メソッドの定義としては間違っています。ですので、コンパイルエラーが当然でます。

##クラス
- フィールド int a=1;など
- メソッド int methodA(int a){return a}など


public static void main(String[] args) {}の箇所もメインメソッドとして取らえましょう。
メインメソッドは特別なメソッドであり、この中に記載があるものだけが
実行時に処理が行われます。

※メインクラス内で読み出しを行っていなければ当然よびだされません。

追記

System.out.printlnこれは、SystemクラスのフィールドのoutというPrintStream型のstatic 変数を指定していて、 その PrintStreamクラスのprintlnというメソッドを読み出しています。 http://docs.oracle.com/javase/jp/6/api/java/lang/System.html#out

投稿2017/03/24 14:37

編集2017/03/24 14:39
post123456

総合スコア73

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

インスタンス化のタイミングで呼びたいのであれば、コンストラクタを実装しましょう。

ここから先勝手な憶測になってしまうのですが、質問者様はnameの初期値を調べたいのでしょうか。
そうであれば、nameはString型、つまり参照型のフィールドなので初期値はnullです。しかし、nullを持たせる必要がありませんので、
String name;

String name = "";
と変えて、自身で初期化すると良いでしょう。
余談になりますが、参照型を==で判定するのはあまりオススメしません。equalsメソッドを利用しましょう。もしくは、Objects.equalsメソッドでも良いと思います。

投稿2017/03/24 15:27

ponkotate

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

nameを出力せよという命令の類は、すべてメソッド内に記述しなければなりません。
記述しようとしている箇所は、mainメソッドの1行上のあたりだと思いますが、ここはクラスフィールドの宣言などに使います。

記述するのであれば、mainメソッド内です。
そうすれば動きます。

投稿2017/03/19 10:27

Iya712

総合スコア158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問