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 / 2 → 3
//あまりの数
7 % 2 → 1
代入、複合代入演算子
//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で誰かのためになる記事を書いています。 よろしくおねがいします。