2010年7月29日木曜日

クラス概要

(1)インスタンス変数 とは インスタンス(オブジェクト)が生成された時に実態をもつ変数、*private e;など
(2)インスタンスメドッド とは インスタンス(オブジェクト)が生成され時実態をもつメソッド、 ※public void car()
(3)クラス変数 とは public static  int a; インスタンス(オブジェクト)を生成しなくても呼び出せる、クラスに属する変数
(4)クラスメソッド とは public static void car(); インスタンス(オブジェクト)を生成しなくせも呼び出せるメソッド、クラスに属する。

(5)コンストラクタ とは クラス名と同じで、戻り値が無い、インスタンスを生成した時に呼び出される物です、
引数の数や型で呼び出すコンストラクタを変えることが出来ます。

JavaAPIドキュメント

日本語版が便利です。

パッケージ一覧・クラス一覧・仕様と3つの画面があります。
■java.langはパッケージ指定しなくても使えます。標準クラスです。
たとえば、Stringはクラスです。パッケージは指定しなくても使えます。

■コンストラクタ・メソッドもあります。

■Mathクラスのstatic int max(int a,int b);は
staticはクラスメソッドの、戻り型intの、max名と言うメドッソです。

※またクラスフィールドのPIは、Math.PIは円周率;

2010年7月28日水曜日

オブジェクトの配列

//クラスの配列を用意し、for文で用意した配列分のオブジェクトをつくります。
//クラス変数で生産された台数をカウントし、
//メソッドにクルマの番号とガソリン量を渡します。
import java.util.Random;

class Car
{
    public static int i;
    private int num;
    private double gas;
  
    public Car()
    {
        i++;
        System.out.println("車をつくたよ" + i + "車");
    }
  
    public void car1(int n,double g)
    {
        num = n;
        gas = g;
      
    }
  
    public void showCar()
    {
        System.out.println("num車" + num + "号車です。" + "gas:ガソリン量" +gas);
    }
  
    public static void showNum()
    {
        System.out.println("車は" + i + "台あります");
    }
}

class Sample9
{
    public static void main(String args[])
    {
        int i;
        Random rnd = new Random();

        Car[] car = new Car[5];
      
        for( i = 0; i < car.length; i++)
        {
            car[i] = new Car();
        }
      
        for( i = 0; i < car.length; i++)
        {
            int k = i;
            car[i].car1(k+1,rnd.nextInt(100));
        }
        for( i = 0; i < car.length; i++)
        {
            car[i].showCar();
        }
        Car.showNum();
      
        System.out.println("今日は何号車に乗っていきますか?");
        car[rnd.nextInt(car.length)].showCar();
    }
}
/****実行結果*******
車をつくたよ1車
車をつくたよ2車
車をつくたよ3車
車をつくたよ4車
車をつくたよ5車
num車1号車です。gas:ガソリン量23.0
num車2号車です。gas:ガソリン量31.0
num車3号車です。gas:ガソリン量40.0
num車4号車です。gas:ガソリン量88.0
num車5号車です。gas:ガソリン量39.0
車は5台あります
今日は何号車に乗っていきますか?
num車4号車です。gas:ガソリン量88.0*/

クラス型変数・基本型変数をメソッドの引数として使う

■基本が変数の値は値渡し、ことなる物を示す事になる。


■クラス型変数の値渡しは参照渡しになる。同じものを示すことになる
class Y1
{
 J1 j1 = new J1("text");
 I1.setT(j1);
}

class U1
{
  public void setT(J1 te)
  {
    text = te;
  }
}
※同じものを指します

ガーベージコレクション

■クラス型変数にnullを代入すると、ガーベージコレクション・メモリーが解放される事
■だたし2つのクラス型変数が同じもを示しているなら、片方は残ります「オブジェクトの事」。
■finalize()メソッドでメモリから破棄する事も出来る、

クラス型変数

■クラス型変数
J1 j1;
   j1 =  new J1;
J1 j2;
  j2 = j1;//新しいオブジェクトが出来たのではない、同じオブジェクトをさす事になります。

ラッパクラス・基本型とは

■基本型のint・double・char型を提供するクラス。
これらのクラスはnewしなくても使えます。
クラスメソッドも使えます。Integer.parseInt()などがそうです。
■Math.max(7,8);は大きい方を返します
これも標準クラスライブラリーです。

privateフィールド・publicメソッド・コンストラクタ・オブジェクト作成

//0から100までのXとYの座標を表す
class MyPoint
{
    //インスタンスフィールドです
    private int x;
    private int y;
   
    //引数のないコンストラクタ
    public MyPoint ()
    {
        System.out.println("初期座標はxは" + x + "です。Yは" + y + "です。\n");
    }
    //引数有のコンストラクタ
    public MyPoint (int px, int py)
    {
        if((px >= 0 && px <=100) && (py >= 0 && py <=100))
        {
            x = px;
            y = py;
            System.out.println("座標xは" + x + "で、座標Yは" + y + "です。\n");
        }
        else
        {
            System.out.println("0~100を入力してください");
        }
    }
    //インスタンスメソッド
    public void setX(int px)
    {
        if(px >= 0 && px <=100)
        {
            x = px;
            System.out.println("座標xは" + x + "です。\n");
        }
        else
        {
            System.out.println("0~100を入力してください");
        }
    }
    public void setY(int py)
    {
        if(py >= 0 && py <=100)
        {
            y = py;
            System.out.println("座標Yは" + y + "です。\n");
        }
        else
        {
            System.out.println("0~100を入力してください");
        }
    }
    //インスタンス変数
    public int getX()
    {
        return x;
    }
   
    public int getY()
    {
        return y;
    }
}

class Lessen5
{
    public static void main (String args[])
    {
        System.out.println("引数なしのコンストラクタを実行します");
        MyPoint mypoint1 = new MyPoint();
       
        System.out.println("引数2個のコンストラクタを実行します");
        MyPoint mypoint2 = new MyPoint(100,20);
       
        System.out.println("引数が1つあるメソッドを実行しました、");
        mypoint1.setX(55);
        System.out.println("引数が1つあるメソッドを実行しました、");
        mypoint1.setY(99);
       
       
        int pointX = mypoint1.getX();
        int pointY = mypoint1.getY();
        System.out.println("オブジェクトmypoint1XYの座標を受け取るint型のメソッドを実行しました");
        System.out.println("X座標は" + pointX + "で、Y座標は" + pointY + "です。\n");
       
        int point2X = mypoint2.getX();
        int point2Y = mypoint2.getY();
        System.out.println("オブジェクトmypoint2XYの座標を受け取るint型のメソッドを実行しました");
        System.out.println("X座標は" + point2X + "で、Y座標は" + point2Y + "です。");
    }
}
/*
実行結果

引数なしのコンストラクタを実行します
初期座標はxは0です。Yは0です。

引数2個のコンストラクタを実行します
座標xは100で、座標Yは20です。

引数が1つあるメソッドを実行しました、
座標xは100です。

引数が1つあるメソッドを実行しました、
座標Yは99です。

XYの座標を受け取るint型のメソッドを実行しました
X座標は100で、Y座標は99です。
*/

2010年7月27日火曜日

クラスメソッド・クラス変数  public static

//クラスメソッドテストとクラス変数テスト
class Car
{
    public static int sum = 0;
    private int num = 1;
    public Car()
    {
        sum++;
        System.out.println("コンスト時のsumです" + sum);
    }
    public static void showS()
    {

        System.out.println("インスタンス変数にアクセスしてみましたsumです" + sum);
       
    }
}

class Sample8
{
    public static void main(String args[])
    {
        Car.showS();
        Car.showS();
        Car.showS();
        Car.showS();
        Car car1 = new Car();
        Car car2 = new Car();
        Car car3 = new Car();
        Car car4 = new Car();
        Car.showS();//クラス変数表示
   }
}

/*
C:\JavaSrc\9>java Sample8
インスタンス変数にアクセスしてみましたsumです0
インスタンス変数にアクセスしてみましたsumです0
インスタンス変数にアクセスしてみましたsumです0
インスタンス変数にアクセスしてみましたsumです0
コンスト時のsumです1
コンスト時のsumです2
コンスト時のsumです3
コンスト時のsumです4
インスタンス変数にアクセスしてみましたsumです4//クラスメソッドでクラス変数をよびだしています
*/

コンスタラクタに修飾小を付ける

class J1
{
   private J1()
   {
     System.out.println("privateなコンスト実行");
   }
public J1(int n,double e)
  {
    this();     //privateなコンスト呼び出し
    System.out.println("publicなコンスト実行");
  }
}

J1 j1 = new J1();//引数無のコンストは呼び出しできません
J1 j2 = new J1(12,55);//引数無のコンストをthisで呼び出しています。
必ず引数2個のコンストしか呼び出せないような時つかえます。

別のコンストラクタを呼び出す

public Car(int x, double y)

{
  this();//引数なしのコンスト呼び出し、
}
■引数2このコンスト呼び出しは

this(11,33);//とする
*注意thisは先頭でしか使えません

2010年7月16日金曜日

mypoint1とmypoint2のオブジェクトかな?

//0から100までのXとYの座標を表す
class MyPoint
{
    //インスタンスフィールドです
    private int x;
    private int y;
   
    //引数のないコンストラクタ
    public MyPoint ()
    {
        System.out.println("初期座標はxは" + x + "です。Yは" + y + "です。\n");
    }
    //引数有のコンストラクタ
    public MyPoint (int px, int py)
    {
        if((px >= 0 && px <=100) && (py >= 0 && py <=100))
        {
            x = px;
            y = py;
            System.out.println("座標xは" + x + "で、座標Yは" + y + "です。\n");
        }
        else
        {
            System.out.println("0~100を入力してください");
        }
    }
    //インスタンスメソッド
    public void setX(int px)
    {
        x = px;
        System.out.println("座標xは" + x + "です。\n");
    }
    public void setY(int py)
    {
        y = py;
        System.out.println("座標Yは" + y + "です。\n");
    }
    //インスタンス変数
    public int getX()
    {
        return x;
    }
   
    public int getY()
    {
        return y;
    }
}

class Lessen5
{
    public static void main (String args[])
    {
        System.out.println("引数なしのコンストラクタを実行します");
        MyPoint mypoint1 = new MyPoint();
       
        System.out.println("引数2個のコンストラクタを実行します");
        MyPoint mypoint2 = new MyPoint(100,20);
       
        System.out.println("引数が1つあるメソッドを実行しました、");
        mypoint1.setX(55);
        System.out.println("引数が1つあるメソッドを実行しました、");
        mypoint1.setY(99);
       
       
        int pointX = mypoint1.getX();
        int pointY = mypoint1.getY();
        System.out.println("オブジェクトmypoint1XYの座標を受け取るint型のメソッドを実行しました");
        System.out.println("X座標は" + pointX + "で、Y座標は" + pointY + "です。\n");
       
        int point2X = mypoint2.getX();
        int point2Y = mypoint2.getY();
        System.out.println("オブジェクトmypoint2XYの座標を受け取るint型のメソッドを実行しました");
        System.out.println("X座標は" + point2X + "で、Y座標は" + point2Y + "です。");
    }
}
/*
実行結果

引数なしのコンストラクタを実行します
初期座標はxは0です。Yは0です。

引数2個のコンストラクタを実行します
座標xは100で、座標Yは20です。

引数が1つあるメソッドを実行しました、
座標xは55です。

引数が1つあるメソッドを実行しました、
座標Yは99です。

オブジェクトmypoint1XYの座標を受け取るint型のメソッドを実行しました
X座標は55で、Y座標は99です。

オブジェクトmypoint2XYの座標を受け取るint型のメソッドを実行しました
X座標は100で、Y座標は20です。
*/
追記:今回できたmypoint1とmypoint2のオブジェクトなんだろうかなと思う、

たしかに、オブジェクトが出来たし、便利な気もする今日この頃

2010年7月15日木曜日

ローカル変数

インスタンス変数やクラス変数とちがうローカル変数とは

ローカル変数とはメソッド内で宣言した変数で、ローカル変数が値を格納していられるのはメソッドが終了するまで、メソッドが呼び出されるたびに初期化します。

クラスメソッドの注意

public static void showS(){
this.num; //クラスメソッドは特定のオブジェクトに関連付けられて無いので、thisを使えない
       //また、インスタンスメソッドやインスタンス変数にアクセスできません。
       //クラスメソッドはオブジェクトが作成されなくても呼び出せる為です。
 System.out.println("インスタンス変数にアクセスしてみましたnumです" + num);
}

******エラー文*********
Sample8.java:13: static でない 変数 this を static コンテキストから参照すること
はできません。
Sample8.java:14: static でない 変数 num を static コンテキストから参照することは
できません。

クラス変数とクラスメソッド

class Car{

public static int sum; //クラス変数です、クラス変数は各オブジェクトから共有されるフィールドとなります。
public Car()
{
sum++
}
public static void show()//クラスメソッドはオブジェクトが作成されなくても、newされなくても、
             //メソッドを呼び出す事が出来ます。
{
System.out.println(sum);//sumはCarクラスが作成・newされるたびに1つ増えます
}

}

***************************
//クラスメソッドテストとクラス変数テスト
class Car
{
public static int sum = 0;

public Car()
{
sum++;
System.out.println("コンスト時のsumです" + sum);
}
public static void showS()
{
System.out.println("コンストメソッド時のsumです" + sum);
}
}

class Sample8
{
public static void main(String args[])
{
Car.showS();
Car.showS();
Car.showS();
Car.showS();
Car car1 = new Car();
Car car2 = new Car();
Car car3 = new Car();
Car car4 = new Car();
}
}

******実行結果******
コンストメソッド時のsumです0
コンストメソッド時のsumです0
コンストメソッド時のsumです0
コンストメソッド時のsumです0
コンスト時のsumです1
コンスト時のsumです2
コンスト時のsumです3
コンスト時のsumです4

&&と&は注意

&&とは注意

&&は左がfalseだったらfalseです。

2010年7月14日水曜日

インスタンス変数、クラスメソッド

class Car{

private int a;
private douvle b;

public Car(){
}
public void sCar(int c, double d){
a = c;
b = d;
}
}

*a,bはオブジェクトに関する物なので、インスタンス変数と呼び、
sCar()メソッドはインスタンスメソッドと呼びます。
オブジェクト作成されアクセスできるもの、

コンストラクターに修飾子を付ける

private Car(){}
public Car(int n,double b) {}

privateは外から呼び出せません、
public Car()を呼び出し、this();で呼び出すなどします。

コンストラクターのオーバーロード

コンストラクターもメソッドのオーバーロードと同じように再定義できます。
その時も、引数の数、型が同じ物を定義する事はできません。





コンストラクタの先頭でthis();を記述すると、引数の無いコンストラクタの処理ができます。
また、this(333,333);で引数2つのコンストラクタを呼び出す事が出来ます。

エクセルの表示画面をjpg保存

①エクセルをアクティブウインドー

②Altキー +   PrintScreen でクリップボード

③ペイントソフトにCtrl  + V で貼り付け

④表示したい部分を選択ツールで囲みコピー

⑤新規作成で貼り付けしてキャンパスサイズを調整

⑥名前を付けて保存、拡張子をJpg

⑦出来上がり

2010年7月13日火曜日

メンバーへのアクセス制限等

■メンバーへのアクセス制限
private
public
でカプセルかを行うと、フィールドに誤ったアクセスの確立が減ります。

privateメンバのフィールドにアクセスするには、
publicメンバーのメソッドを呼び出します


■メソッドのオーバーロード「再定義」

メソッドのオーバーロード時はメソッドの型や個数を変えておく。
似たような処理で変数の処理が1つだけ変更時など使う、


■コンストラクターの基本
1:コンストラクターはクラスなと同じにする必要があります。
2:コンストラクターはクラスのオブジェクトが呼び出された時に処理されます。



class Sample
{
private int num;
private int gas;

/*コンストラクター部分*/
public Sample()
{
num = 9;
gas = 29;
System.out.println(num);
System.out.println(gas);
}

}
class Sample13
{
public static void main(String args[])
{
/*コンストラクタの呼び出し実行*/
Sample sam1 = new Sample();
}
}
*フィールの値にはコンストラクタの場合、デフォルトで指定してあるものがあります。

クラスとはフィールド・メソッド

class MyPoint
{
/*フィールドです*/
int x = 0;
int y = 0;
    /*戻り値の無いメソッド*/
void setX(int n)
{
x = n;
}

void setY(int m)
{
y = m;
}
    /*戻り値のあるメソッドです*/
int getX()
{
System.out.println("int X は");
return x;
}

int getY()
{
System.out.println("int Y は");
return y;
}
}
class Sample11
{
public static void main(String args[])
{
MyPoint myp = new MyPoint();
        /*戻り値の無いメソッドに引数を渡しています*/
myp.setX(10);
myp.setY(22);
        /*戻り値のあるメソッドから引数を受け取っています*/
int a = myp.getX();
System.out.println("aは" + a + "です");
int b = myp.getY();
System.out.println("bは" + b + "です");
}

}

2010年7月12日月曜日

iphoneで最近の面白アプリ

Iphoneを手にして私もハヤ3カ月経ちます。

そんな、Iphone初心者の私が面白いと思った遊び心のあるアプリ紹介します!!

★まず、ベスト1 「集中線」

この人酔っぱらって悪だくみを考えている女性です。



こんな場面で「集中線」アプリで写真を撮ると

こんな感じになります。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓



*なんでもない写真が線を入れただけで、
何か起ころうとしている的な写真になります!!
*この後、実際にこの人暴れだし、周りの人の集中光線を浴びていました(笑い)


★続いて、ベスト2 「FaceFighter」

あまり好きでない上司やいつも小言を言われクソーと思っている人

よい解消方があります。

まず、クソーと思っている人物の写真を用意、



次に「FaceFighter」と言うアプリに取り込みます。

取り込んだ画像です。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


で!!、ブン殴ります!!

すると、こんな感じでボコボコになってしまいます。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


*かなりスッキリするのと、やり過ぎたかなと思う気持ちで

次に会うとき少し優しくなれますよ、

でも、上司や奥さんにバレナイようにPlayして下さいね

配列

■配列の箱の事をelementといいます。
test = new int[5]; でint型を5つ記憶出来ます。
test[0]
test[1]
test[2]
test[3]
test[4]
■int test[];
test[0] = 1;
.
.
.
.となります。

■配列の初期化
int a[] = {80,9,3,87};  と4つの配列要素の初期化

■配列の長さを知る
変数名.length

int a = {4,7,89,5,}
for(int b = 1; b < a.length; b++){
~
}
■多次元配列
int a [][];
a = new int[2][5];で2/5の10個の二次元配列

■2次元配列の初期化
int test[][] = {90,99,0,8,},{5,34,6,43};
test[0][1]は90で、test[1][1]は34になります。

2010年7月9日金曜日

Java なんでも記述

■importの使い方、
クラスでimportしなくてよいクラスもあるので、それの見分けかた。

■swith文でbreakが抜けていると、caseでの条件をすべて処理してしまします。

■比較演算子
&&の場合は、どちらともtrueの場合、
||の場合は、どちらかがtrueの場合、
!の場合は、条件と違う場合、
■条件演算子
char a = (b == 1)? 'a' : 'b';
ともしbが1だったらaが代入されます。それ以外はbが代入されます。

Jreとは

Jreはjavaのプログラムを動かすプラットフォームです。
開発環境が含まれていない物です。

2010年7月8日木曜日

Java演算子

■代入演算子: += 
■シフト演算子:>>:<<:2進数の場合は、2の整数を左へ1ずらすと2倍、2ケタずらすと4倍となります。
■演算子の順位:a+2*5の場合、2*5が先に処理されます。
■演算子の順位:(a+2)*5の場合、(a+2)が先に処理されます。
■同じ順位の演算子:a+b+1の場合、(a+b)+1のように左から処理されます。
■同じ順位の演算子:a=b=1の場合、a=(b=1)のように右から処理される演算子もあります。
■演算子優先順位:System.out.println("1+2は" + 1+2 + "です");だと結果は、「1+2は12」ですと文字列の連結として処理されます。
 同じ順位の演算子:数式の部分は()で囲むとわかりやすいでしょう。
■大きなサイズの型に代入する:
int a = 160;
double b = a;
とサイズの大きな型に代入すると160.0となります。
小←大には処理できません、処理するにはキャスト演算子
■キャスト演算子:int a = (int)b;とすると(int)で型を指定します。
キャスト演算子で小←大の処理の場合、その型で表せない部分は切り捨てとなります。
「精度が落ちている可能性」とエラーが出ます。
■型の異なる演算子だと大きい型に変換してから処理されます。
■同じ型どうしでの演算
int a = 5;
int b = 4;
bouble c = a / b;
だと、結果は1とboubleの型での処理結果は出ません、
boubleの型での処理結果を出したい場合は、少なくとも一方をキャスト演算子しないといけません、
bouble c = (double)a / (double)b;
と記述してください。

comhereは便利です

comhereコムヒアーはデスクTOPなどに作ったファイルを、コマンドプロンプト操作でのディレクトリやファイルへ移動します。