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

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

Eclipse Java でpackageを使用する

## この記事の内容
Eclipseはじめて触る人がPackageを使えるまで

最終的なpackageのフォルダ構成
“`
PackageTest/
└── src/
└── test/
├── another.pg/
│ ├── MathUtils.java
│ └── package-info.java
└── pg/
├── Main.java
└── package-info.java

“`

## やり方 初期設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/ca515094-e07d-1aea-5cab-e08f3cc0bebe.png)
起動時の画面

ファイル>新規>JavaProject
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

JavaでCSVを読み込むサンプル

郵便局が公開している[郵便番号の全国データ](https://www.post.japanpost.jp/zipcode/dl/kogaki-zip.html) (KEN_ALL.CSV)を読み込み、都道府県ごとに郵便番号の数をカウントしてみます。標準入力からcsvを渡すこととします。

“`java: ReadCsv.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class ReadCsv {
public static void main(String[] args) {
Map prefCount = new HashMap<>();
try (BufferedReader br = new BufferedReader(new InputStre

元記事を表示

Template Methodパターンとは?

※最近デザインパターンを勉強し直そうと思って読んだ[この書籍](https://www.hyuki.com/dp/)を自分なりにまとめていっている記事です。
※この記事ではTemplate Methodパターンについて書いています。

ソフトウェア開発において、類似した手順を持つ処理をいくつも抱えている場合、どのようにしてコードの一貫性と再利用性を確保しますか?例えば、複数の種類のレポートを生成するアプリケーションや、異なる種類のデータを処理するウェブアプリケーション。これらのシナリオでは、共通の処理フローを確保しながら、特定の部分でカスタマイズが必要になります。Template Methodパターンは、こうした問題を解決するための有用なデザインパターンです。

## Template Methodパターンとは?

Template Methodパターンは、スーパークラスにアルゴリズムの骨組みを定義し、サブクラスでその具体的なステップを実装するデザインパターンです。これにより、アルゴリズム全体の構造を変えずに、サブクラスで部分的に処理を変更できます。

### よくあるシナリオ

元記事を表示

GradleとTomcatを使ったJava Servletアプリのデプロイ方法

EclipseなどのIDEは使わずCLIのみでHello Worldアプリのデプロイまでおこなった。備忘録。

# 確認済み環境
– Mac OS
– OpenJDK 17.0.12
– Gradle 8.10
– Tomcat 10.1.28

# 手順

1. ディレクトリ作成

“`bash
$ mkdir HelloWorldServlet && cd HelloWorldServlet
“`

2. Terminalで`gradle init`を実行。実行後聞かれる設定は以下。
– Select type of build to generate: 1. Application
– Select implementation language: 1. Java
– target Java version: 17
– Project name: HelloWorldServlet
– Select application structure: 1. Single application project

元記事を表示

カスタムEnumValidアノテーションで有効性検証を実装してみました。

## はじめて

最近の作業中にEnumValidを定義した話をしようと思います。

– 私は韓国人として、日本語の勉強とコンピュータの勉強を同時に行うために、ここに文章を書きます
– 翻訳機の助けを借りて書かれた文章なので、誤りがあるかもしれません

## なぜ作成したのか?

“`java
@Operation(summary = “サブクエスト修正”, description = “サブクエストを修正します。許可された値:ENABLE、DISABLE”)
@PatchMapping(“/{questId}/{subQuestId}”)
@ImageUploader
@AdminOnly
public ResponseEntity updateSubQuest(@PathVariable Long questId,
@PathVariable Long subQuestId,
@RequestBody @Valid SubQuestUpdateRequest subQuestUpdateRequest) {
final SubQuestR

元記事を表示

[Android その1] Androidの基礎

# この記事について
Androidアプリケーション開発について興味があるので、調べつつ、アウトプットとして記載をしたいと思います。
特に、__4. アプリケーションの基本要素__ について記載を進めていこうと思います。
また言語はJavaで書いていこうと思います。ですが、後々にKotlinでの記載も進めていきます。

# Androidについて
Androidは、Googleが開発したオープンソースのモバイルオペレーションシステムです。主にスマートフォンやタブレットで使われており、世界中で非常に広く普及しています。

## 1\. Androidの構成
Android システムは主に以下のコンポーネントで構成されています:
* __Linux カーネル__: Android の基礎は Linux カーネルで、メモリ管理、プロセス管理、ネットワークプロトコルスタックなどの基本的なシステム機能を提供します。
* __ハードウェア抽象化レイヤー (HAL)__: ハードウェアと上位層のソフトウェア間のインターフェースを提供し、Android がさまざまなハードウェアに対応できるようにし

元記事を表示

Java Silver試験対策:初心者エンジニアのための完全ガイド

## はじめに

Javaエンジニアを目指す皆さん、こんにちは!今回は、Java Silver試験の対策について詳しく解説していきます。15章に分けて、重要なポイントと練習問題を紹介します。それでは、さっそく始めましょう!

## 1. Javaプログラミングの基礎

Javaの基本構文や変数の扱い方を学びます。

**練習問題:**
次のコードの出力は何ですか?

“`java
public class HelloWorld {
public static void main(String[] args) {
int x = 5;
System.out.println(x++);
}
}
“`

a) 5
b) 6
c) コンパイルエラー
d) 実行時エラー

**答え: a) 5**
後置インクリメント演算子(x++)は、現在の値を返してから増加させます。

## 2. オブジェクト指向プログラミング

クラスとオブジェクトの概念を理解しましょう。

**練習問題:**
以下のコードで正しいのはどれですか?

“`java
cl

元記事を表示

SpringBoot + Thymeleaf バリデーションエラーの表示

## 記載内容
画面上の入力フォームに馬影デーションエラーを表示させる際の実装方法について記述します。

## 目次
・Formクラス
・Controllerクラス
・Thymeleaf

## Formクラス
“`java:UserForm.java
@Data
public class UserForm {
private String name;
private String email;
private String password;
}
“`

## Controller
“`java:UserController.java

@Controller
public class UserController {

/**
* ユーザー情報 Service
*/
@Autowired
private UserService userService;

@GetMapping(“/form”)
public String form(
@ModelAttribute UserForm user

元記事を表示

【サクッと習得】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”: “(略)”
}
“`
– 何らかの理由で接続が切れているが、原因が

元記事を表示

OTHERカテゴリの最新記事