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

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

例外処理

今回はJavaの例外処理について記事にしたいと思います。

例外とは、プログラムが予想外の問題に遭遇したときに発生するエラーのことです。たとえば、次のような状況が考えられます:

数字を入力する場面で、文字を入力してしまった。
ファイルを読み込もうとしたけど、そのファイルが存在しなかった。
0で割ろうとした(これは数学的に禁止されています)。
こうした状況が起きたとき、プログラムは通常止まってしまいますが、例外処理を使うことで、エラーに対処しながらプログラムを続けることができます。

3. 例外処理(try ~ catch)
Javaでは、エラーが発生する可能性がある部分に対して、tryブロックと**catchブロック**を使って、エラーが起きたときにどう対処するかを指定します。

tryブロックには、エラーが起こるかもしれない処理を書きます。
catchブロックには、エラーが起きたときにどうするかを書きます。
“`Java
コードをコピーする
try {
int result = 10 / 0; // ここでエラーが発生
} catch (ArithmeticExcept

元記事を表示

Java基礎文法Part5

今回はJavaのfor文について記事にまとめました。

構文
“`Java
for(初期化;条件式;後処理){
 繰り返す処理

 }
“`
. 反復処理の制御構文
反復処理(はんぷくしょり)とは、同じことを何度も繰り返して実行することです。たとえば、10回ジャンプするとか、毎朝同じ時間に起きるのも反復処理です。プログラミングでは、同じ動作を何度も繰り返すために、ループと呼ばれる仕組みを使います。

制御構文は、プログラムがどう動くかを決めるルールです。例えば、for文やwhile文というものを使って、何度も繰り返すことができます。

例:
“`Java
for (int i = 0; i < 5; i++) { System.out.println("こんにちは"); } ``` このプログラムは、「こんにちは」を5回表示します。 2. インクリメント インクリメントは、数を1ずつ増やすことです。たとえば、「1, 2, 3, 4」と数を増やすときに使います。 例: ```Java int x = 0; x++; // xは1になる x++; // xは2になる

元記事を表示

Java基礎文法Part4

今回はメソッドについて記事にしたいと思います。

メソッドは、プログラミングの中でよく使われる言葉です。簡単に言うと、**メソッドは「動作」や「行動」**を表すものです。現実世界で例えると、「何かをするための命令」だと思ってください。

メソッドって何?
例えば、人間で考えてみましょう。**人は「歩く」「話す」「食べる」といった色々な行動をしますよね。これをプログラミングの世界で表現すると、「歩く」「話す」「食べる」**という動作が「メソッド」にあたります。

メソッドは、「何をするか?」という行動の部分をプログラムに書いておくことで、必要なときにその行動を呼び出して実行することができます。

メソッドの例
例えば、犬が「吠える」という動作をするためのメソッドを考えてみましょう。

“`Java
class Dog {
// 犬が吠えるメソッド
void bark() {
System.out.println(“ワンワン!”);
}
}
“`
bark()というメソッドを使って、犬が「ワンワン!」と吠える動作を表しています。
System.o

元記事を表示

自社プロダクトの開発でJava(spring boot)を使用した際のCI/CD周りについて

自社プロダクトの開発でJava(spring boot)を使用した際のCI/CD周りについて

– ローカル開発
– ビルドツールはmavenを使用
– Nexusリポジトリも使用(VPNを繋がないとアクセスできない)
– mavenで依存関係(ライブラリDLやNexusリポジトリの取得)を解決
– 開発の際は以下の順番
– ソースコード修正
– ビルド(コンパイル)
– アプリケーション実行の順序で開発する
– ローカル開発の際に出た疑問
– Intellijでは「ビルド」と「RUN」が分かれた項目としてあるが、違いは何?
– ビルド(全てのファイルのソースコードを機械語に)
– ビルドだけを行う
– RUN(主にアプリケーションの実行を行う)
– IntellijのRUNは同時にビルドも行ってくれる
– なのでソースコードの変更後RUNするだけでローカルテストができる
– Nexusリ

元記事を表示

arctanのBigDecimal計算

前回のπの記事で、
@zacky1972 様にコメントを頂きました。

https://xn--w6q13e505b.jp/formula/arctan.html

上記の、arctan系公式 を教えてもらいました。

## ストマーの公式

44 * arctan( 1/57) + 7 * arctan( 1/239 ) – 12 * arctan( 1/682 ) + 24 * arctan( 1/12943 )

前回の記事では、ストマーの公式の一番左の項を気にしていましたが、
上記の「arctan系公式」ので、解決策が見えたので、第2項の
arctan( 1/239 )で、桁数を増やした時の性能を測ってみました。

## 計測に使ったプログラム

“`Java
package calcpi;

import java.math.BigDecimal;
import java.math.MathContext;

public class Arctan1 {

static MathContext mi = new MathContext(40000); //

元記事を表示

競技プログラミング(Java)をまとめてみた

競技プログラミングをjavaでよく使うものなどをアウトプットもかねて記事にしてみました。

1. Scannerでの入力処理

基本的な使用方法
“`java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
}
}
“`

このプログラムは、2つの数字を足し算する簡単なJavaのプログラムです。基本的に、ユーザーから2つの数字を入力してもらい、その合計を表示する仕組みになっています。

それぞれの部分を説明します
import java.util.Scanner;

ここでは、**Scannerというクラスを使うために、そのクラスをインポートしています。Scanne

元記事を表示

IPv6アドレスからプレフィックス長とIPv6アドレス部分を分けて2進数にする方法

“`java:Main.java
import java.net.InetAddress;
import java.net.UnknownHostException;

public class Main {
public static void main(String[] args) throws Exception {
String ipv6WithCIDR = “2001:1111:2222:abcd::/64”; // 任意のIPv6アドレス

// プレフィックスを分離
String[] parts = ipv6WithCIDR.split(“/”);
String ipv6Address = parts[0]; // IPv6アドレス部分
int prefixLength = Integer.parseInt(parts[1]); // プレフィックス長

try {
InetAddress inetAddress = InetAddress.

元記事を表示

クソコードを読む上でのコールスタックの重要性

## はじめに
プログラミングをしていると、どうしても「クソコード」に出会うことがあります。メンテナンス性が低く、可読性が悪いコードを静的に読んで理解しようとすると、多くのエンジニアが頭を抱えます。そんなときに役立つのが「コールスタック」です。これをうまく活用すれば、クソコードのバグや問題箇所を効率的に見つけ出し、解決に導くことができます。

この記事では、コールスタックの基本的な説明と、それがクソコードの理解にどのように役立つかを解説します。

## コールスタックとは
コールスタックは、プログラムが実行される中で関数やメソッドの呼び出し順序を管理するメモリ領域です。各関数が呼び出されるたびに、その関数の情報がスタックに積まれ、関数の処理が完了するとスタックから取り除かれます。

特に深いネストや大規模なコード、難読化されたコードでは、コールスタックを正しく理解することが非常に重要です。コードの流れが追いづらいクソコードでは、コールスタックを確認することで、どの関数がどの順序で実行されているかを把握しやすくなります。

## コールスタックを使ったデバッグの具体例
ここでは、Java

元記事を表示

今更きけないpleiades-all-in-oneを使わないEclipseのインストールに役立つリンク集

## こちらがリンク集です!Eclipseを今日から始めましょう!

やり方としてはEclipseの日本語化の記事を読みながら①Eclipseをインストール、②Pleiadesのプラグインのダウンロードと展開をしてください。

[Eclipseのダウンロード](https://www.eclipse.org/downloads/)

[Pleiadesのプラグイン](https://willbrains.jp/)

[Eclipseの日本語化(Pleiadesプラグインの導入方法)](https://qiita.com/mizu4my/items/b63095c89464ac3b054c)

## JavaでHelloWorldを表示(Eclipseを使わず手動でやる場合)

Javaで「Hello, World!」プログラムを作成し、javacでコンパイルする手順を説明します。

## 1. ソースコードの作成

まず、テキストエディタを開き、以下のコードを入力します:

“`java
public class Hello {
public static void main

元記事を表示

java。URLエンコード。標準ライブラリ。spring frameworkのライブラリの例

## Java標準ライブラリを使用したURLエンコード

“`java
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class URLEncodeExample {
public static void main(String[] args) {
try {
String original = “こんにちは 世界!”;
String encoded = URLEncoder.encode(original, “UTF-8”);
System.out.println(“Original: ” + original);
System.out.println(“Encoded: ” + encoded);
} catch (UnsupportedEncodingException e) {
e.printStack

元記事を表示

java。base64エンコード。標準ライブラリ。spring frameworkのライブラリの例

## 標準ライブラリでのBase64エンコード

“`java
import java.util.Base64;

public class Base64Example {
public static void main(String[] args) {
String originalInput = “Hello, World!”;

// Base64エンコード
String encodedString = Base64.getEncoder().encodeToString(originalInput.getBytes());
System.out.println(“Encoded String: ” + encodedString);

// Base64デコード
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedStri

元記事を表示

byte[] 型の配列が空であるかどうかを Java でチェックする

## 標準ライブラリ

“`java
byte[] byteArray = …; // ここに配列を初期化するコードが入ります。

if (byteArray == null || byteArray.length == 0) {
System.out.println(“The byte array is empty.”);
} else {
System.out.println(“The byte array is not empty.”);
}
“`

## Apache Commons Lang

“`java
import org.apache.commons.lang3.ArrayUtils;

byte[] byteArray = …; // ここに配列を初期化するコードが入ります。

if (ArrayUtils.isEmpty(byteArray)) {
System.out.println(“The byte array is empty.”);
} else {
System.out.println(“The byte

元記事を表示

(調査中)Java。JARファイル内にアクセスし、特定フォルダのファイル名のリスト作成

JARファイル内にアクセスして、特定のフォルダ内にあるファイルの名前リストを作成するためには、ClassLoaderやgetResourceAsStream()だけでは不十分です。JARファイル内は通常、ファイルシステムのように直接ディレクトリを探索できませんが、java.util.jar.JarFileやClassLoaderを活用してJARファイルのエントリを取得し、特定のフォルダに含まれるファイルのリストを作成できます。

以下は、その具体的な実装方法です。

コード例: JARファイル内の特定フォルダのファイル名をリスト化する

“`java
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.util.Enumeration;
import java.util.List;
import java.util.ArrayList

元記事を表示

Spring Securityの基本的な使い方

ログイン機能では、基本的に認証/認可が必要になります。これをいちいち実装すると、何らかのミスで脆弱性につながってしまいます。Spring Bootでは、Spring Securityという認証/認可のためのフレームワークが用意されていますので、こちらを用いてカスタムした方が得策です。本記事では、Spring Securityの基本的な使い方を紹介します。ただし、Spring Bootでのアプリケーションの作り方に関しては説明しません。

## 前提
### 環境

Java基礎文法Part3

まず、基本型とは、プログラミングで使われる最も基本的なデータの種類です。

イメージ: 数字や文字など、一つの値だけを持つシンプルなデータです。
Javaには8つの基本型があります。

整数を表す型:

byte:小さな整数(-128から127)
short:やや大きな整数(約-3万から3万)
int:一般的な整数(約-21億から21億)
long:非常に大きな整数
小数を表す型:

float:小数(単精度浮動小数点数)
double:より正確な小数(倍精度浮動小数点数)
文字を表す型:

char:一文字(例:’A’、’あ’)
真偽値を表す型:

boolean:真(true)か偽(false)の二つの値だけ
ポイント:

基本型は、データそのものを直接扱います。
計算が速く、メモリ(データを保存する場所)の使用量も少ないです。
例:
“`Java
int age = 15; // 年齢を整数で表す
double height = 160.5; // 身長を小数で表す
char grade = ‘A’; // 成績を一文字で表す
boolean

Java基礎文法Part2

今回はJavaの配列について記事にしたいと思います。
配列は、同じ種類のデータをまとめて一つに管理できる「箱」のようなものです。
たとえば、クラスのみんなのテスト点数をプログラムで扱いたいとします。一人一人の点数を別々の変数に入れると、とても大変です。

“`java
int score1 = 80;
int score2 = 90;
int score3 = 75;
“`

// 生徒が30人いたら、30個の変数が必要になります!
これでは効率が悪いので、配列を使って点数をまとめて管理します。

配列のイメージ
配列は、一列に並んだロッカーや引き出しのようなものです。
各引き出し(要素)には、データが一つずつ入っています。
配列全体に名前をつけて、引き出しごとに番号(インデックス)でアクセスします。
図で表すと:

“`css
配列 scores
+—–+—–+—–+—–+—–+
| 80 | 90 | 75 | 85 | 95 |
+—–+—–+—–+—–+—–+
[0] [1] [2] [

抽象クラスとインターフェース

今回は抽象クラスとインターフェースについて記事にしたいと思います。

抽象クラスとは?
「乗り物」の設計図を作りたいとします。でも、「乗り物」といっても、車や自転車、飛行機などいろいろありますよね。

抽象クラスは、「乗り物」という共通の特徴を持つ設計図のようなものです。
この設計図には、「走る」や「止まる」といった共通の動きが書かれています。
でも、「乗り物」だけでは具体的に何を作るかわかりません。直接使うことはできないのです。
そこで、この「抽象クラス」をもとにして、「車」や「自転車」といった具体的な乗り物の設計図(クラス)を作ります。

「車」は「乗り物」の特徴を受け継ぎつつ、エンジンやタイヤの数など、車特有の情報を追加します。
「自転車」も同様に、「乗り物」の特徴を持ちつつ、ペダルやギアなどを追加します。
つまり、抽象クラスは共通の部分をまとめた「未完成の設計図」で、これをもとに具体的なものを作るための基礎となります。

抽象クラス Vehicle(乗り物)
“`java
public abstract class Vehicle {
String name;
}

【デザインパターン】Facadeパターンについての備忘録

# 概要

Facade パターンとは、**複雑なサブシステムへのアクセスを簡単にするため**に、**サブシステムの複数のクラスをまとめて、統一したインターフェースを提供する**デザインパターンである。これにより、クライアントはサブシステムの内部の複雑さを意識せず、シンプルなインターフェースを通じて操作が可能となる。

# 利用目的

– クライアントが複数のサブシステムを操作する際に、シンプルなインターフェースを提供することで、システムの使いやすさを向上させる。
– サブシステムの詳細を隠蔽し、柔軟性とメンテナンス性を向上させる。
– 依存関係を減らし、サブシステムの変更をクライアントに影響させないようにする。

# 注意点

– Facade パターンを適用しすぎると、システムが単純化されすぎて、詳細な制御が必要な場合に柔軟性を失う可能性がある。
– Facade パターンは、サブシステムを完全に隠すものではなく、サブシステム自体も直接使用可能なことが多い。そのため、設計時にサブシステムへの直接アクセスが必要かどうかを検討することが重要である。

# 実装

“`java:App

Java Silver 試験中に気を付けたいこと

# はじめに

先日Java Silver (SE11)を取得したので、その時のノウハウを少し共有したいと思います。(合格体験記的なものではないです)

# 試験中に何を気を付けるか

Java Silverは結構というかかなり引っ掛けの問題が多いので、ボーっと解いていると簡単に点を落としてしまうと思います。そこで本記事では非常に簡単にではありますが、試験本番中に頭に片隅に入れておくことで3%くらい点数を伸ばせるかもしれないノウハウを紹介します。
(試験自体の学習が済んでいることを前提としているので、試験前日とかに確認するTips的なものとして捉えていただけると幸いです)

### 1. finalは初期化しないとエラー

finalの付いた変数は、初期化をしないとコンパイルエラーとなります。
特に気を付けたいのは、複数定義されているコンストラクタの中でfinalの変数が初期化されている問題です。一方のコンストラクタでは初期化されているのにもう一方では初期化されていない場合などがあるので、目を光らせておく必要があります。

例) 引数なしのコンストラクタではfinalの変数aが初期化

【デザインパターン】Adapterパターンについての備忘録

# 概要

アダプターパターンは、互換性のないインターフェースを持つクラス同士を接続するためのデザインパターンである。**異なるインターフェースを持つオブジェクト**を使いたい場合、**アダプタークラスを介して既存のクラスを新しいインターフェースに適合させる**。

# 利用目的

アダプターパターンは、**既存のクラスを再利用しつつ、そのクラスのインターフェースを変更したい**場合に使用される。例えば、新しいインターフェースに合わせて**既存のクラスを使いたいが、元のクラスを直接変更したくない場合**に有効である。特に、異なるライブラリや API を統合する際に便利である。

# 注意点

アダプターパターンは、既存のクラスに依存しているため、**クラスの内部構造や動作に変化があった場合、アダプターも修正が必要になることがある**。また、複雑なアダプターを作ると、設計が不必要に複雑になる場合があるため、**単純な解決策で済むならばアダプターパターンを使用するべきではない**。

# 実装

“`java:Target
// クライアントが使用するインターフェース
public in

言語 Java 17.x
フレームワーク spring boot 3.x
テンプレートエンジン thymeleaf
ビルドツール