JAVA関連のことを調べてみた

JAVA関連のことを調べてみた

【Java】インタフェースの実装を覚える

インタフェースは抽象クラスと同じく抽象メソッドを扱いますが、この2つは何が違うのか、覚えるための自分用メモです。

# インタフェースとは?
インタフェースは、抽象クラスと違って継承のためのフィールド変数(定数は可)やコンストラクタ、具象メソッド(Java8から“`default“`メソッドは可)は記述せず、抽象メソッドのみを記述します。
(メソッドに自動で“`public abstract“`が付きます。)
“`java:Animal.java
public interface Animal {
// 挨拶する
void hello();
// 話す
void talk();
}
“`
# ポリモーフィズムの情報隠蔽を実現してみる
Javaのポリモーフィズムの実現を維持するための「情報隠蔽」では、実際に使われるクラスを非公開(使うクラスから隠蔽する)にし、公開部分をインタフェースで記述します。
## パッケージを宣言する
情報隠蔽を実現するには、インタフェース、インタフェースを実装したクラス、実装したクラスをインスタンス化するクラスを含むパ

元記事を表示

Javaで「多次元配列を作成する」の動作を確認してみた

# 概要

Javaで「多次元配列を作成する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/array/index7.html

# 実装

以下のファイルを作成しました。
“`JSample7_1.java
class JSample7_1{
public static void main(String[] args){
int[][] num = new int[2][];

num[0] = new int[3];
num[0][0] = 78;
num[0][1] = 64;
num[0][2] = 59;

num[1] = new int[3];
num[1][0] = 58;
num[1][1] = 92;
num[1][2] = 82;

for (int i = 0; i < 2; i++){ for (int j = 0; j < 3; j++){ System.out

元記事を表示

JavaSilver合格しました。

# はじめに
今まで、C言語などを学んで来て、「オブジェクト指向プログラミング」について触れてくることがありませんでした。そこで、大規模システム開発でも使われるJavaを学習しようと思い始めました。

オブジェクト指向 : 未学習
プログラミング経験 : あり
勉強時間 : 約40時間
![スクリーンショット 2024-06-15 1.58.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788663/8b460752-6345-afeb-0e0e-a9493e704844.png)

# 使用した参考書
あまり覚えていませんが、ラムダ式などの深い内容はあまり載っていなかったような….
![スクリーンショット 2024-06-15 1.54.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788663/471cfc8b-3768-9497-fba7-a6e49c231a56.png)
引用 :https

元記事を表示

SpringBootTest + JUnit5のbeforeAllでDataSourceをinjectionしてテスト用DB初期化

# 解説

下記ドキュメントにあるように、“`@ExtendWith(SpringExtension.class)“`(“`@SpringBootTest“`はこれを含む)とJUnit 5を組み合わせる場合、テストメソッドやライフサイクルコールバックにinjectionが可能となっている。

> Dependency injection for test constructors, test methods, and test lifecycle callback methods. ? See Dependency Injection with the SpringExtension for further details.
>
> https://docs.spring.io/spring-framework/reference/testing/testcontext-framework/support-classes.html#testcontext-junit-jupiter-extension より抜粋

> Specifically, the “`SpringEx

元記事を表示

【Java】言語未経験者が2ヶ月でJava Silver SE11に合格した話

# ■はじめに
Java Gold SE11取得を決意したついこの頃、そういえばと思い立って言語未経験から2ヶ月でJava Silver SE11を取得した時の勉強方法をまとめてみました。

# ■この記事の対象者
・これからJavaの学習を始める方
・Java Silverの資格取得を考えている方

# ■もくじ
**1.資格取得を決意した理由**
**2.試験日までのスケジュール**
**3.学習ロードマップ**
**4.まとめ**

# 1.資格取得を決意した理由
元々開発志望で会社にアピールするためにJava Silverの資格取得を決意しました。
なんでJavaなの?といった疑問には、やはりJavaの案件が聞いていた中で多かったからという単純な理由でしかありません。
そもそも言語にこだわりはなく、開発をやりたかったから取っ掛かりはなんでも良かったというのもある。

# 2.試験日までのスケジュール
**学習期間:2ヶ月**
※仕事をしながらだったので1日の勉強時間は大体1~2時間程度、合計で多分120時間ぐらい

**学習内容:**
・1日目
勉強方法リサーチ&試験日の確定

元記事を表示

グラフから差枚数計算するサイトを作ってみた

https://diffnumcal.onrender.com/home

# 使用技術
Java(練習のために使用)
SpringBoot (練習のために使用)
Javascript
HTML
CSS
# スロットの説明
### 差枚数と設定
スロットマシンは、メダルを入れてレバーを叩く(もしくはボタンを押す)と、リールが回転し、絵柄が揃うことでメダルを獲得できるゲームです。

差枚数とは、その名の通り、投入したメダルの枚数から払い出されたメダルの枚数を引いた値のことです。スロット台の上にあるディスプレイには、この差枚数の増減がグラフで表示されます。

設定とは、スロットマシンの当選確率を調整する数値のことです。設定は1から6まであり、数字が大きくなるほど、大当たりであるBIGボーナスやREGボーナスの当選確率が高くなります。
(架空のスロット設定表。)
![スクリーンショット 2024-05-10 1.34.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3788663/e83b6800-800

元記事を表示

Intellij IDEAとDockerでAmazon corretto17 open jdkでの開発環境を作ってみた

## はじめに
大学の課題でeclipse+amazon corretto17という開発環境の指定が入ったjava開発をやらなきゃいけなくなりました。
IntelliJで慣れてしまっている自分にeclipse(しかも大学のLinuxに入っている英語版)での開発は地獄だったので、いっそのこと自前の開発環境を最近習ったdockerを使って構築してみようと思った次第です。
仮想環境での開発については初心者すぎる筆者が行き当たりばったりで環境構築したので間違いだらけだと思います。積極的にコメント等で指摘していただけると助かります。

## Amazon corretto 17 でDev Containerを作成
IntelliJを今回使うPC(今年新調したばかり)に入れるのが初めてだったので、以下のようなwelcome画面から始めることができました。すでにプロジェクトを作成したことがある場合にはどうすればいいか、有識者の方教えていただけますと幸いです。

以下の画面でDev Containerを選択し、新規Dev Container作成。

![image.png](https://qiita

元記事を表示

Singletonパターンにご注意を

## Singletonパターンとは
Singleton(シングルトン)パターンは多くの問題の解決に役立つパターンです。

このパターンでは、クラスのインスタンスは必ず1つしか生成されません。そのインスタンスは使用前に必ず初期化され、シングルトンをグローバルアクセスポイントとすることで、設計をシンプルにできます。

こう書いていくと良いことずくめのようですが、この「古典的な」デザインパターンに何か短所はあるのでしょうか。

## Singletonにご注意を
実はたくさんあります。

確かにシングルトンパターンは魅力的ですが、実はこのパターンには利点よりも弊害の方が多いと言えます。
まずテストの妨げになります。そして保守性の点でも不利です。残念ながらその事実は広く知られているとは言えないため、多くのプログラマを焚き付けているのです。つい使いたい誘惑にかられますが、その誘惑に抵抗しなくてはなりません。
### 具体的な問題例
– **「必要なインスタンスは1つだけ」という要望は、多くの場合推測にすぎない**

アプリケーションの設計段階では「インスタンスは絶対に1つしかいらないだろう

元記事を表示

【Java】抽象クラスの継承を覚える

通常のクラスの継承に対して、抽象クラスの継承は何が違うのか、覚えるための自分用メモです。

# 抽象クラスとは?
抽象クラスでは、一部のメソッドを抽象メソッド(“`abstract“`)として記述することで、継承したサブクラスでのオーバーライド(実装)を強制します。
“`java:Animal.java
public abstract class Animal {
private String name;
public Animal(String name) {
this.setName(name);
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
// 話す
public abstract void talk();
}
“`
以下のようにオーバーライドすれば問題ありませんが、オーバーライドしなかった場合

元記事を表示

Javaで「配列の長さを取得する(length)」の動作を確認してみた

# 概要

Javaで「配列の長さを取得する(length)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/array/index6.html

# 実装

以下のファイルを作成しました。
“`JSample6_1.java
class JSample6_1{
public static void main(String[] args){
double[] num = new double[3];

num[0] = 5.24;
num[1] = 8.0;
num[2] = 12.375;

for (int i = 0; i < num.length; i++){ System.out.println("num[" + i + "] = " + num[i]); } } } ``` 以下のコマンドを実行しました。 ``` $ javac JSample6_1.java $ java JSample6_1 num[0] = 5.24

元記事を表示

Spring Thymeleaf type=”date”で過去の日付を選択できないようにする方法 備忘録#3

# type=”date”で、過去の日付を選択できないようにする方法

### 初めに

今回は、WEBサイト開発の中で、`「予約時に過去の日付は選択させたくない!!」`と思い調べても見つからず、周囲の賢い方に教えてもらったので、記録として残したいと思います。

###画像イメージ

![スクリーンショット 2024-06-13 22.43.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/e0b78fa3-ae4e-0d72-2646-33895becd1df.png)

↑このように、カレンダーで選択画面が表示され、過去の日付を押そうとすると現在の日付になります。
※Windowsでは、過去の日付が全てグレー色になって、選択できないようになります。

:::note info
このように、日付を選択させないやり方は、thymeleafの機能だけで行うことができます!
:::

###HTML

“`diff_html

元記事を表示

Thymeleaf式の参照プレフィックス

JavaのフレームワークであるSpringBootを用いてアプリ開発について学習している過程で、HTMLをテンプレートを動的に生成するテンプレートエンジンであるThymeleafの参照プレフィックスをいくつか使用したので、備忘録として記録したいと思います。
## 参照プレフィックスとは
参照プレフィックスはテンプレート内で特定の種類のデータや機能を示すために使われる記号のことです。この記号を使うことで、参照プレフィックスの後に続く要素が特定のデータや機能を参照することができます。
## 具体的な参照プレフィックスの例
今回は学習の過程で使用した3つの参照プレフィックスについて説明します。
## ‘@’:URLや静的リソースの参照
‘@’プレフィックスはURLや静的リソースを参照するために使用します。下記のその2通りについて説明します。
### URLの生成
下記は’@’を用いてURLを生成した例です。例では’@’プレフィックスを用いることで、’@{/home}’がテンプレート処理時に’/home’というURLに変換され、該当部をクリックすると生成したURLに遷移できるようになっています

元記事を表示

Java switch文のアロー演算子を用いた構文ついて

## switch文でのアロー構文
switch文でアロー演算子を用いたコードを初めて見たのでメモとして残しておく。

アロー演算子「->」を使うことでswitch文の「:」と[break;]を省略することができる。
{}でブロックを作れば複数行の処理も書ける。
String str = “B”;
switch(str){
case “A” -> System.out.println(“A”);
case “B” -> System.out.println(“B”);
case “C” -> {System.out.println(“C”);
      System.out.println(“D”);
      System.out.println(“E”);
      }
}

### 普通の書き方
String str = “B”;
switch(str){
case “A”: System.out.println(“A”);
    break;
case “B”: System.out.println(“B”);
    break;
case “C”: System.o

元記事を表示

Javaを勉強してみよう!

# なぜJavaなのか
 自分が業務で使っている以外の言語で、どの言語を学びたいかと考えたときに、ゲームを作れると聞いてやってみようと思ったから。

# Javaとは
 そもそも、Javaとはどういう言語なのかというと、
20年前に開発されたにもかかわらず、現在でも人気のプログラミング原語。その理由として、WindowsなどのOSやプラットフォームに関わらずJavaインタプリタがインストールされた環境ならどこでも実行できる点。また、オブジェクト指向プログラミング言語である。Javaで開発されたアプリは有名どころでいうとSpotifyやX(旧twitter)、ゲームはmincraftがある。Javascriptとは別の言語でWEB以外でも使われる。(https://azure.microsoft.com/ja-jp/resources/cloud-computing-dictionary/what-is-java-programming-language より要約)

# よし!簡単なゲーム作れるぐらいになるぞ!
3日坊主で終わりそう😅

元記事を表示

なぜデザインパターンを学ぶのか?

# デザインパターンとは?
### 当時の達人が考えた設計思想
デザインパターンとは、状況ごとのシステム設計のカタログです。
「こういう状況であれば、こう設計した方が良いよ」というものが記載されたものになります。

従ってデザインパターンを知っておくと、状況に応じた最適な設計をすることができるようになります。

デザインパターンは、過去のエンジニアの集合知になるので、自分でゼロから考えるよりも、良い設計が可能になります。

### GoFのデザインパターン
デザインパターンの一般的な意味は上記の通りなのですが、
システム開発においてデザインパターンと言うと、ほぼ**GoFのデザインパターン**のことを言います。

**GoFのデザインパターン**とは、書籍『[オブジェクト指向における再利用のためのデザインパターン](https://amzn.to/3QRNuCO)』に記述された、オブジェクト指向プログラミングに関するデザインパターンです。

書籍は4名の共著なのですが、その4名が「Gang of Four」と呼ばれておりそこから「GoFのデザインパターン」と言われています。

#

元記事を表示

GraphQLサーバとRESTサーバをさっと立ちあげて、実際に触ってみる。つづき。関連のあるデータの取得

こんにちは。@masatomix です。

最近、現場でGraphQLとRESTサーバを構築する機会があったので、そのとき得られた[ナレッジを備忘としてまとめている](https://qiita.com/masatomix/items/53003a34d413206bb619)のですが、その続きです。

前回の初期状態から、すこし手を入れていきます。

## TL;DR

– Spring Data RESTが自動生成するRESTサービスについて、リンクになっているところを微調整します。
– ついでに、よけいなSQL文を発行しないよう微調整します
– GraphQL がQueryで指定するプロパティに応じて、必要なときだけBackendにデータを取りに行くようにする

## Spring Data RESTが自動生成するRESTの戻り値について、FKがオブジェクトじゃなくてリンクになっている

今回もこのデータ構造です。

![image-20240610114259607.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

デザインパターン Builderパターン

# Builder パターン
**オブジェクトの生成、初期化を簡潔にする**ためのデザインパターン。

オブジェクトの生成(インスタンス化)にはコンストラクタが必要になるが、クライアントコードが直接コンスタントラクタを使用する場合、もしコンストラクタにオプショナルな引数(与えなくても良い引数)があると、コンストラクタ内の処理が複雑化してしまう。

このような場合にBuilderパターンを利用することで、コンストラクタ内の複雑な初期化処理を簡潔にすることができ、またクライアントコードなにとってもオブジェクトの初期化が書きやすくなる。

Builderパターンではクライアントか直接コンストラクタを利用しない為、オブジェクト作成は隠蔽される。

その点ではFactoryパターンと似ているが、Builderパターンはオブジェクトに対する知識量が比較的多く必要な点が違いと言える。

Factoryパターンについてはこちらにまとめています。

https://qiita.com/AsahinaKei/items/3a1f17b728769bab95b7

## 構成要素

### Target

元記事を表示

Javaで「配列の要素の初期化と規定値」の動作を確認してみた

# 概要

Javaで「配列の要素の初期化と規定値」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/array/index5.html

# 実装

以下のファイルを作成しました。
“`JSample5_1.java
class JSample5_1{
public static void main(String[] args){
int[] i = new int[1];
System.out.println(“int : ” + i[0]);

long[] l = new long[1];
System.out.println(“long : ” + l[0]);

double[] d = new double[1];
System.out.println(“double ; ” + d[0]);

boolean[] b = new boolean[1];
System.out.println(“boolean : ” + b[0]

元記事を表示

Spring Bootstrap テーブルを中央揃えする方法 備忘録#2

# テーブルを中央揃えする方法

#### 初めに
今回は、Springbootを使って、掲示板機能を作成した際に、テーブルを中央揃えの仕方を調べて扱ったので、備忘録として残したいと思い記述しました。

テーブルだと、**text-center**や**justify-content-center**を使用してもなかなか中央に行ってくれないので、私はこれを試しました。

###完成図(イメージ)

![スクリーンショット 2024-06-12 19.48.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/9697ab5a-cd3e-8501-6c00-f4c43a0c3884.png)
↑このような感じでテーブルを真ん中に持っていきます!

###HTMl

“`diff_java

+

2つのCSVファイルを取り込み差分を抽出する

カラム名を動的に取り込み、CSVファイルをSQLiteに格納する方法を以下に示します。ここでは、CSVの最初の行をカラム名として使用します。

### 必要なライブラリ
1. SQLite JDBCライブラリ
2. OpenCSVライブラリ(CSVファイルの読み書きに使用)

### ステップ1: 必要なライブラリを追加

Maven依存関係




org.xerial
sqlite-jdbc
3.34.0



com.opencsv
opencsv