見出し画像

iT-14-[Java勉強]

これまでの復習💧

Javaを学ぶと収入が上がる、他言語スキルUP
Java習得の3ステップは理解、定着、実践
Javaとは⇨Sun Microsystem社(現Oracle社)が1995年に発表・コンピュータにさせたい処理の順番を書き記したものをソース、プログラムという。
メリットは⇨別のOS上でも動かすことができる。また、実行可能ファイルが一つでいい。
JVM(Java Virtual Machine→仮想マシン)のおかげ。
JDK(Java Development Kit)は、これらのJVMを含め、コンパイラやその他便利をまとめたツール。

配列

配列は、→newを使って
生成時にデフォルト初期値が設定する。

データ型[] 配列名 = new データ型[要素数]

int[] score = new int[3];
score[0] = 80;
// scoreの0番目に、80を代入してください。 添字は、0からスタートすることに注意

配列の初期化

データ型[] 配列名 = { 値1, 値2, ・・・・}

配列.length で、配列の要素数をGet
class Array {
  public static void main(String args[]) {
    int[] score = new int[3]
    score[0] = 80;
    score[1] = 100;
    score[2] = 70;

    String[] name = {"高木", "西山", "小梅"};

    System.out.println(name[0] + "さん:" + score[0] + "点");
    System.out.println(name[1] + "さん:" + score[1] + "点");
    System.out.println(name[2] + "さん:" + score[2] + "点");

    System.out.println("受験者数:" + score.length + "人です。");

// score.lengthをすることで、その要素の数(要素数)を利用することができる!!いいね。
  } 
}

多次元配列

・配列を複数つくれる。学校のロッカーだ。

int[][] allScore = new int[2][3];
// 2行3列の配列を作ることができる。

・添字の書き方が大切。まず、配列の最初は1番目ではなく、0番目

allScore[0]⇨    [0][0],  [0][1],  [0][2]の3つの配列がある。
allScore[1]⇨     [1][0],  [1][1],  [1][2]の3つの配列がある。

allScore.lengthは、どうなるか。
これは、allScoreの要素数を出力することになる。
つまり、allScoreの要素は、allScore[0],allScore[1]の2つなので、2と出力。

allScore[0].lengthは、どうなるか。
これは、allScore[0]の要素数を出力することになる。

allScore[0]⇨    [0][0],  [0][1],  [0][2]であるので、
3と出力されることになる。

class MultiArray{
  public static void main(String[] args){
    int[][] allScore = new int[2][3];
    allScore[0][0] = 80;
    allScore[0][1] = 100;
    allScore[0][2] = 75;
    allScore[1][0] = 85;
    allScore[1][1] = 95;
    allScore[1][2] = 80;
    
    // 多次元配列の初期化
    // int[][] allScore = { {10, 20, 30}, {40, 50, 60} };

    System.out.println(allScore[0][0] + "点");
    System.out.println(allScore[0][1] + "点");
    System.out.println(allScore[0][2] + "点");
    System.out.println(allScore[1][0] + "点");
    System.out.println(allScore[1][1] + "点");
    System.out.println(allScore[1][2] + "点");
    
    System.out.println("allScore.length:" + allScore.length);
    System.out.println("allScore[0].length:" + allScore[0].length);
  }
}

勉強🔥

演算子

Y = 12+20/4;
という式があれば、まず / ⇨ + ⇨ =へと。

算術演算子

//割り算
7 / 23
//あまりの数
7 % 21

代入、複合代入演算子

//a = a + bと同じ。
a += b 
//aにbを加えて、aに再度代入する。

インクリメント、デクリメント演算子

//a = a + 1;と同じ。
a ++;
a --;

class Operator {
  public static void main(String[] args){
    //コマンドラインから入力した文字列型を、int aとして宣言する
    int a = Integer.parseInt(args[0]);
    int b = Integer.parseInt(args[1]);

    System.out.println("a =" + a + "b =" + b );
    System.out.println("a + b =" + (a + b));
    System.out.println("a - b =" + (a - b));
    System.out.println("a / b =" + (a / b));
    System.out.println("a % b =" + (a % b));
    System.out.println("a >= 0 :" + (a >= 0);
    System.out.println("(a >= 0) && (b >= 0):" + ((a >= 0)&&(b >= 0));
    
  }
}

文字列データを、四則演算ができるint型に変換する必要がある。

これを実行するために必要なのが、

Integer.parseInt(  )

//()の中に文字列のデータを渡すと、int型に変換してくれる優れものだ!

$ java Oparator 7 2
と入力するなどして、出力する。

関係演算子
結果は、必ずtrueかfalse

論理演算子
(a >= 0)&& (b >= 0)
→&&は「かつ」を表す。
→||は「もしくは」を表す。

Integer.parseInt()
//文字列型をint型に変換

int a = Integer.parseInt(args[0]);
//コマンドラインで入力した数を、上のargs[0]に代入することになる。

parseInt() 関数
文字列の引数を解析し、指定された基数 (数学的記数法の底) の整数値を返す。

基本データの型変換

数値同士の演算や代入をする時に、データ型の変換が
自動で行われる。:表現できる値の幅が 小 →  大
キャストで明示する。
:表現できる値の幅が 大 →  小

表現の幅が広い順〜狭い(自動で)
double, float, long, int, short, byte

int型は32bitの整数のデータ型である。
→32桁の0と1が入る箱(変数)ができる。

int → ▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️

double型は64bitの浮動小数点数である。
→int型の2倍の大きさの箱(変数)ができることになる。

double → ▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️▫️


つまり、double型の箱の大きさ  >  int型の箱の大きさ

よって、

d = i;
//OK OK OK OK!!

は可能である。なぜなら、64bitの箱が大きいので、iを代入する場合は自動で型変換できるからである。

しかし、大きい箱を小さな箱にむりやり入れる(代入する)ためには、
キャストというものが必要だ。

箱にむりやり入れるための キャスト = てこ 
みたいなものと考えて良い。

i = (int)d;
//OK OK OK OK!!

キャストは、()内に、
変換後のデータ型の名前を入れる必要がある。

→つまり、上のコードだと、int型に変換をしたいので、()の中にはintをいれる必要がある。変換後ということが忘れないようにしよう・・。

そもそも、これをしないと、コンパイルの時点でエラーが出るので、直す必要がある。

double, float, long, int, short, byte

例:少数を、整数に変えたい。
1980(ポロシャツの値段) x 0.08(消費税として) = 合計を出したい。
自分なりに考えたコード

class FukuKau {
  public static void main(String[] args){
    
    int uniform = 1980;
    double percent = 0.08;

    System.out.println("服の値段が1着" + uniform + "円です。");
    System.out.println("消費税が0.08%なので、合計金額は、" + (uniform * percent) + "円です。");
    
  }
}

→これだと、1980円のポロシャツがすんごく安くなってしまうなw w
→つまり、1倍に、0.08倍を加算する処理を書かなかった。

後に参考にしたコード

class FukuKau {
  public static void main(String[] args){
    
    int price = Integer.parseInt(args[0]);
    double rate = 0.08;
    int amount;

    amount = (int)(price * (1 + rate))
    System.out.println("税込金額は、" + amount + "円です。");
    
  }
}

なるほど!!
以下は、自分なりの解説です。

class FukuKau {
  public static void main(String[] args){
    
    //服のねだんを入力したらそれをargs[0]が引数となりpriceに代入してくれる。
    int price = Integer.parseInt(args[0]);
        
        //0.08は、浮動小数点数としてdoubleで宣言をし、値を代入しておく。
    double rate = 0.08;

        //amountという整数型を宣言しておく。
    int amount;

        /*amountに、税込金額の式を代入する。このとき、double型が64bit,int型が32bitなので、小きな
            箱に、大きな箱をむりやり入れることになる。そのため、てこ=キャストを使う必要がある。
            よって、(int)で変換後のデータ型を入れamountに代入している。  */
            
    amount = (int)(price * (1 + rate))
    System.out.println("税込金額は、" + amount + "円です。");
    
  }
}

構造化プログラミング

以下を組み合わせてプログラムをかくことを意識して書くと、プログラムがわかりやすくなる。

①順次進行

→|処理|→|処理|→|処理|→|処理|→|処理|→|処理|→|処理|→|処理|→|処理|→・・

②分岐
→|条件|→true→|処理|→
  ↓                            ↑
   |→ false→|処理|→ |

③繰り返し
→|条件|→|処理|→|更新!|→|条件|→|処理|→|更新!|→

If文

if (条件式) {
  処理1
  } else {
   処理2
    }

・どちらかの処理しか実行されない。
・else以降は、省略できる。
・処理が1つのときは、{}は書かなくて良い。

ポロシャツを3000円以上かうと、ディスカウントされるプログラムを作成してみる。
自分のコード

class FukuKau2{
  public static void main(String[] args){
  
    int price = Integer.parseInt(args[0]);
    double rate = 0.08;
    int discount, amount;

        amount = (int)(price * (1 + rate));

    if(price >= 3000){
       discount = 300;
       System.out.println("割引されるので、金額は" + (amount - discount) + "円");
    
    } else {
       
       System.out.println("割引はないので、" + amount + "円");
    
    }
  }
}

参考コード

class FukuKau2{
  public static void main(String[] args){
  
    int price = Integer.parseInt(args[0]);
    double rate = 0.10;
    int discount, amount;

    if(price >= 3000){
       discount = 300;    
    } else {
       discount = 0;    
    }

        amount = (int)((price-discount) * (1 + rate));
    System.out.println("値引金額:" + discount + "円");
    System.out.println("税込金額:" + amount + "円");

  }
}
    if(price >= 3000){
       discount = 300;    
    } else {
       discount = 0;    
    }

これによって、discount (整数型)を宣言し、そのdiscountを使って、
amountに代入していく。
そして、そのamountをSystem.out・・・で表示できるようにした。

ここまで!

少しずつですが、投稿をしております。 noteで誰かのためになる記事を書いています。 よろしくおねがいします。