Java初心者の者です。メソッドのルールがまだ良く分かりません。少し見て頂けますか?
int abc = Util.getInt(request, "abc" , 1);
String countQuery="select count(distinct no) from ******** ";
StringBuffer selectQuery=new StringBuffer();
selectQuery.append("select no, abc, age from DB ");
というソースがあるのですが、Util.getInt(request,abc,1)の使い方が分かりません「Util.getInt」で調べても答えになるサイトは出てこないですし。誰か教えてくれませんか?
あとQuery関連も分かりません。selectQueryとかcountQueryとか・・・
No.5ベストアンサー
- 回答日時:
>あと()って何のためについているのですか?引数とか未だに理解できないです。
(哀泣そっか、引数のイメージがつかないんですね。勘違いしてました。
「自販機」クラスがあって、100円のジュースを買ったときのお釣りを計算してくれるメソッドがあったとします。
あなたはこれだけで答えが出せますか??
100円を入れた人にはお釣りはかえってこないし、1000円を入れた人には900円かえってきますよね??ではこれをどうやって区別したらいいのでしょうか?
ここで言う100円や1000円が引数です。引数を使って初めてメソッドの答えが出てきますね?
つまり、このメソッドは例えば
int juice100(int money)
{
if(money<100) return 0;
else return money-100;
};
みたいになります。(実装方法は人によりますが)引数のイメージがつきましたか?
この回答への補足
int juice100(int money)
{
if(money<100) return 0;
else return money-100;
};
なるほど、引数を戻り値と勘違いしていました。
ただ、第一文でint juice100(int money)のところを単に
int moneyとしてしまうのはダメなのでしょうか?
あと上記の例文ではmoneyに値をいつ代入するのでしょうか?教えていただけますか?
どうしてint moneyとしないのかという解答としては
メソッドを定義しておいて後で繰り返し使えるようにするということでいいのですよね。
考えないで発言してしまいました。
すいません。。
ただ、メソッドを作成する理由は
他にもあるのですか?
No.6
- 回答日時:
どのような経緯で、どのような目的で質問されているのかが不明ですが、まずは、Javaの入門書を読まれてはいかがでしょうか?
または、入門レベルの情報が書かれているサイトを見るのもいいのではと思います。
ご質問の中で示されているソースは、DBアクセスするServletかStruts Actionなどの一部だと思いますが、基礎的なことを理解しないまま、このレベルのソースを読むのは、少し無理があるように思えます。
参考URL:http://www.hellohiro.com/
この回答への補足
ご意見ありがとうございます。
やはり時期尚早ですよね。
それを客観的に言って頂けただけでも
気が楽になりました。
(実は入門書を読む余裕が無いのです・・)
基礎レベルから理解していきたいです。
No.4
- 回答日時:
>Sample sample = new Sample();
という記述を見るのですが、これはインスタンスの生成ですよね。
そうですね。Sampleクラスのインスタンスを生成しています。
>インスタンスを生成するのはメソッドを呼び出すため・・・。
別にメソッドを呼び出すためだけでもないですが。
例えば
String str="test";
といってStringクラスのstrを作ってstrをそのまま参照するしか使わないことだってありますよね?(つまり、Stringクラスのsubstringとかのメソッドを呼び出さないこともありますよね??)
>クラスのSampleでは代用できないのですか?だってクラスのSampleとsampleは同じものなのでしょう??そこが分かってないです。
正確には同じものではありません。
クラスとはわかりやすく言うと例えば「人間」という定義を示しているだけのものです。で、実際にイチロー、松井という「人間」がオブジェクトです。
つまり、
Sample・・人間
sample・・イチロー、松井
という関係です。わかりましたか??
Javaってこういう感じの使い方が多いんです。
例えば、人間と言うクラスに100mを走る時間というメソッドがあるとします。
int run_100m(); です。
これって人間クラスにこのメソッドがあったとしても何が返ってくるかはわかりませんよね??人によって走る速さは違うわけですから。
これがイチローや松井と言うオブジェクトができていれば答えが返ってくるといったイメージです。
>あと()って何のためについているのですか?引数とか未だに理解できないです。(哀泣
何のためって言われても難しいですが、それがないとどうなるかわかりますか??
つまり、()がないとメソッドと変数の区別がつかないのです。
ところで、requestは解決しましたか?
||Sample・・人間
|sample・・イチロー、松井
|100m走る
非常に分かりやすい説明ありがとうございます。
今まで乗り物ー自動車・飛行機等の例えは聞いたことがあったのですがそれ以上の枠で考えられませんでした。ただ、どのレベルが問題設定にふさわしいかなどのイメージがわかないので少し例題を見て見ます。
requestについては、結局同じような使い方をしている文しか見受けられませんでした。すいません
No.3
- 回答日時:
>(1)でインスタンスを生成しているのは分かるのですがなぜそんなことをするのか
これはまた答えづらい質問ですねぇ。。
どのレベルで答えていいのかはわかりませんが。
1) ソースで何回も同じものを使いたいときはfinal int sum=100;とかやって変数を使いたくなりませんか??
2) (new StringBuffer()).append("select no, abc, age from DB ");
って書いてもいいですけど、そのappendしたものを参照できないので、その瞬間意味がないものとなってしまいます。
3) staticなメソッドはUtil.getIntのようにしてインスタンスを生成しなくても呼び出せますが、staticでないメソッドは一旦インスタンスを生成しないと呼び出せません
この3つの答えのどれかで満足するものはありますか??もし3つとも答えの観点が違うならそれを伝えてください。
>(2)でbクラス下のappendメソッド利用しているのはわかるのですがなぜ要素を括弧でくくるのかなどが分かりません。せっかく説明してもらっているのにその説明文すら分からない感じです。。
えーっと、Javaでは"aaa"と書くと即それがStringクラスのオブジェクトになるんです。
つまり、
String selectstr="select no, abc, age from DB ";
b.append(selectstr);
と書いてもいいんですが、それを省略しただけです。(このとき下のappendメソッドは引数にStringクラスのオブジェクトを取っているので引数が数あるappendメソッドの中からappend(String str) を選択しました)
補足
上の1)の答えにつながると思いますが、
String selectstr="select no, abc, age from DB ";
b.append(selectstr);
とした方が、selectstrを何回も使いたいときには便利です。つまり、bの他にcとdがあったとして
String selectstr="select no, abc, age from DB ";
b.append(selectstr);
c.append(selectstr);
d.append(selectstr);
とした方が
b.append("select no, abc, age from DB ");
c.append("select no, abc, age from DB ");
d.append("select no, abc, age from DB ");
と書くより便利です。特に"select no, abc, age from DB "という部分を日本語にしたい!なんて思ったときには変更しなきゃいけない行数に違いが出てくることが一目瞭然だと思います。
>ただ、変数のrequestが結局なんなのかはよく分かりませんでした。
これを今あなたが開示しているソースだけ見て何なのか分かれといっても無理な話です。メソッドgetIntの引数の情報も開示していないわけですし。("abc",1と言う表記からStringとint等の整数を引数として使っていることはわかりますが)
そのソースの上の方かどこかに
~ request=~~;
という表記があるはずなのでそれを示してください。
(多分java.sqlパッケージにあるクラスかインターフェースのどれかだとは思ってますが。ConnectionかResultSet辺りかな?)
この回答への補足
インスタンスを生成する目的ですが、3番が一番近いと思います。超初心者の人に丁寧に答えて頂きありがとうございます。
その、、よく
Sample sample = new Sample();
という記述を見るのですが、これはインスタンスの生成ですよね。インスタンスを生成するのはメソッドを呼び出すため・・・。クラスのSampleでは代用できないのですか?だってクラスのSampleとsampleは同じものなのでしょう??そこが分かってないです。あと
()って何のためについているのですか?引数とか未だに理解できないです。(哀泣
No.2
- 回答日時:
こんにちは。
まずはgetIntについてですが、
おそらく、これは
『requestという配列?か何かから"abc"という名称の列の1番目の値をint型というデータ型で取得する』
という意味だと思います。
思います、という風になってしまっている理由が2つあります。
1つ目は、getIntの上についているUtilが何なのかいまいちよくわからないということです。
getIntはメソッドで、Utilはおそらくクラスなんですが、
Utilというのはいわば略称なので、色々な可能性があります。
このクラスを修飾子抜きで呼び出せるということは、
このクラスにまつわる、import文が、
このテキストのもっと上の方にあるのではないかな?
と思いました。
2つ目ですが、『request』っていうワードが出てきますよね。
これは変数です。
ここではこの変数の宣言部分が省かれてますので、
どういったデータ型のものなのかが、
残念ながらわかりません。
名称的には、画面入力によりプログラムに渡された値か何かでしょうか?
あと、Queryですが、
まずselectQueryとかcountQueryは変数名です。
ここで使用している名前にすぎません。
上記のテキストでは、宣言するところまでしか記述されていませんので、
どのように使用しているかは、わかりませんが、
この2つには違いがあります。
それは、データ型です。
countQueryはString型で宣言されている変数で、
文字列を一気に代入しています。
一方selectQueryは、StringBuffer型の変数ですね。
こちらは、中身を一気に代入するのでなく、
ちょこちょこと後ろに継ぎ足していくことができます。
ここでは、SQLが代入されていますが、
例えばif文などを使い、後ろに続く文章を
場合によって変化させ、継ぎ足すことが可能です。
どちらもこの段階では、SQLの文字列に過ぎませんから、
この後、このSQLを解釈して、DBから値を取得したりするメソッドに渡すのでしょう。
メソッドとは、同じ処理を毎回全文書かなくても良いように、
名前と、処理に必要な値(引数)の個数と型、処理の結果発生する値(戻り値)の型
で識別できるような形にして、
他の場所からも呼び出せるようにしたものです。
メソッドを利用すれば、同じことを何度も書かなくてすみます。
それ以外にも、色々な利点はあるのですが、
まずは、何度も書かなくて済む程度に考えておけばよいと思います。
この回答への補足
丁寧な説明をありがとうございます。
何とか付いていけたと思います。
ただ、変数のrequestが結局なんなのかはよく分かりませんでした。他人のソースを見ているのでそうなってしまうのですが、このrequestというパラメーターはデータベースの何を表す記号なのでしょうか?
NoとNameの2つのカラムを持った行数20のデーブルなのですが・・
No.1
- 回答日時:
まず、Javaで使える一般的なクラスは以下のHPに書かれています。
まずはそこでチェックすることを心がけましょう。で、今回のUtil.getIntですが、javax.rmi.CORBA.Util にはそのようなメソッドがないので多分自作のクラス/メソッドでしょうね。周りにUtilクラスがないかまず調べてみましょう。(Eclipseとか使っていたらそのコードをすぐに参照できたりはするのですが)
>あとQuery関連も分かりません。selectQueryとかcountQueryとか・・・
この2つはインスタンスをそういう名前にしているだけです。
countQueryはjava.lang.Stringそのままだし、selectQueryもjava.lang.StringBufferそのままです。(2つとも下記URLに載っているクラスです)
つまり、
String a="select count(distinct no) from ******** ";
とか
StringBuffer b=new StringBuffer();
b.append("select no, abc, age from DB ");
とか書いても全く問題はありません。
(何に使っているかをわかりやすくしているだけです)
appendについてはStringBufferクラスに
append(String str)
というメソッドがあるのでそれを確認してください。
参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/inde …
ホムペを参考にさせて頂きました。
今まで意味も分からずインポートしていたパッケージの役割がはっきりしました。ありがとうございます!
ただ、
StringBuffer b=new StringBuffer(); ・・・(1)
b.append("select no, abc, age from DB "); ・・・(2)
(1)でインスタンスを生成しているのは分かるのですがなぜそんなことをするのか
(2)でbクラス下のappendメソッド利用しているのはわかるのですがなぜ要素を括弧でくくるのかなどが分かりません。せっかく説明してもらっているのにその説明文すら分からない感じです。。
すいませんが説明して頂いていいですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでMysqlにデータがあるかどうか判別したい 1 2023/03/02 11:48
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- JavaScript JavaScriptの条件分岐について(yes noチャート)で悩んでおります。 Q1は2択(ab) 5 2023/04/15 11:44
- Excel(エクセル) ExcelのABC分析についてです。 IF関数 VLOOKUP関数等など使わずに、ABC分析は出来ま 2 2023/06/15 23:57
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PHP PHP MySql ページング 2 2022/09/20 06:38
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
String.containsの反対機能はあ...
-
Javaのメモリの管理
-
C# 他のnamespaceにあるメソッ...
-
readLine()ではじめから読み直...
-
Javaの関数名が長い?
-
C#とC++/CLI間でポインタが指す...
-
StringBufferからStringへキャ...
-
Google Apps Script で getRang...
-
Java初級 引数に適用できません
-
C# でメソッドに送られてきたOb...
-
なぜprotected overrideなのか
-
javaに"search"という関数 or ...
-
不要なstaticメソッドの見分け...
-
配列の重複する値とその個数を...
-
エクセルVBAで、条件に一致する...
-
private static という変数の修飾
-
「タイプ初期化子が例外をスロ...
-
onClickで関数呼出し後に、結果...
-
変数名の付け方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
public static void main (Stri...
-
abstract と static を一緒に付...
-
Google Apps Script で getRang...
-
StringBufferからStringへキャ...
-
メソッド宣言の戻り値の型にク...
-
javaに"search"という関数 or ...
-
C# 点の描き方をおしえてくだ...
-
Java初心者です、エラーの意味...
-
なぜprotected overrideなのか
-
親の親のメソッドを呼ぶには?
-
C# でメソッドに送られてきたOb...
-
Javaの関数名が長い?
-
別クラスのmainメソッドの実行
-
コマンドライン引数のチェック
-
[クラス名].[メソッド名].[メソ...
-
contextってなんですか?
-
YYYYMMDD書式の日付に対する適...
おすすめ情報