1 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:08:40 ] レベルとしては5段階で C言語・・・2 Ruby・・・3 って感じ。オブジェクト指向の概念は分かっています。 Javaを早急に書けるようになりたい。 まずは質問 public static void main(String arg[]){ } ってメインクラスに書かないといけないのはなぜ? Cだったら、 int main(void)でよかったじゃん。 メソッドってある? 全部関数の形だったりする? 例えばRubyなら 3.4.floorとか-5.absとか出来るんだけど、 Javaだと abs(-5)しか出来ない? それと、publicもprivateも必ず書かなければならない?
2 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:10:36 ] ちなみに京大生でつ
3 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:18:19 ] レスがないのでJavaから撤退することにした。 さようなら
4 名前:デフォルトの名無しさん [2007/12/15(土) 21:19:44 ] ばいばい 気が向いたらまた来いよ
5 名前:デフォルトの名無しさん [2007/12/15(土) 21:29:53 ] そこはまだ分からなくていい クラスの事勉強しはじめたら意味が分かるはず とJava3ヶ月の学生が申しております public ・・・有効範囲 static ・・・mainクラスが変化したら困るから void ・・・・mainクラスの型 main ・・・・meinクラス (String arg[])・引数
6 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:16:14 ] JavaとC++の違いって何? ちょっとここに、 ニャーっとなくタマという名前のぬこをCat classを作って書いて 実際にタマを鳴かせてくれないか? 実のところ、C++をやろうかとも悩んでいる。 Rubyの速度では足りないプログラミングをやりたいからだ。 でも問題はC++は手続き言語の特徴が残ってしまっていて気持ち悪いということ・・・
7 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:24:24 ] Rubyの速度ではと言う奴がC言語なら俺に聞けにもいたが そういう奴に限って限界に挑戦していない
8 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:29:09 ] いやRubyで限界に挑戦してもしょうがない。 どうすりゃいいんだ・・
9 名前:デフォルトの名無しさん [2007/12/15(土) 22:30:51 ] Rubyが使えるならまずRubyで書け。 話はそれからだ。分かったな小僧
10 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 02:09:08 ] >>6 コンパイラが吐いたアセンブリコードを見て、 ソースコードをチューニングというレベルまで行きたいのならC++ JVMの実行時コンパイルオプションを調節したり、 プロファイラでボトルネックを探すというレベルで良いならJava 一言で言えば、どこまで自動化されるか(逆に言えば自分で行わないといけないか)が異なる。 自分に合った方を選んだらよいと思う。
11 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 11:32:01 ] Java と C++ の違いか。 C++ の上級者用の本で Modern C++ Design というのがあるけど、あれの最初の方に多重継承でポリシーを記述するというのがあった。 で、多重継承は Java にはないけど、Java の学習で欠かせないクラスライブラリの把握において、一つのクラスが山のようにインタフェイスをインプリメントしているというのがあって、Java ではそれがとても自然だった。 Java で自作クラスで for each 構文を利用するには、どんなインタフェイスを実装しなければならないかとか最初から気にしなきゃいけないけど、C++ では仮想クラスライブラリなんてない。 だから Java と C++ では抽象クラスを意図して使う段階が違うと思うな。
12 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 00:55:42 ] C++を採用した。 Javaはとろい
13 名前:デフォルトの名無しさん [2007/12/19(水) 14:57:36 ] >>12 どんなプロジェクト?
14 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 15:35:42 ] 10分で去るとか、ネタすれにしても酷いな。 ネタにマジレスするけど・・ Mainに関しては、CもJavaも同じ。 OSがmainエントリをコールするまでの動きが分かっているなら、Javaも基本は同じ。 >全部関数の形だったりする? >例えばRubyなら >3.4.floorとか-5.absとか出来るんだけど、 >Javaだと >abs(-5)しか出来ない? 全部関数の形って発言からして、オブジェクト指向もRubyも良くわかってないんじゃないかと・・。 Rubyは全てがオブジェクトだから、3.4 も -5 もオブジェクト。 3.4はFloat(Double)クラス、-5はIntegerクラスのインスタンスって事になるから、 そのクラスが持っているメソッドfloorやabsが呼び出せる。 Javaの場合は速度を稼ぐためにわざとPrimitive型として定義しているので、 上記のようなことは不可能。 JDK5以上のAutoBoxingでも不可能。 と京大生なら説明するまでも無かったですよね(´・ω・`) publicやprivateは記述しないとPackageDefaultになるわけだけど、 Object指向がわかっているというなら、当然適切な修飾子を選ぶべき。 てかRubyにもアクセス修飾子はあるだろうに(´・ω・`)
15 名前:デフォルトの名無しさん [2007/12/20(木) 22:12:56 ] >>1 マジレスする。 >>1よ、おまえはバカだ。そしてカスだ。
16 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 17:25:19 ] 今からJavaをやる。 質問を書き込むからお前ら答えなさい。
17 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 17:32:18 ] GUIは何がオススメ? とりあえずGUIを確保しておきたい。
18 名前:ちんこ ◆GbXlaaQNk. [2007/12/30(日) 17:32:40 ] おっと、一度ageておくか
19 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:37:45 ] サガミオリジナルがオススメだな 極薄は駄目 安全性を確保したいなら普通ので良い
20 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:38:40 ] GUI は swing だろうな。
21 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:41:31 ] と反転型両面アンチが申しております
22 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 17:42:23 ] >>19 極薄はダメだな。 一度破れた事がある。 おれは www.okamoto-condoms.com/condoms/dotdehot.html が好きだ。 って違うだろ!! >>20 awtっていうのもあるらしいが、swingのパッケージか? gtkが使えるのだが、Javaにはないか?
23 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:46:43 ] >>22 別に Java にできないことは無いんだから、好きな gtk を頑張って使えば?
24 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 17:53:53 ] swingは使いやすいか?
25 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:02:12 ] Javaにできないことってほとんどないよね。直接的なメモリ操作とかハード寄りの操作は苦手だけど。 よくJavaは速さが遅いとかぬかす奴がいるがそれだったら一度Cとかにソースコードを変換してコンパイルすればいい話だし しかもJavaコンパイラの出現も噂されてるからね
26 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 18:06:56 ] それは結構だが、 Stringへのキャストは (String)でいいか? あと、優先順位は、 String>int, double? 例えば "x="+x としたらこれは全体でString型を返す?
27 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:30:21 ] >>22 ああ。すまんこう。 そのハンドルとGUIからSKINを連想した
28 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 18:36:00 ] このハンドルは案ずる事なかれ
29 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:36:30 ] >>24 gtk の方が使い易いのでは?
30 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:38:04 ] >>26 プログラミングの勉強は、仕様書の精読と、実際の環境でのテストプログラムの作成に限るよな。
31 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 18:56:32 ] >>30 そんな時間はないのだよ。 Junitっていい? とりあえず入れてみた。 環境はUbuntuLinux 今、 ttp://www5c.biglobe.ne.jp/~ecb/java/java00.html で勉強してる。 JavaはRubyに似てるからわかりやすい。 素人じゃないからsmoothではある。
32 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 19:01:36 ] >>29 rubyからgtkは使った事はあるが、 他の言語からは使ったことがない。 javaからgtkを使うライブラリはあるか? 調べる気も起きない。調べてくれたまえ あと一般的に 学校の先生とかはどのGUIライブラリを使ってる? 当方電気系だが。
33 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 19:17:48 ] >>32 ひょっとして調べたものを読む時間も無さそうだな。 一般的には学校の先生はアプレットだな。 君が電気系かどうかは一般的な話とは無関係だな。
34 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 19:33:01 ] JavaAppletというのは、 デスクトップ上でも使えるのか?
35 名前:ちんこ ◆GbXlaaQNk. [2007/12/30(日) 21:02:54 ] 何も指定しないと、 メンバ変数は0に初期化されるって本当ですか?
36 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:29:49 ] >>35 嘘かもねぇ。
37 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 21:32:49 ] どっちですか? 理屈的にはおかしいと思うんですけど Javaはそういう仕様ですか?
38 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:53:48 ] 実際にコード書いてコンパイルして 実行すれば分かるんじゃね?
39 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 22:02:44 ] めんどくさい。 Junitってどうやって使うの?
40 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 22:39:38 ] 素人じゃなければ 5 行くらいのプログラムを書けば 1 分以内で確かめられることばかりなのでは?
41 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 22:46:55 ] ダメだ、Javaのコンパイルが分からない。 書いてあったプログラムをそのままjavacしたら3つもエラーが出た。 誰かこのエラーを解説してくれ。 www.uploda.org/uporg1181021.java.html うp revline.java:35: クラス StringStack は public であり、ファイル StringStack.java で宣言しなければなりません。 public class StringStack{ ファイルをわけろってどういうことだ・・? publicとか理解不能だし、 ttp://www5c.biglobe.ne.jp/~ecb/java/java00.html ここの、メソッドの引数ってとこが全く分からない。
42 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 22:53:34 ] public クラスはクラス名とファイル名が一致しなければならない。 だから一つのファイルに二つ以上 public class は存在できない。 パッケージの意味が分かるまでは class に public を付けなくてもいいかもしれない。 (メソッドへの public はまた別の意味)
43 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 23:00:08 ] new String(b, 0, i); ってどういう意味? String[int]; っていう書き方もある。 あと byte b[] = new byte[1024];
44 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/30(日) 23:00:49 ] >>35 は解決した。
45 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:17:38 ] > new String(b, 0, i); SUN の Java のドキュメントをもらってきて、 API の java.lang.String のコンストラクタの 説明を見れば瞬時に分かる > String[int]; 角カッコは配列を意味する。 int じゃなくて、 int 型の変数だよね?そのサイズだけ確保した String の配列 > byte b[] = new byte[1024]; C と互換性のある書き方を使っているけど Java 風なのは次の書き方。 byte[] b = new byte[1024]; 配列は参照型で、変数宣言だけでは参照の変数が作られるだけ。 実際の配列を作る際は new を使って配列をメモリ上に作成し、配列型変数に参照を格納する。
46 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 00:03:10 ] だからnew String[int] になってるのか。 参照の変数っていうのはポインタのことか? def method(String array){
47 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 00:06:26 ] array = "tinko"; } っていうのは、 引数に入れたarrayと、中のarrayは 同じところを指している(参照)しているポインタだから、 arrayは"tinko"になってしまうということか? 参照というのがいまいち分からん。 プリミティブ型と、 そうでない型で違うというのはどうして?
48 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 00:18:33 ] でも String str; ってしたらstrはStringクラスになるよね。 だって MyClass a; ってしたらaはMyClassになるでしょ。 型にプリミティブとそうでないものしかないのであれば、 String str; でちゃんとメモリも確保されて、 String str; str = "tinko"; でもいいんじゃないの? newを使う理由はどこに?
49 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 00:28:29 ] みなさんにはご迷惑かけます。 でも、図書館が開いてないんです。 国立の図書館って、公務員ですからね、正月はがっつり休みやがる。 試験も近いのに迷惑ですよ。 学部の図書室にJavaのいい本があったと思うんですが、 それを借りにいけない。 だから教えてください、分からないことは山ほどあります。 不思議なことだらけなんです。 Javaにおけるクラスの絶対度は異常です。
50 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:44:46 ] Java のプリミティヴ型と参照型の溝は C++ よりも深い。 C++ だと変数宣言すると自動的にコンストラクタが呼ばれオブジェクトが生成されるため、 int x; とやったのと同じように宣言した変数を扱える。 でも、 Java はプリミティヴ型なら宣言しただけで使えるようになるけど、 配列やオブジェクトは変数宣言しただけでは単に参照可能な変数ができるだけで、 配列やオブジェクトができるわけじゃない。 だから、配列やオブジェクトを作るには、 new とか使わないといけない。 String s; とやっても s には文字列が入るわけじゃない。 文字列型のオブジェクトを参照可能になるだけ。
51 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 00:55:40 ] だから s = "aaaa"; とすれば sには文字列が入るんじゃないの? String str; str = readLine(); という記述がある。new使ってない。 「参照可能な変数が出来る」というのはどういう状態を指すの?
52 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:28:28 ] オブジェクトの変数に対して「入る」って感覚は捨てるべし。 "aaaa" という記述をすると、メモリ上に String 型のオブジェクトができる。 そして s="aaaa" とするとそのオブジェクトの参照が s に入る。 readLine() は一行読んだ結果をメモリ上にオブジェクトとして作成し、その参照を返す関数。 だから、 str に参照が入る。 new を使わなくてもオブジェクトは作れる。ファクトリとかいうデザインパターンを調べるといいかも。 「変数はものを入れる箱」とかいう概念はプリミティヴ型にしか通用しない。
53 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 02:50:15 ] 以下のコードを実行すると[#document: null]になっちまう。 なぜだ!?ちなみにJava5 DocumentBuilderFactory domFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder builder = domFactory.newDocumentBuilder(); Document doc = builder.parse(is); ちなみに解析しているXMLはこれ <?xml version="1.0" encoding="UTF-8" ?> <ResultSet xmlns:xsi="www.w3.org/2001/XMLSchema-instance " xmlns="urn:yahoo:jp:jlp" xsi:schemaLocation="urn:yahoo:jp:jlp api.jlp.yahoo.co.jp/MAService/V1/parseResponse.xsd "> <ma_result> <total_count>1</total_count> <filtered_count>1</filtered_count> <word_list> <word> <surface>TO</surface> <reading>TO</reading> <pos>名詞</pos> </word> </word_list> </ma_result> </ResultSet>
54 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 03:04:54 ] >>53 うわー。随分情報小出しにするな。 いま、エスパーが君のマシンのプログラムを透視しているからもう少し待ちねぇ。 1年以内には解決しよう。
55 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 03:29:21 ] >>53 エスパーがプログラムを完成させて動かしたら見事に XML 読めたよ。 おめでとう!
56 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 04:25:39 ] >55 ありがとうございます。 osxなんですが、もしかして関係あるんですかね? 必要なライブラリがあるとか?
57 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 04:44:31 ] いや、別に私も OSX だし。書いてあったことに関しては、全く問題なかったよ。
58 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 11:01:38 ] >>52 リンク先website(オブジェクト)とアンカー(参照)の関係ですか? 何かもっと現実的な例で説明してもらえませんか? 一般的に分からない人に何か説明する時は相手の分かる次元まで落としてあげるものだと思います。 例えば、三次元の点と点の距離を求めるには二次元に落としてから考えるべきだし、 もっと分からなければ、図形的にヒモでも使って説明するでしょう。 Rubyよりやってきたので、参照、そういった概念が全くありません。 newというのは実際に何をしているのですか? 参照とnewはどう関係しているのですか? 全く見えません。
59 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 11:08:26 ] 参照とアドレスの違いはなんですか?
60 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 11:26:08 ] newはインスタンスを作っているのですよ。
61 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 11:34:14 ] インスタンスと参照の違いは? インスタンスはメモリを持つ実態のことで、 参照はどっかにアドレスをもって、それを指しているということですか? 計算機工学なら分かります。 メモリとかアドレスとかの話にドロップダウンしてくれませんか?
62 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 13:06:58 ] レス待ちなのだが。 理解出来ない・・・
63 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 13:53:05 ] 計算機工学で抽象的な話を習わなかったのかな? 参照はポインタ型と同じだと思ってもいいよ。 ただ、ポインタとか言うといろいろ演算ができるけど、参照は代入と等号の比較以外の 演算ができないと思ってもらえれば。 つまり、 Java のオブジェクト型や配列型の変数宣言は、単にアドレスを入れる変数が作られるだけ。 次のプログラムがどう動くか予想してみて int[] a,b; a=new int[3]; b=a; a[1]=1; b[2]=2; for(int i : a){System.out.println(i);} for(int i : b){System.out.println(i);}
64 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 14:10:14 ] C言語みたいにアドレスを気にしなくていいよ。
65 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 14:54:19 ] ちなみに同じプログラムを Ruby に移植(Ruby 暦 10分なのであてにはしないでね)するとこうなる a=[0,0,0] b=a a[1]=1 b[2]=2 a.each do |i| puts i end b.each do |i| puts i end Ruby も配列を作る時、変数毎に配列の箱が用意されているんじゃなくて、 a も b も参照であることが分かると思う。
66 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:23:01 ] オブジェクトの変数とか new に関しては Ruby と同じと思えばいいかな? 次の Ruby のプログラムの振る舞いを考えればいいはず。(Ruby 暦 30分) class Test def set num @val=num end def get @val end end a = Test.new b = a c = a.clone a.set 1 b.set 2 c.set 3 puts a.get puts b.get puts c.get
67 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 15:35:05 ] >>66 の Java 版(clone でちょっとはまった) class Test implements Cloneable{ int val; public void set(int num){val=num;} public int get(){return val;} public Test clone() throws CloneNotSupportedException{ return (Test)super.clone(); } } class TestPrg { public static void main(String[] arg) throws CloneNotSupportedException { Test a = new Test(); Test b = a; Test c = a.clone(); a.set(1); b.set(2); c.set(3); System.out.println(a.get()); System.out.println(b.get()); System.out.println(c.get()); } }
68 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 15:56:09 ] まとめると、 int[] a; String str; などという宣言は、 「int配列型、String型のインスタンスへのアドレスを持つ、「予定である」 参照箱を作った」ということで、 実際に a = new int[100]; str = new String("aaa") or 単に"aaa"; とすることは、 String型の"aaa"を作りました。 そして便利なのでString型のインスタンスへのアドレスを欲しがっている strくんにここのアドレスを渡しておこうと思います。 ということか? b=aとすると、Rubyの場合、値がコピーされるが、 そういう風に解釈してよろしいか? つまり、 b = aという演算は、 bくんもint[]型のインスタンスが欲しいそうです。 では、aくん、あなたが参照しているインスタンスをコピーして、 bくんに参照させてあげなさい。 分かりました。ほら、b、ありがたく受け取れ。 ありがたき幸せ・・・ という話か?
69 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 16:04:52 ] だとすると b=a; という代入演算には、 コピーコンストラクタの概念が必要になると思うのだが・・・ b=a; という演算は一体、何をしているのでしょうか? bをいじってもaの参照しているインスタンスが影響を受けないようにしたいですね。 これはC++において、 アドレスで渡さずconst&で渡す参照渡しと同様の概念だと思うのですが、 違いますか? (後述の理由より違うってことでおk?) >>66 をやってみたら、 (putsはpにしましたが、あとset(num)と明示的に かっこをつけることが推奨されていますし、 setした時に@valが作り出される格好になっているので 最初から持たせるか、initializeしてくれないと分かりづらい・・・ 最初動かないかと思ってた) akira@akira-desktop:~$ ruby a.rb 2 2 3 となった。これは知らなかった。 代入だと元のまで変化してしまうのか? そういえば代入は文字代入かinitializeでの代入くらいしかした覚えがない。 b=aみたいな書き方ってふつうしないと思うし。
70 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 16:12:48 ] つまり b=a; という演算は、 ポインタのコピーと解釈しておkですか? そして、 メソッドなどの引数にとるときは 例えば method(String str) であれば、 String s = "aaa"; method(s); とすると、 sの参照先のアドレスが参照型で渡されて、つまり、Cでいえば、 (*p)<=だぶんこれを参照型というのだと解釈した の形で渡されて、 だから (*p).nantoka の形で使えるということですか? つまり、まとめていうと、 str = sという演算が行われてから、 strについて処理をするので、sの値が変わるということでおk? ではどうしてprimitiveな場合は値渡しになるのでしょうか?
71 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 17:07:49 ] 誰か助けてよ・・・ もう何も分からない・・・
72 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 17:10:58 ] そうそう、だから Ruby と Java は同じで、 C++ は違うってことだな。 C++ だと自然な結果になる。でも暗黙の機能が裏でたっぷり呼ばれる。 #include <iostream> class Test { int val; public: /* Test(){std::cout <<"コンストラクタが呼ばれた" << std::endl;} Test(const Test& x){std::cout << "コピーコンストラクタが呼ばれた" << std::endl;} ~Test(){std::cout << "デストラクタが呼ばれた" << std::endl;} Test& operator=(const Test& obj){ std::cout << "代入演算子が呼ばれた" << std::endl;} */ void set(int num){val=num;} int get(){return val;} }; int main(){ Test a,b; Test c=a; b=a; a.set(1); b.set(2); c.set(3); std::cout << a.get() << b.get() << c.get() << std::endl; }
73 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 17:15:31 ] で、 C++ の場合、もう一つ、オブジェクトをポインタで管理する構文があって、こっちが Java や Ruby に近い。 この場合、暗黙のうちになにかが起きるってことが無い。 C++ の -> と Java や Ruby の . が近いって感覚かな? #include <iostream> class Test { int val; public: /* Test(){std::cout <<"コンストラクタが呼ばれた" << std::endl;} Test(const Test& x){std::cout << "コピーコンストラクタが呼ばれた" << std::endl;} ~Test(){std::cout << "デストラクタが呼ばれた" << std::endl;} Test& operator=(const Test& obj){ std::cout << "代入演算子が呼ばれた" << std::endl;} */ void set(int num){val=num;} int get(){return val;} }; int main(){ Test *a,*b,*c; a=new Test(); b=a; c=new Test(*a); a->set(1); b->set(2); c->set(3); std::cout << a->get() << b->get() << c->get() << std::endl; }
74 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 17:20:52 ] で、プリミティヴ型に関しては、C 言語がもともと変数を宣言すると箱を用意して、 代入文では値をコピーしたというのに意識して合わせたという風に納得すべきだろう。 だから Java ではプリミティヴ型に対するプログラミングとオブジェクト型に対するプログラミングは かなり違う。 で、 Java 1.4 までは、意識してラッパークラス(int なら java.lang.Integer など)を活用しなければならなかった。
75 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 17:56:06 ] どこがそうそうなのか分からない。 結局、 method(String s)の場合は String str = "aaa"; method(str); とした場合は、 s = str(参照ポインタのコピー) が最初にされるからstrの値は変わってしまう。 method(double d)の場合は。 double value = 1.1; method(value) としてもvalueの値自体のコピーがdに渡されるから 元のvalueは変化しないってこと? 呼び方としてはC的にいうと、 char *pという宣言について、 p ポインタ *p 参照ポインタ ということかな? 「参照」という言葉について、何を参照しているのか、 なぜ参照と呼ばれるのかを詳しく話してもらえないと、 理解があやふや。 参照渡しとポインタ渡しの違いは? C++のmethod(type& ob)と、Javaのmethod(type ob)は等価なのか? Javaの引数の渡し方は ttp://www.aerith.net/design/argument-j.html これらの図のうちどれか?
76 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:08:40 ] C には参照という概念が無く該当するとすればポインタになる。 但し、ポインタは厳密にアドレスに対応づけられるけど、 参照は物理的な対応は無くても良くて抽象的な概念。 オブジェクトを指すことができれば良い。 C++ の参照と Java の参照は同じ概念。 但し、 C++ の参照型変数は初期化が義務づけられているけど、 Java の変数は初期化しないと後で使おうとすると NullPointerException が出る。 指定されている図は「コピー」の説明であって、参照の説明ではないな。 Java はプリミティヴ型は値渡し、オブジェクト型は参照渡しになる。 C++ では参照渡しとポインタ渡しは全然違うけど、 Java ではポインタ渡しが無いから何とも言えない。
77 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 18:21:10 ] 発想としては =>オブジェクト指向をするに当たって、オブジェクトをそのまま変化させる方法があればよいな。 =>じゃあポインタコピろうぜ。 =>でもポインタでコピるとアロー演算子が汚いな。 =>じゃあ参照渡しを定義しようぜ。 =>いいねそれ! っていうこと? ttp://www.geocities.jp/ky_webid/cpp/language/015.html ここの参照渡しのところのポインタ渡しと参照渡しの比較的に考えると。 でもポインタでも char *p; っていうと、これはどこも指してないけど、ポインタが作られてるよね。 この時に、ポインタのメモリはどっかに確保される。 String str; は参照変数を定義しているのだと思うけど、 抽象的な概念であれば、この時はまだメモリが確保されないの? ポインタ渡しと参照渡しの差が上記したことのみだとすると、 「抽象的な概念」というのがどこを指しているのか分からない。
78 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:36:32 ] 俺が友人にJavaを教えたときに使った画像 up2.viploader.net/upphp/src/vlphp114973.jpg
79 名前:56 mailto:sage [2007/12/31(月) 18:37:55 ] >>57 そうですか。わざわざすいません。 そうすると、やはり何がいけないのかがよけい分からなくなりました。 ちなみにInputStreamをFileInputStreamにして、ローカルから読もうとしても 同じでした。 謎。。。
80 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:43:37 ] >>78 シンプルすぎワロタw
81 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:45:33 ] String str; str=null; なんてのもできるよ。 参照を入れる箱はできるよ。 ただ、本当に参照と呼ばれるものに何が入っているかは ポインタと違って良く分からないだけで。 C++ はメモリとかアドレスとかにきちんと対応づけられているけど、 Java の内部が実際どうなっているか、ソースファイルを読んでないのでよくわからない。
82 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:47:35 ] >>79 おお。いよいよ小出しも佳境に入ってきたね。 InputStream を使ったのか。だったら、 is じゃなくて System.in とすれば標準入力から 読めるんじゃないかな? あとは、 FileInputStream の代わりに File にするとか。
83 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 18:49:44 ] 参照変数には何が入ってるか分からないの? ただ「参照している」というだけで、 それが何をしているのかは謎のblackboxなの?
84 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 18:58:36 ] >>83 そうそう。 気持ち悪かったらコンパイラのソースを読むと。
85 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 19:27:36 ] 参照渡しは理解した。 public class ClassName にすると、なんでファイル名もClassName.java にしなきゃいけなくてかつ publicなクラスはファイル中に1つしかあっちゃいけないの?
86 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 19:54:39 ] >>85 q.hatena.ne.jp/1122966784
87 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2007/12/31(月) 20:07:51 ] また、publicでないクラスは、同じファイルにある唯一のpuclibクラスによって利用されるだけで、外部からの参照はできない これマジで? ファイルが違うと何か変わるの?
88 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 20:30:43 ] それは package とか import とかの仕組みが分からないと、説明がめんどくさいんだけど。
89 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 20:42:31 ] Trevisの責任者さんへ October 11 [Thu], 2007, 22:16 この書き込みを最後に明日実験が終わって帰ってくるまで 書き込みを禁止することでトップに残るようにしておきます。 チアの責任者から前主将の方に連絡が入ったとの事で、 驚いています。と、ともに深く反省しております。 ぼくとしてはあくまでもチアの部員との個人的な問題で 解決出来るかなと思い先ほどのような軽めの謝罪文を出しましたが、 部と部での問題になりつつあるとの指摘を受けて改めて謝罪いたします。 このブログはあくまでも自分のオフザケを表現する場として解説して、 その方向でいろいろな、あくまでもネタとしての持論を展開してきました。 なので、気づかぬうちに自分では「なんでもあり」のような気持ちに なっていたのかも知れません。 その結果、チアの女子部員を「肉便器」「イロモノ」よばわりするところまで エスカレートしてしまいました。今はとても反省しています。 これからどうやって関係を修復していけばよいやらぼくには分かりません。 まずは該当の記事を見つけられる限り削除しますので、 もしいたらぬ点があれば ruby.wktk@gmail.com の方に連絡いただければ削除または修正を検討します。 その上で、もしよろしければ後日チアの責任者もしくはリーダーと会って 謝罪したいと思っています。 それについては前主将から連絡がいくかと思われます。 本当に申し訳ありませんでした。 京都大学バーベル部主将 早川輝
90 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/01(火) 00:20:46 ] java勉強しながら気がついたら年を越していた。 強化学習のプログラムを書く。 他の課題も満載なので、明日か明後日には着手したい。 Junitの使い方も勉強しないと。 でもなんとなく分かる。Test用のクラスを書くんだよな。お決まりだ。 今Java FAQなるページを読んでいる。 奥が深すぎる。でも今必要な駒は揃い始めてきた。 あとはGUIだな。
91 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/01(火) 01:28:00 ] アクセス指定子だけど、 なんか別にpublicとprivate以外いらないんじゃないかって思う。 質問だけど、 publicのメンバを継承した場合、 サブクラスではそのメンバのアクセス指定子は何になるの? privateはそのクラス内でしか参照出来ないと書いてあるけど、 それは継承されないということ?
92 名前:56 mailto:sage [2008/01/01(火) 06:14:05 ] >>82 すいません。解決できました。document nullでも 実は中身を読めていたという落ちでした。 toStringしたときになにがnullなのか分からない。 ご迷惑おかけしました。
93 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:50:52 ] >>1 とちんこは別人?
94 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/01(火) 17:05:58 ] 同一人物だぞ。
95 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/01(火) 17:09:26 ] 親がpublicで持つと、 それは子に継承出来るよね。 その時、子はその変数なりメンバをどういうアクセス指定子で持つの?
96 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/01(火) 17:21:32 ] もしかして ぬるぽ ガッ の、ガッっていうのはcatchのこと?
97 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:22:00 ] プロバイダ規制解除…… >>91 >>95 まあその辺は実験すれば 5 分で結論が出るからいいと思うけど。 実は Java には何も指定しない状態というのが特別な状態なんだな。 何も指定しないと「ファイル内でアクセス可能」という不思議な状態になる。 継承関係だけでアクセスしたかったら protected を使うべし。
98 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/01(火) 21:36:29 ] 2次元配列を引数にとるコンストラクタを作りたい。 どうすればいい?
99 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/01(火) 21:45:44 ] 別にfor loopでいいのか?
100 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 22:14:19 ] >>98 Test(int[][] anArray) とかでできたよ。できないかと思って試しちまった。
101 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/01(火) 22:57:55 ] >>100 いやそういう話じゃなくて コンストラクタの中でどうやってコピーすればいいかっていう話。 cloneは使えないよね? copyArrayなんていうメソッドがあったりするらしいけど、 一体どうすればいいのかな?
102 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 23:51:08 ] ずばり書いてあるね。 java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7 上で clone をすると下の階層は share になるようだね。 new int[arg.length] とか初期化した後、 for-each loop で各要素を clone するんだろうね。
103 名前:ちんこ ◆GbXlaaQNk. [2008/01/07(月) 20:33:39 ] またJavaやるわ。 Rubyは速度がクソすぎて死ねる。
104 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 21:40:24 ] おk
105 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/01/07(月) 21:46:11 ] forum.ubuntulinux.jp/viewtopic.php?id=934 こういう理由でjdeを使えないらしい。 環境はEclipseがいい? でも日本語にするのがめんどくさい。 IDEを使うと楽になるかな? おれはemacsが好きなんだけど。 今JavaAppletしてる。
106 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:49:59 ] NetBeans使えば面倒なことはないよ
107 名前:ちんこ ◆GbXlaaQNk. [2008/02/10(日) 18:53:42 ] DebianだとJDEE使えるんだけど、 UbuntuでDebianのパッケージ使っても大丈夫かな?
108 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 12:27:54 ] >>107 案ずるより生むがやすs つーか、Ubuntuはdeb系だから大丈夫じゃね?と無責任こいてみる。
109 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/14(木) 01:49:52 ] 互換性はないはずだが、どうなんだろう。 でも別にJDEEなんていらんけどね。 かなりJava書けるようになって今腕試しにオセロ作ってるよ^^
110 名前:ちんこ ◆GbXlaaQNk. [2008/02/14(木) 23:03:24 ] www2.uploda.org/uporg1251338.java.html 今Othello作ってるんだよね。 で、これがプログラムなんだけど、 今、MainPanelのputDownっていうメソッドでテスト的に stata[0][0] に白を置こうとしているんだけど、 mouceClickedがちゃんと動作してないのか、 ちゃんとrepaint()が発動してるような気がしない。 repaint()ってpaintComponentを自分で発動させるって意味だよね? なんでこれちゃんと動かないんだろ。
111 名前:ちんこ ◆GbXlaaQNk. [2008/02/14(木) 23:29:21 ] あああああああああああああああああ addMouseListerしてないwwwww
112 名前:ちんこ ◆GbXlaaQNk. [2008/02/26(火) 12:59:53 ] サーセン JRubyやります。 Javaのプリミティブと参照の混在っぷりにイラっと来た。 Rubyならそれを解決してくれるし、 Javaも無駄にならない!(特にSwing) JRubyは神
113 名前:デフォルトの名無しさん [2008/04/30(水) 22:11:29 ] やっぱり、ハイレベルかつ簡易にかかれていないと意味がない その点では、少し値は張るが、これなんかお勧めだ www.amazon.co.jp/Java%C3%A3%C2%81 %C2%A7%C3%A5%C2%AD%C2%A6%C3%A3%C2%81%C2 %B6%C3%A9%C2%81%C2%BA%C3%A4%C2%BC%C2%9D %C3%A7%C2%9A%C2%84%C3%A3%C2%82%C2%A2%C3 %A3%C2%83%C2%AB%C3%A3%C2%82%C2%B4%C3%A3 %C2%83%C2%AA%C3%A3%C2%82%C2%BA%C3%A3%C2 %83%C2%A0-%C3%A6%C2%A3%C2%AE-%C3%A7 %C2%9B%C2%B4%C3%A6%C2%A8%C2%B9/dp/4320121988/ ref=sr_1_14?ie=UTF8&s=books&qid=1195823217&sr=8-14
114 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 17:46:36 ] 初心者がJavaを“超高速”で学ぶためのコツ:ITpro itpro.nikkeibp.co.jp/article/COLUMN/20060927/249181/
115 名前:デフォルトの名無しさん [2008/07/22(火) 22:10:54 ] TextSS
116 名前:デフォルトの名無しさん [2009/02/20(金) 19:48:02 ] >>115 ∧∧ (´・ω) _|⊃/(___ / ヽ_(____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
117 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:14:25 ] >>113 なんと言うド無能
118 名前:デフォルトの名無しさん [2009/02/23(月) 08:36:01 ] >>116 ! ∧∧ (・ω・ ) _| ⊃/(__ / ヽ-(___/  ̄ ̄ ̄ ̄ ̄ ̄
119 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 08:55:10 ] ∧∧ (ω・`) _|⊃/(___ / ヽ_(____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
120 名前:デフォルトの名無しさん [2009/02/25(水) 08:33:46 ] >>118 オハヨー!! ∧∧ ∩ (`・ω・)/ ⊂ ノ (つノ (ノ ___/(___ / (___/  ̄ ̄ ̄ ̄ ̄ ̄
121 名前:デフォルトの名無しさん [2009/03/23(月) 07:34:11 ] ∧∧ (ω・`) _|⊃/(___ / ヽ_(____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
122 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 21:51:54 ] スレ違い