2011年7月17日日曜日

メソッドの戻り値がある、なし

メソッドの戻り値がある、なしがいまいちうろ覚えだったので整理。
ついでに言うと戻り値はretrunのこと。
オレンジ色に発色したこの部分がメソッド
(1)public static int halve(int n){}
(2)public static void printGraph(int x){}
戻り値のあるなしはvoidで判断。voidは「無効の」とか「空の」って意味。
javaではvoidはメソッドの戻り値がないことを表す。
mainメソッドも同様。
また、計算(演算子)を求める場合は戻り値あり、
*のように記号を表示する為の物は戻り値なしということも念頭に入れておく。

★戻り値がある場合
public class Discount2{
public static void main (String[] args){
            int p,q;
            p = 10000;
            q = halve(p);
            System.out.println("元の値段が" + p + "円なら、半額だと" + q +"円になります。");
        }
        public static int halve(int n){
            return n/2;
        }
}
★戻り値がない場合
public class Graph1 {
public static void main(String[] args){
    printGraph(10);
}
    public static void printGraph(int x){
        for (int i = 0; i < x; i++ ){
            System.out.print("*");
        }
        System.out.println("");
    }
}

2011年7月9日土曜日

mainメソッド

mainメソッドはクラスをひとつのアプリケーションとして動作させるためのもの。
mainメソッドの前にあるpublicはパッケージの外から呼び出せる意味。
配列argsはクラスを実行しようとしたときの引数(コマンドラインパロメータ)
args.ength
args0];
args1];

args[args.length - 1]
ーーーーーーーーーーーーーーーーーーーーーーーーーー
public static void main(String[] args){
}

.....................................
★配列argsをSystem.out.println("")で表示
ただ、for(int i = 5;  i < args.length; i++)
としてみても、実行結果は変わらない。
なんで~??
というか、配列argsの中にいくつ格納されているのかがよくわからん。
型指定でStringに指定したargsはfor文章ではint型に指定したiとループ処理してるじゃないですか。
いいんですか!?そういう仕様なんですか?
lengthついてると変わるんですか?mainメソッドは特別なんですか?
私、この部分がわからなくて気持ち悪いので、疑問をまとめて検索しましょう。そうしましょ。

class ShowArgs{
public static void main(String[] args){
System.out.println("args.length = " + args.length);
for(int i = 0; i < args.length ; i++){
System.out.println(args[i]);
}
}
}
実行結果:
args.length = 0 ;
 
ーーーーーーーーーーーーーーーーーーーーーーーー
最近、プログラムにむかつくんじゃなくて、分からない自分にムカつく。
動作環境設定するのにひっかかるのも、エラーになるのも手が遅いのも自分が悪い。
PCやコードは誤作動おこすけども、基本嘘つかないし、正直者。
なにかに入信した気がする。

メソッドの書き方

メソッドの書き方がわからない、どういう状況下で使えばいいのか、スーパークラスとサブクラスで
継承関係をもったコードのとき役に立つということを教わったんだが、
それを自分で「このコードはメソッド使おう!」とかははじめたばかりでは思えない。

第一、去年iPhoneアプリをなんちゃってでも作るというのか、触ったんだけども、メソッド関係や親と子の関係とか、うろ覚えの状態でやってた。もう恥ずかしさ通り越して笑っちゃうよね。
初心者が公道運転してるようなもんだわ。
今、いちから教えてもらってて、あぁそうやったんか!という状態。

 ただ、相変わらずプログラムの考え方は身についていないので毎日かくしかないと思ってる。
何がわからないのかがわからない、書いてみてここがわからないことが分かる、
そこを繰り返し書いて覚えるしかないと実感してる。

「文型脳とか理系脳とか、知るか。書かんと覚えられんのじゃ。」っている体育会系的思考になってきた。愚痴っててもしかたないので、覚書メモ。

ーーーーーーーーーーーーーーーーーーーーーー
Rectangleっていう面積を求める計算を、メソッドの中で行う。
メソッドはインスタンスメソッド(非static)とクラスメソッド(static)がある。

★インスタンスメソッド
インスタンスフィールドのwidth,heightをすぐ使える。
ただ、以下のコードは省略して書かれていて、
returnの部分がreturn this.width * this.height;とthis省略されてる。
インスタンスメソッドはthisを暗黙の引数としてる。
書かなくても分かってよバカ///って感じ。
class Rectangle {
int width;
 int height;
 int getArea(){
 return width *height;
 }
}

 ★クラスメソッド
引数でインスタンスを渡してもらう必要がある。
class Rectangle {
int width;
 int height;
 static int getArea(Rectangle obj){
  return obj.width*obj.height;
 }
}

2011年7月7日木曜日

オブジェクト指向について

オブジェクト指向とはオブジェクトつまり
インスタンスを大切にする考え方のこと。
オブジェクト=フィールド+メソッド
またはオブジェクト=情報+操作

javaのオブジェクトはクラスから作られる。
クラス宣言の中にフィールドとメソッド、情報と操作をひとまとめに記述する。
以前は情報は情報で、操作は操作で記述していたので、
オブジェクト指向とは オブジェクト(インスタンス)を中心とした情報と操作をひとまとめにしたものの言語の事。

クラスとインスタンス

★クラスとインスタンス
クラス関連した情報を1つにまとめたもの
インスタンスは具体的な物

★クラス宣言フィールド
public class クラス名{
型 フィールド名;
型 フィールド名;
}

★インスタンスの作り方
クラス名 変数 = new クラス名();

コンストラクタはインスタンスをいっぺんに作る事が出来る
kamoku kokugo = new Kamoku("国語",63);みたいな感じ
クラス名とコンストラクタ名は同じ。
コンストラクタには戻り値の型を書かない。
 //public class クラス名
public class クラス名 {
String namae;
int tensuu;

//public クラス名()
public コンストラクタ名前(クラス名と同じ)(String namae,int tensuu){
    this.namae =namae;
    this.tensuu = tensuu;  
}
メモとして残しているものやコードが投稿のボタンを押すと文字数制限されているように切れるようになってしまった。
大変困った。
折角、残しておきたい、覚えたい物を書き出して入力しているのに、
それはないだろうと思ってしまう。
googleblog調子悪い気がする。


公開そうそう移転しようかと考えてる。

つれズレメモ

私はeclipseでJavaコード書いていまして、分からないものをメモとして載せています。


★lengthを繋げた式は配列tenの長さを表す。
tenは配列のことこの場合。配列の長さのぶんだけ
例 for(int i =0; i