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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

3回答

2035閲覧

略されたjava文法について詳細を知りたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2016/03/16 07:08

初めまして。よろしくお願いいたします。
java Androidアプリ開発でAndroid Studio1.5を使っています。
onclickをxmlに書き込み、MainActivityにその命令内容を書き加える箇所なのですが、思うように動いていることは確認できたのですが、その文法的な意味合いについて質問させてください。

public class MainActivity extends AppCompatActivity {
public void b0(View v){
((ImageView)findViewById(R.id.back)).setImageResource(R.drawable.b0);

}

上記のcodeは『ImageViewの中のbackというIDの背景をdrawableに入っているb0というIDの背景に変えなさい』

ということだと認識していますが、細かく解釈したいです。
①なぜView vというようにかっこの中に型と引数が入っているのか。()の中には引数が入ると学んでいました。これはcodeを二分して記載することも可能なのでしょうか。そうだとしたらどのようなcodeになるのでしょうか。

②(ImageView)というのはキャストを行っているのでしょうか。なぜここに()が来るのかわかりませんでした。一口にこういったものだと覚えてしまうのが早いかと思うのですが、こういった文法的な細かい意味も知っておきたいです。

③あとA.B();のようなBメソッドの前にドットで繋がれた文法があるのですが、これは文法的に2文に分けれるようなものなのでしょうか。つまり、何か省略された記載方法なのでしょうか。例えば、
int teisuu;
teisuu = 1;

int teisuu = 1;
のように文法的には実は分かれて書かれていたものを省略して書いているものなのかなと思っております。

以上3点よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

その1:メソッドを定義する際には、型と変数名が必要となります(そう書くしかありません)。メソッドを呼び出す際には型は不要です。

その2:findViewByIdは、画面にある任意のオブジェクトに使えるので、返り値は親クラスのViewになっています。Viewにない、ImageView特有の機能を使うためにはキャストが必要です。

その3:Javaでは、クラスメソッド以外のメソッドはオブジェクトに対して呼び出すもので、ドットの前がそのオブジェクトです。よほど特殊なことをしたいのでないかぎり、これ以外の書き方をすることはありません。

その1やその3は基本的な文法に属することですので、Javaの入門書を用意することをおすすめします。

投稿2016/03/16 07:26

編集2016/03/16 07:28
maisumakun

総合スコア145184

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

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

退会済みユーザー

退会済みユーザー

2016/03/16 08:14

ありがとうございました。
guest

0


メソッドを定義するときは、下記のように記述する必要があります。Javaの基本的な構文です。

Java

1[戻り値の型] メソッド名([引数の型] [引数名]) { 2 // 処理 3} 4


IDを振るViewは、ImageView以外にも色々なView(ボタンなど)があります。
Android DeveloperのfindViewById(int id)というメソッドについて調べると、戻り値の型がViewということが分かります。

http://developer.android.com/reference/android/view/View.html#findViewById(int)

java

1public final View findViewById (int id)

戻り値の型がViewですから、ImageView(Viewが親クラス)として扱いたい場合は、明示的にキャストが必要です。



どちらもJavaの基本的な文法です。間違ってはないです。

Java

1int teisuu; // 変数の宣言 2teisuu = 1; // 変数に1を代入 3 4int teisuu = 1; //変数を宣言し、宣言した変数を1で初期化

投稿2016/03/16 07:43

Odacchi

総合スコア907

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

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

退会済みユーザー

退会済みユーザー

2016/03/16 08:17

ありがとうございました。またよろしくお願いいたします。
guest

0

ベストアンサー

①について
「View v」は引数です。分割とは具体的になんのことでしょうか。

②について
・findViewById(R.id.back)
→Activityの子ViewでidがR.id.backのViewを探す。つまり戻り値はidがR.id.backのView
・((ImageView)idがR.id.backのView)
→idがR.id.backは実際はImageViewであり、プログラマはImageViewのメソッドにアクセスしたいのでViewからImageViewにキャストする。
・idがR.id.backのViewをImageViewにキャストしたインスタンス.setImageResource(R.drawable.b0);
→ImageView#setImageResourceメソッドを使ってR.drawable.b0を表示する。

③について

Java

1View v = findViewById(R.id.back); 2ImageView imageView =(ImageView)v; 3imageView.setImageResource(R.drawable.b0);

投稿2016/03/16 07:29

yona

総合スコア18155

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

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

退会済みユーザー

退会済みユーザー

2016/03/16 08:13

引数は method(5); というようにひとつの値のみが入るのではなく、型と定数が来た場合は、 『このメソッドの中にメソッドがあり、その戻り値を引数としています。』 ということなのですね。 非常によくわかりました。ありがとうございました。 またよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問