1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaとPythonを基礎から学びたい私のためのAdvent Calendar 2024

Day 2

Javaを基礎から学ぶその2 条件分岐や繰り返しの処理

Last updated at Posted at 2024-12-01

この記事はJavaとPythonを基礎から学びたい私のための Advent Calendar 2024の2日目の記事です
C#がちょっとできるJava初心者の記事です。型の種類についての確認や、条件分岐と繰り返しについて学びます。


型の種類

intとかStringとかよく使っています。単に型と呼ばれることもあれば、「データ型」と呼ばれることもあるそうです。
調べた結果、大量にあったので載せておきます
〇文字系
・char
・String
〇整数
・short
・byte
・int
・long
〇小数
・float
・double
〇条件
・boolean
こんな感じのようです。C#では条件のbooleanをboolとしてあらわしていたり整数がもっと多かったりする(ulongとか)のですが、Javaではこれだけ抑えておけばいいようです。楽です。
私があまり使ったことのなかったchar型とshort型の特徴について記しておきます。

char型

char型には一文字しか入れられないそうです。まずは一文字入れて使ってみます。

public class TEST{
 public static void main(String[] args){
    char A="A";
    System.out.println(A);
 }
}

これで実行するとエラーが出ました。
image.png
なんと、String型では文字列を二重引用符(")で囲むのに対して、char型ではただの引用符(')で囲まないといけないそうです。ちなみに、String型をただの引用符で囲んでもエラーが出てしまいました。これからもうっかり間違えそう。
正しく動いた方を下に載せておきます。

public class TEST{
 public static void main(String[] args){
	char A='A';

	System.out.println(A);

 }
}

これで動きます。ここで

もう一つの疑問

が浮かびました。char型にうっかり2文字以上入れた場合です。
image.png
こんな感じで、2文字入れると
image.png
3つもエラーが出てしまいました。
こんな感じで、char型はちょっと使いにくいです。が、きっといつか活躍してくれると思います。

short型

見るからに短そうな名前の型ですが、-32768~32767の65536個も入るそうです。調べた限りだとbyte型が-128~127までの256しか入らないそうなので2番目に多いかと思われます。
使いかたはint型とほとんど同じでした。

public class TEST{
 public static void main(String[] args){
	short A=12020;
	System.out.println(A); 
 }
}

これでちゃんとAの中身の12020が出力されます。ところで、数字が0から始まっていた場合、挙動がおかしくなってしまいました。

short A=012020;

と、数字の左から1番目を0とすると5136とかいう謎の数字を返してきました。int型でも同じ数を返してきます。何故か8進数になっているようです。ちなみに0で埋めたいときは

int A=12020;
	 System.out.println(String.format("%06d", A)); 

これで012020と出力されるようです。

条件分岐

条件の結果によって処理を変えるやつです。ifとかswitchとか。Javaの処理ではC#と何か違う点があるか調べます。

if文

動いたものを載せます。
例)Aが0の時に"A"という文字を出力

public class Hello{
 public static void main(String[] args){
  int A=0;
  if(A==0)
  {
  System.out.println("0");
  }
 }
}

Javaでもこんな感じで動きました。3行目のint A=0;の0の部分を変えれば、条件式は成り立たなくなります。C#と何ら変わりません。

elseの処理

条件式に当てはまらないときの処理はC#同様elseを使って処理をすればいいようです。

if(A==0)
  {
  System.out.println("0");
  }else
  {
  System.out.println("not 0");
  }

Aの値を変えれば、not 0が出力されます。やっぱり変わらん。

else if

便利なことに、一つ目の条件式に当てはまらない場合に二つ目の条件式を設定できるようです。
上のelseのように使うことでいけます。

if(A==0)
  {
  System.out.println("0");
  }else if(A==1)
  {
  System.out.println("1");
  }

Aが1の時"1"が出力されます。if系はC#と比べて特に違いないみたいです。ちなみにelseやelse ifはifの真下に置かないとエラーが出ます。image.png
こんな感じです。ifとelse系との間に余計なものを入れないように気を付けます。

switch

複数の条件分岐を一度に書くことができる便利な奴です。私もC#でよく使っています。Javaにもちゃんと存在しています。
例えばAの中身が0~2のどれかを知るためのコードがこんな感じです。

 switch(A){
    case 0:
     System.out.println("Aは0");
    break;
    case 1:
     System.out.println("Aは1");
    break;
    case 2:
     System.out.println("Aは2");
    break;
    }

caseとbreakは必ずしも同数でなければならないといったことはないようです。例えばcase 0に対応するbreakを消すと、A=0の時にcase 0だけでなく、breakがないことでその下のcase 1の中身も一緒に実行されました。

繰り返し

繰り返しにもforとかwhileとか、いろいろあります。実際に調べてみた結果、そこまでC#と違うようなものは見当たりませんでした。

for文

for(int i=0;i<20;i++){
 	System.out.println(i);
	}

iが0から20になるまでの間、iの中身を出すだけの文です。iはfor文の{}の中でのみ使用できます。

拡張for文

int[] A={0,2,3,5,8};
	for(int B:A){
	System.out.println(B);
	}

配列については明日勉強しようと思っているので詳しく確認しません。
Aという配列の中身をBにしてひとつづつ出力してるっぽいです。

while文

自分はあまり使ってないけど、結構便利です。

int i=1;
	while(i<4){
	System.out.println(i);
	i++;
	
	}

for文と違うのは、intをwhile文の外から変更できる点です。使い勝手がいいです。
### do while文

int i=10;
	do
	{System.out.println(i);
	i--;
	}while(i>0);

初めて使いました。条件式が最後に書かれており、whileの後に;が付いているのが特徴的です。ちなみに上を実行すると10から1までひとつづつ出してくれます。

まとめ

繰り返しも条件分岐も、ちゃんとJavaに存在していた。char型は使える場が限られている。
参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?