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

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

【サクッと習得】Java学習教材

# はじめに
**情報処理安全確保支援士の学習にあたってJavaの知識が必要**なので、自己学習しました。
その際に学習した内容をまとめたので、**情報処理安全確保支援士の学習をする方**や**Javaを短時間で学習したい方**の参考になれば良いと思い教材を作成しました。
**専門書を買うほどでもなくサクッと言語を学習したい方**におすすめです。

# 目次

[1.概要](#1概要)
[2.基本的な構文](#2基本的な構文)
[2-1.コメント](#2-1コメント)
[2-2.変数とデータ型](#2-2変数とデータ型)
[2-3.演算子](#2-3演算子)
[2-4.制御文](#2-4制御文)
[2-5.配列](#2-5配列)
[2-6.メソッド](#2-6メソッド)
[2-7.クラスとオブジェクト](#2-7クラスとオブジェクト)
[2-8.継承](#2-8継承)
[2-9.インタフェース](#2-9インタフェース)
[2-10.例外処理](#2-10例外処理)
[2-11.組み込み関数](#2-11組み込み関数)
[3.高度なトピック](#3高度なトピック)
[3-1.パッケー

元記事を表示

AOP(アスペクト指向プログラミング)

## AOP
プログラムを中心的関心事と横断的関心事に分ける考え方のこと。
**中心的関心事:** 実現したいプログラム
**横断的関心事:** 中心的関心事に付随するプログラム

**(例)**
データベースへアクセスしてデータを取得する処理を例に挙げると、データベースへアクセスする処理が「中心的関心事」、例外処理が「横断的関心事」。
Spring Frameworkの「インターセプト」をいう仕組みを使うと、中心的関心事と横断的関心事を分離して、横断的関心事を中心的関心事に挿入しているように見せることができる。
![スクリーンショット 2024-08-24 10.25.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551832/9de1d05a-708e-bf63-efb2-d549e4a425aa.png)
**Advice:** 横断的関心事のメソッド
**Aspect:** Adviceをまとめたクラス
AOPを利用すると、クラスAからクラスBのメソッドXを呼び出しているだけに見える(実際

元記事を表示

Java Gold ストリームAPI 例題集

コードの出力を答えてください

# 例題1

問1

“`java
import java.util.stream.IntStream;

public class StreamExample {
public static void main(String[] args) {
int sum = IntStream.rangeClosed(1, 5)
.map(n -> n * n)
.sum();
System.out.println(sum);
}
}
“`

問1の解答
55

# 例題2

問2

“`java
import java.util.Arrays;
import java.util.List;

public class StreamExample {
publ

元記事を表示

[paiza]全部計算するとか脳筋かよ(mod7占い (paizaランク S 相当)

# すべて計算すればいい、そう思ってた時期もありました
如何に~~楽にするために~~効率よくナニカするということを最大目標としているIT屋が、全パターン計算するとか無駄の極みだろ。
誰だよ、そんなクソみたいな実装してるやつ(超特大ブーメラン
参照:[【脳筋プレー】JavaScript版](https://qiita.com/AsilHatake/items/cd11273833a45d6ff783)

https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラ

元記事を表示

Java初学者が印象に残ったこと集

# 前提
– 投稿者は普段、RubyやJSを書いているのでC++やJava等、ルールがきっちりした静的型付け言語に触れていない。
– その視点でJavaの印象的だった点について感想を述べていく記事になります
# 文字列の比較方法
こう書きたいが
“`java
if (str == “hogehoge”)…
“`
こうらしい
“`java
if (str.equals(“hogehoge”))…
“`
### 理由
`equals()`はアドレスが異なっても同じ内容であるかどうか(**等価**)を判定するメソッド。
String型は参照型であり、二つのString型の変数は同じアドレスを指していないから。

# キャスト演算子
– ()をつけると強制的な型変換を行える
“`java
public

元記事を表示

[paiza]こっからここまで買うわ!(文字列収集 (paizaランク S 相当)

# 飽き性なもんで
3ヶ月~半年ぐらいで飽きが来て、
年単位でやろうもんならやる気がほぼほぼ0になって片手間で別のこと始めちゃうくらい、
1つのプロジェクトを長くやるのがシンドく感じてしまう人間なので、
同じプロジェクトを何年も出来る人って凄いなって思う。

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ

– VSCode
– Java 17
– jUnit 5.9
– maven

pom.xmlはこんな感じ

“`xml:pom.xm

元記事を表示

[paiza]いとおかし( 【殿堂入りキャンペーン】お菓子の詰め合わせ (paizaランク A 相当)

# 年に2~3回ぐらい
ありがたいことにお土産で「萩の月」をいただくことがあるんですが、
もうあの甘さとスポンジの食感がシンドくてシンドくて。。。
年に1回あるかないかぐらいのペースで食べたいところです。
※貰ってばかりで言える立場にないですが、他にお土産無いんか?

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ

– VSCode
– Java 17
– jUnit 5.9
– maven

pom.xmlはこんな感じ

“`xml:p

元記事を表示

解いてみた。「Sランク:村人の友好関係」

# 問題
[「Sランク:村人の友好関係」](https://paiza.jp/works/mondai/s_rank_skillcheck_archive/group_popularity)

# コード
Javaで解いてみました。

“` Java
import java.util.*;

public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int nN = sc.nextInt();
int nM = sc.nextInt();
int nQ = sc.nextInt();

boolean[] bIn = new boolean[nN+1];

boolean[][] bValid = new boolean[nN+1][nN+1];
long[][] lValue = new long[nN+1][

元記事を表示

Springbootで特定のエンドポイントが実行されたらセッションを更新しないような実装をしてみる

# 概要
一定時間ごとにAPIを実行してセッションが有効かどうかの判定がしたかった。
Filterを実装しセッション有効判定エンドポイント以外がアクセスされた場合はsetAttributeに現在の時間をセッションに設定しセッション有効判定エンドポイントがアクセスされた場合はセッションタイムアウトのチェックとセッションの無効化をおこなうようにしてみた。

“`java
@Component
public class SessionTimeoutFilter implements Filter {

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpSession sessio

元記事を表示

Javaで「LITERALフラグ(パターンの中のメタ文字が特別な意味を持たなくなる)」の動作を確認してみた

# 概要

Javaで「LITERALフラグ(パターンの中のメタ文字が特別な意味を持たなくなる)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index23.html

# 実装

以下のファイルを作成しました。
“`JSample23_1.java
import java.util.regex.*;

class JSample23_1{
public static void main(String[] args){
String target1 = “A1B”;
String target2 = “A240B”;
String target3 = “A[0-9]*B”;

String regex = “A[0-9]*B”;
Pattern p1 = Pattern.compile(regex);

Matcher m1_1 = p1.matcher(target1);
System.out.println(target1 + “

元記事を表示

[paiza]エビバディパッション!(じゃんけんの手の出し方 (paizaランク A 相当))

# 最初は( ゜д゜)o彡゜ん゛ーーー!
プログラムに大切なことって何だと思う?
そうだね、プロテインだね。

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ

– VSCode
– Java 17
– jUnit 5.9
– maven

pom.xmlはこんな感じ

“`xml:pom.xml
Seleniumで引っかかったことを解決する

## 構築時の環境
Selenium4.0.0, java8, Maven
Mavenビルドまで成功
## 引っかかったエラー
AppTest.java実行時にエラーが発生した。
“`
%ERROR 2,testGoogleSearch(com.example.AppTest)
%TRACES
org.openqa.selenium.remote.http.ConnectionFailedException: Unable to establish websocket connection to (以下略)
“`
## 試したこと
– WebDriver起動時のエラーをデバッグログを出すことで探索すると以下の記述で止まっていた
“`
[1724305784.821][DEBUG]: DevTools WebSocket Event: Target.detachedFromTarget (session_id=) browser {
“sessionId”: “(略)”,
“targetId”: “(略)”
}
“`
– 何らかの理由で接続が切れているが、原因が

元記事を表示

JavaとPHPの文法の違い

## はじめに
JavaとPHPは、どちらも広く使われているプログラミング言語ですが、その文法には多くの違いがあります。本記事では、JavaとPHPの基本的な文法の違いを中心に解説します。これから両言語を学ぶ方や、どちらか一方の言語に慣れている方に役立つ内容となっています。

## 1. 変数の宣言と型指定

### Java
Javaでは、変数を宣言する際に必ずデータ型を指定します。これは、Javaが静的型付け言語であるためです。

“`java
int num = 10;
String text = “Hello, World!”;
“`

### PHP
一方、PHPでは変数にデータ型を明示的に指定する必要はありません。PHPは動的型付け言語であり、変数の型は実行時に決定されます。

“`php
$num = 10;
$text = “Hello, World!”;
“`

## 2. クラスとオブジェクトの定義

### Java
Javaは純粋なオブジェクト指向言語であり、すべてのコードはクラスの中に配置されます。以下は、クラスとオブジェクトの基本的な定義です。

`

元記事を表示

[paiza]ポップにプッシュ(ハノイの塔 (paizaランク A 相当)

# ア アラララァ ア アァ!
歌う系のヒップポップ好きなんですよねぇ。
SOUL’d OUT(ウェカピポ YO!
Dragon Ash(ファンタジスタ
nobodyknows+(ダンス・ダンス・ダンス R゛E゛A゛D゛Y゛ G゛O゛!

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ

– VSCode
– Java 17
– jUnit 5.9
– maven

pom.xmlはこんな感じ

“`xml:pom.xml

元記事を表示

[paiza]おりおりおりおー(山折り谷折り (paizaランク A 相当)

# 足りない頭なら知恵を盗みゃいい
二番煎じ、三番煎じで作ればいいってことですね!
世の中の似たようなクソアプリはこういうことなんですね、わかります。

https://paiza.jp/works/mondai/real_event/origami

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ

– VSCode
– Java 17
– jUnit 5.9
– maven

pom.xmlはこんな感じ

“`xml:pom.xml
<

元記事を表示

[paiza]プリーズ、プリーズ、交換しましょ(本の整理 (paizaランク A 相当)

# 赤・緑から剣・盾もやっとる(第1世代~
Poke Goに関しては、
オー◯ド「そこに3人の社畜がおるじゃろ?」
1. 上司や会社の命令にしたがいます。イエスマン
1. 残業はお客様へのサービスです。サビザン
1. 仕事が趣味です。ワカホリ

https://paiza.jp/works/mondai/real_event/book_sort

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ

– VSCode
– Java 17
– jU

元記事を表示

Spring FrameworkのDIコンテナ

## DIコンテナ(依存性の注入)
DIコンテナとは依存性の注入をしてくれるSpring Frameworkの機能

## 依存とは
##### クラス依存
クラスAとクラスBがあり、クラスAでクラスBのメソッドを使う場合は以下になる。
“`java
class A {
public void methodA() {
B b = new B();
b.methodB();
}
}
“`
上記のようにクラスA(使う側)でクラスB(使われる側)のインスタンスを作成してメソッドを実行する。
仕様変更などで、使われる側のクラスがクラスCになった場合は以下のように修正することになる。
“`java
class A {
public void methodA() {
C c = new C();
c.methodC();
}
}
“`
このようにインスタンスを作り直してメソッドを実行した。書き換えた箇所を「依存性がある」という。
Bのインスタンを使用している箇所が10箇所や100箇所あった場合、修正にかなり時間がかかってしまう。
Spring

元記事を表示

Spring Bootのフォルダ構成を整理整頓で開発効率アップ!

## はじめに

Spring Bootでの開発は楽しいものですが、プロジェクトが大きくなると、まるで引き出しを開けると物が飛び出してくるような状態になりがちです。
「この場合どこのフォルダに配置したほうがいいのかな?」「どこに何があるのか分からない!」なんてことにならないためにも、フォルダ構成はしっかりしておきたいところ。

今回は、Spring Bootプロジェクトのフォルダ構成について、整理整頓の大切さと共に、Spring Bootプロジェクトでよく使用されるフォルダ構成について、その目的や役割を解説します。

## 問題

プロジェクトが大きくなればなるほど、コードがゴチャゴチャに。
まるで片付けられない部屋のように、どこに何があるのか分からなくなります。
さらに、「あれ?このクラス、こんなところにいたの?」と予期せぬ出会いを果たすこともしばしば。
こんな状態では、開発効率がガタ落ちしてしまいます。

**主な問題点**:

– コードの可読性が低下し、新人開発者がプロジェクトに参加するときに「ここがカオスですか?」と戸惑う。
– バグ修正や機能追加時に、関係ないクラスまで巻き

元記事を表示

[paiza]脳筋プレーやめた(【殿堂入りキャンペーン】名刺バインダー管理 (paizaランク B 相当)

# 見つかるまでループするとか脳筋かよ(特大ブーメラン
[JavaScript版](https://qiita.com/AsilHatake/items/547c799b9d2ca752db6e)ではひたすらループして、
特定の数字が見つかるまで帰れまテンみたいな脳筋プレーしてましたが、
よくよく数字を並べて比較してたらソレっぽい関係性的なのが見つかったため、プログラムに落とし込んでみた。

https://paiza.jp/works/mondai/b_rank_skillcheck_archive/name_card

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテスト

元記事を表示

Java Gold 例題 並列処理

“`java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CachedThreadPoolTest {

private static final ExecutorService threadPool = Executors./* insert code */

public static void main(String[] args) {
startServer();
}

public static void startServer() {
for(int i = 0; i < 6; i++) { final int requestNumber = i; threadPool.submit(() -> {
handleRequest(requestNumber);
});
}
threadPool.shutdown();
}

public static void ha

元記事を表示

OTHERカテゴリの最新記事