20200602のJavaに関する記事は6件です。

マッスルJava基礎(1日目)

駆け出し脳筋のプログラム日記
学んだことをまとめる

Javaの特徴

  • C/C++を踏襲した文法体型
  • オブジェクト思考言語
  • 静的型言語
    • 変数、引数、戻り値には必ず型を宣言しなければならない!!

Java Virtual Machine(JVM/JavaVM)

Javaのバイナリ形式をそのまま解釈して実行出来る仮想的なマシン
- 各OSでは専用のJavaVMを使うことで共通の実行結果を得る

クラスとは?!

  • 状態・状況や振る舞い・動作をまとめて定義できるプログラムの定義
車クラス 状態・状況 振る舞い・動作
car_character3_wagon.png -車種
-色
-ドアの数
-走る
-曲がる
-下がる
  • クラスの定義の仕方
class クラス名(){
 状態・状況を定義
 振る舞い・動作を定義
}

メソッドとは?!

  • クラスの中の "振る舞い"・"動作" を定義したもの

  • メソッドの定義の仕方

class クラス名(){
 状態・振る舞いを定義

 戻り値の型 メソッド名(引数){
  振る舞い・動作の処理
 }
}
  • メソッドを使う(呼び出す)
    • 呼び出し元がメソッドを呼び出すと、メソッド内の処理が実行されて、呼び出し元に処理結果を返す
  • 引数
    • メソッドのを呼び出す際に、処理に必要な情報を "引数" として渡す
  • 戻り値
    • メソッドの処理が終わると、結果を呼び出し元に返す値を"戻り値"として返す

image.png

mainメソッドの定義

  • mainメソッドとは
    • プログラムを起動した時に実行されるメソッド
    • 定義の仕方は決まっている
public static void main(String[] args){

}

データ型

データの種類 形名 内容 値の範囲
整数型 int
long
byte
32ビット整数
64ビット整数
8ビット整数
省略
省略
省略
実数型 float
double
32ビット単精度実数
64ビット単精度実数
省略
省略
文字型 char 文字1文字 省略
論理型 boolean 2値の論理値 true or false

※Javaでは、整数はint型、実数はdouble型で定義する

変数の定義の仕方

  • Javaの変数
    • Javaの変数は必ず「型定義」が必要
    • 定義した型以外の値を変数に代入することができない
      • これを「静的な型付け」という
型名 変数名 = 初期値;
int a = 10;

フィールドとローカル変数

  • フィールド
    • クラス定義の内部で宣言した変数
  • ローカル変数
    • メソッド定義の内部で宣言した変数
public class sample{
  // フィールド
  String name = "太郎";

  // メソッド
 public void walk(){
  // ローカル変数 
  int age = 20;  
 }
}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

マッスルJava基礎日記(1日目)

駆け出し脳筋のプログラム日記
学んだことをまとめる

Javaの特徴

  • C/C++を踏襲した文法体型
  • オブジェクト思考言語
  • 静的型言語
    • 変数、引数、戻り値には必ず型を宣言しなければならない!!

Java Virtual Machine(JVM/JavaVM)

  • Javaのバイナリ形式をそのまま解釈して実行出来る仮想的なマシン
    • 各OSでは専用のJavaVMを使うことで共通の実行結果を得る

クラスとは?!

  • 状態・状況や振る舞い・動作をまとめて定義できるプログラムの定義
車クラス 状態・状況 振る舞い・動作
car_character3_wagon.png 車種

ドアの数
走る
曲がる
下がる

クラスの定義の仕方

class クラス名(){
 状態・状況を定義
 振る舞い・動作を定義
}

メソッドとは?!

  • クラスの中の "振る舞い"・"動作" を定義したもの

メソッドの定義の仕方

class クラス名(){
 状態・振る舞いを定義

 戻り値の型 メソッド名(引数){
  振る舞い・動作の処理
 }
}
  • メソッドを使う(呼び出す)
    • 呼び出し元がメソッドを呼び出すと、メソッド内の処理が実行されて、呼び出し元に処理結果を返す
  • 引数
    • メソッドのを呼び出す際に、処理に必要な情報を "引数" として渡す
  • 戻り値
    • メソッドの処理が終わると、結果を呼び出し元に返す値を"戻り値"として返す

image.png

mainメソッドの定義

  • mainメソッドとは
    • プログラムを起動した時に実行されるメソッド
    • 定義の仕方は決まっている
public static void main(String[] args){

}

データ型

データの種類 形名 内容 値の範囲
整数型 int
long
byte
32ビット整数
64ビット整数
8ビット整数
省略
省略
省略
実数型 float
double
32ビット単精度実数
64ビット単精度実数
省略
省略
文字型 char 文字1文字 省略
論理型 boolean 2値の論理値 true or false

※Javaでは、整数はint型、実数はdouble型で定義する

変数の定義の仕方

  • Javaの変数
    • Javaの変数は必ず「型定義」が必要
    • 定義した型以外の値を変数に代入することができない
      • これを「静的な型付け」という
型名 変数名 = 初期値;
int a = 10;

フィールドとローカル変数

  • フィールド
    • クラス定義の内部で宣言した変数
  • ローカル変数
    • メソッド定義の内部で宣言した変数
public class sample{
  // フィールド
  String name = "太郎";

  // メソッド
 public void walk(){
  // ローカル変数 
  int age = 20;  
 }
}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Mac]Visual Studio Code(VS Code)にJavaをインストールする

はじめに

今回行った環境は以下の通り

OS:MacOS Catalina(バージョン 10.15.4)
Java:14

Javaのインストール

拡張機能にて「Java Extension Pack」をインストールします。
VS Codeで以下のコマンドを実行し、拡張機能インストール画面を表示します。
「Command + Shift + x」

検索画面にて「java」を入力し、「Java Extension Pack」を選択してインストール
スクリーンショット 2020-06-01 22.06.44.png

インストールした結果、↓の画面が表示された場合は「手動でダウンロード」を選択

スクリーンショット 2020-06-01 22.10.14.png

手動でダウンロードすると、↓インストール完了が表示されます。
スクリーンショット 2020-06-01 22.11.58.png

JDKのインストール

以下のサイトからJDKをダウンロードし、インストール(今回はversion14)
https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
スクリーンショット 2020-06-02 22.10.10.png

Pathを通す

Javaのパスが通ってない場合は、JAVA_HOMEの設定が必要です。
以下のコマンドをターミナルで実行し、現在のJAVA_HOMEを確認しましょう。

/usr/libexec/java_home

実行結果をコピーし、VS Codeの設定画面を開いて「javahome」を検索する。
スクリーンショット 2020-06-02 22.23.30.png

「settings.json で編集」を選択し、以下「java.home」へ貼り付け
スクリーンショット 2020-06-02 22.25.01.png

動作確認

適当なサンプルコードを入力し、デバック実行
スクリーンショット 2020-06-02 22.28.40.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

For文の中にFor文を入れる二重ループについて

最近JavaSilverを学習しているYuheiです。

問題を解いてたら、二重ループについて理解できない部分がありましたので、調べてみました。

結果は下記の通りです。

二重ループとは

別名多重ループとも言い、For文の中に更にFor文を入れて、2つのループにしている状態をいいます。

下記は、九九を表示するためのコードです。

public class KuKu {
    public static void main(String args[]) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= 9; j++) {
                System.out.print(i*j + " ");
            }
            System.out.println();
        }
    }
}


これを実行すると、結果は下記のようになります。

1  2  3  4  5  6  7  8  9 
2  4  6  8 10 12 14 16 18 
3  6  9 12 15 18 21 24 27 
4  8 12 16 20 24 28 32 36 
5 10 15 20 25 30 35 40 45 
6 12 18 24 30 36 42 48 54 
7 14 21 28 35 42 49 56 63 
8 16 24 32 40 48 56 64 72 
9 18 27 36 45 54 63 72 81 

外側のループ:九九の段が、「1の段、2の段、・・・、5の段」と増えながら繰り返されます。

内側のループ:各段(外側のループ(i))の中で掛ける数が「×1、×2、・・・、×9」と増えながら繰り返されます。

これらをまとめると、普通の九九と同じく「1×1=1、1×2=2、・・・、5×9=45」の順で処理が行われています。

多重ループの基本事項になります。

フローチャートやプログラムで多重ループを見た時、処理のイメージを浮かべることができればOKです。

多重ループの理解は”慣れ”なので、多重ループの問題を何回も解いてみることが重要です。

以上です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Java] 天パの人による適当な入門 Java編 その1 (print,println)

天パの人による適当な入門 について

学校でプログラミングの授業があるけど「わからない・苦手だ」という人や、とりあえずコードが書けるようになりたい人向けです。細かいことはあとでちゃんとやればいいんです。
なので用語もちゃんとした言葉づかいじゃないところもあります。フィーリングに頼る部分もあります。
このシリーズでプログラミングがある程度できるようになったら、本や大学などで先生が配布した授業資料などにしっかり目を通してください。このシリーズの知識だけだとそのうち限界がくると思います。

みなくてもなんとなくわかっていくとは思いますが、結構基本的かつ大切なことを書いておきました。一応目を通していただきたいです。
https://qiita.com/Shodai-Kurasaki/items/b0137cf03ddd75485a6d

本編

文字とかを表示する。

1-1

何も言わず次のサンプルコードを実行してください。ファイル名はSample1、拡張子は.java (今後ずっと)で。

Sample1.java
class Sample1
{
        public static void main(String[] args)
        {
            System.out.println("Hello World!");
        }
}

結果は

Hello World!

と表示されます。
では早速、

System.out.println("Hello World!");

に注目してください。
こいつが文字を表示してくれているやつです。よく使います。
次に、これとよく似たものを使います。
次のサンプルコードを実行してみてください。ファイル名はSample2で。

Sample2.java
class Sample2
{
        public static void main(String[] args)
        {
            System.out.print("abc");
            System.out.println("def");
            System.out.print("123");
        }
}

"System.out.print"のに"ln"がついてないやつがいますね。結果を見てみましょう。

abcdef
123

なんとなくわかりましたか?
"System.out.print"で文字を表示したあとは改行されてないけど、"ln"がついてるほうで表示した文字の後は改行されています。
つまり
"System.out.print"は、本当に文字を表示するだけ
"System.out.println"は、文字を表示した後に改行する

ということです。

ではここで確認問題1-1
次のプログラムの実行結果は?(publicなんちゃらの中のみ)

System.out.println("私は天才だ");
System.out.print("。ほんまやで");
System.out.println("関係ないけ");
System.out.println("どあしたひま?");

一応答えは最後の方に書いておきますが、わからなければ実行してみてください。

1-2

( )の中について
System.out.println(ここ); にさっきは"このちょんちょん"で文をはさんでいました。
でも、表示したいものによっては" "がいらなかったりします。次のコードを実行してみてください。

Sample3.java
class Sample3
{
        public static void main(String[] args)
        {
            // 半角のスラッシュを左のように打つと、その行の残りの部分は実行のときに影響しない
            //メモとして使える

            System.out.println("1+1");  //1番 1+1
            System.out.println(1+1);    //2番 2

            System.out.println("a");    //a
            System.out.println('a');    //a
        }
}

まずは上の二つ。数字は" "で囲まなくても表示できます。ただし、1+1と表示したければ1番のように書かなければなりません。Javaは" "で囲まれていると、そこは文字だと判断します。つまり1番の書き方では、1+1という文字として認識されるということです。逆に、2番の書き方だと、1+1は数字(数式)としてとらえられます。なので計算結果が表示されます。
次に下の二つ。数字(数式)以外なら基本文字は" "で囲まないといけないのですが、1文字だけの時は特別に' 'でも問題なくなります。そうなんだ~ぐらいに思っておいてください。
確認問題1-2はありません。

1-3

1-2までに書いておいた知識だけで 1+1=2 と表示するには

System.out.print("1+1=");
System.out.print(1+1);

と書かなければなりませんでした。
とここでSample4です。とりあえずうつして実行してみてください。
実行した結果はそれぞれの行の横に書いています。

Sample4.java
class Sample4      //もうわかっているかもしれませんが、classの横にはファイル名を書いてください
{
        public static void main(String[] args)
        {
            System.out.println("1+1=" + 1+1);               //1+1=11
            System.out.println("1+1=" + (1+1));             //1+1=2
            System.out.println("あいう" + "1+1" +"えお");   //あいう1+1えお
        }
}

そうです。文字(" "でかこまれてるやつ)と数字を + でつなぐと数字が文字扱いになります。ただし、( )だけで囲まれてる数式はしっかり計算後のものが文字となり、表示されます。なんとなくわかれば今後使ううちに理解できると思います。

確認問題1-3
次のプログラムの実行結果は?(publicなんちゃらの中のみ)

System.out.println((20+4) + "3" + 2 + "は"+ "29" + "です。");

一応答えは最後に書いておきますが、わからなければ実行してみてください。

練習問題

次のような実行結果になるプログラムを完成させよ。
また、非効率極まりないですが、501は計算で出してください。

結果
おはようございます。 出席番号1番の方は501号室まできてください。

これの答えは準備しません。何とかしてください。できます。多分きっとmaybe。

確認問題の答え

1-1

私は天才だ
。ほんまやで関係ないけ
どあしたひま?

1-3

2432は29です。

補足
今回、もし問題が ((20+4) + 3 + "2") だったら、足し算は前から順に行われるので (27+"2") となり最終的には 272と表示されていました。

その1は終わりです。お疲れさまでした。

もし間違っている点などございましたらご指摘よろしくお願いします。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Java を使ってEclipseのコンソールにカレンダーを表示させてみた。

あくまでメモ用として。
・cal.set(int year,int month-1,1)するときに月が「0から11」⇒「1月から12月」にセットされることを忘れがちだった。
・cal.getActualMaximum(Calendar.DATE)でxxxx年xx月は何日あるのかを知ることができる。
・曜日と日付は配列を使って格納した。

image.png

・カレンダーを作って出力するクラス
 
package foo;
import java.util.Calendar;
public class Calmaker {

public void Makecal(int year,int month){
Calendar cal = Calendar.getInstance();
//int weekday = cal.get(Calendar.DAY_OF_WEEK);
//System.out.println(weekday);

int days[][] = new int[6][7];

System.out.println("日 月 火 水 木 金 土");
int row = 0;

//一日から最終日までループ
for (int i = 1; i <= cal.getActualMaximum(Calendar.DATE); i++) {
    //日付けをオブジェクトに設定
    cal.clear();
    cal.set(year, month-1, i); //月は0から11で指定されているので、-1してあげる。
    int weekday = cal.get(Calendar.DAY_OF_WEEK);

    //日付を拡張
    days[row][weekday-1] = i ;
    //System.out.println(days[row][weekday-1]);

    if(weekday % 7 ==0) {
        row ++;
    }
}

//出力
    for (int k = 0; k < 6; k++) {
        for (int j = 0; j < 7; j++) {

            String res = String.valueOf(days[k][j]);

            if(days[k][j]==0) {
                System.out.print("   ");
            }else if(days[k][j] < 10) {
                    System.out.print(" " + res + " ");

            }else if(days[k][j] >= 10) {
                res = res+" ";
                System.out.print(res);
            }
            if(j == 6) {
                System.out.println("\r\n");
            }
        }
    }
}

}
・メインクラス

package foo;

import java.util.Scanner;

public class Makecal {

public static void main(String[] args) {
    // TODO 自動生成されたメソッド・スタブ
    System.out.println("西暦を4桁で入力してください");
    Scanner sc1 = new Scanner(System.in);
    System.out.println("月を1から12で入力してください");
    Scanner sc2 = new Scanner(System.in);

    int year  = sc1.nextInt();
    int month = sc2.nextInt();
    System.out.println("西暦"+year+"年" + month +"月");
    System.out.println("");

    Calmaker clm = new Calmaker();
    clm.Makecal(year,month);
}

}

image.png

終わり。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む