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

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

【paiza】最難関Sランクを開発未経験者がJavaで世界一丁寧に解いてみた!

![スクリーンショット 2024-07-30 6.39.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838575/bafe5dfa-54fc-87b2-4cbd-87328021c254.png)

皆様初めまして、システム開発未経験の趣味でアプリを作ろうと考えている素人浅はかエンジニア(自称)のirochiです!

今回取り上げさせていただくのは以下記事の 【paiza×Qiitaコラボキャンペーン】
Rank 「S」の問題です:v:!!

https://paiza.jp/pages/campaign/paiza-qiita

私iPhoneアプリ(簡単な家計簿)を作成したのと、大学4年間で浅い勉強をしただけのど素人ですが、今後のことも考えて腕試ししたかったので挑戦してみたという記事になってます!

前置きはここまでにして、以下早速問題をやっていきましょう!

【文字列収集 Java編】
https://paiza.jp/works/mondai/real_event/word_coll

元記事を表示

必要なJREをだけを抽出しEXE化するPOM

# 必要なJREをだけを抽出しEXE化するPOM
1. JREを含む実行可能なJARファイルの作成
2. Windows用のEXEファイルの生成
3. カスタムJREの作成と配布用パッケージへの組み込み

これらの目標を達成するために、Maven構成(POM)を適切に設定し、必要なプラグインを使用します。

以下が完全なPOMファイルです:

“`xml
4.0.0
com.example
csv-to-

元記事を表示

Javaで「Javaでの正規表現の利用方法」の動作を確認してみた

# 概要

Javaで「Javaでの正規表現の利用方法」の動作を確認してみました。
以下のページを参考にしました。

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

# 実装

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

class JSample1_1{
public static void main(String args[]){
Pattern p = Pattern.compile(“g..d”);
Matcher m = p.matcher(“good”);

System.out.println(m.matches()); // true
}
}
“`

以下のコマンドを実行しました。
“`
$ javac JSample1_1.java
$ java JSample1_1
true
“`

# まとめ

何かの役に立てばと。

元記事を表示

Optional型でのnullの扱い

## Optionalって?
Optionalとは、nullかもしれないことを注意するクラスだよ。
大抵はメソッドの戻り値がnullかもしれない場合に利用しするよ。
Optional型で返すと、nullの場合はヌルポによる意図しないエラーをなくすことができるし、nullかもしれない値に何か処理を行いたい場合にも利用できるよ。
実際に使ってみよう。

## 具体例
### もしOptional型を使わなかったら…
Javaではよくヌルポが発生するので、nullかどうかのチェックをする必要があるよ。
こんな感じに。
“`Java
public class Main {
public static void main(String[] args) {
String val = “Hello!”;
if (val != null) {
System.out.print(val + “Java”);
}
}
}
“`
面倒なnullチェックをなくせるOptional型を使ってみよう。

### 基本的な使い方

元記事を表示

【java】String.equalsでNullPointerExceptionを回避する

## はじめに
初めまして、AraNekoです。
初めての投稿ということで、現場で学んだ小技をメモがてら記事として残しておこうと思います。
文章の作成が苦手なので、ChatGPTにいくつか修正してもらいました。

## equalsで比較する
“`java:test.java
String test1 = null;
String test2 = “テスト”;

System.out.println(test1.equals(test2));
“`
### 解説
`test1`が`null`である状態でequalsメソッドを呼び出しています。この場合、`test1`が`null`であるため、メソッド呼び出し時に`NullPointerException`が発生します。

“`
java.lang.NullPointerException
“`
## nullポ回避法
次に`NullPointerException`の回避するための方法を紹介します。
“`java:test.java
String test1 = null;
String test2 = “テスト”;

Sys

元記事を表示

JavaのStreamAPIについて理解する

# StreamAPIについて
StreamAPIはコレクションの操作を読み易くするために導入された機能となります。
今回はStreamAPIの利用法について説明します。
StreamAPIを利用するこで直感的にコードが見やすくなると思います。

# StreamAPIの使い方について
StremaAPIのシンプルな利用方法と少し複雑な利用方法について紹介しようと思います。
シンプルな利用方法はわかりやすいですが、少し複雑な利用方法についてはデータを結合したい場合のケースを想定した使い方を紹介します。

## シンプルなリストデータ(M件)を扱う場合
特定の条件に合致したデータを抽出する場合のコードについて説明します。

personリストから特定の文字列を抽出する場合は以下のようになります。StreamAPIを使用した場合はif文を使用せず、シンプルなコードになります。

### PersonとAddressクラスの定義

#### Personクラス
“`java
class Person {
private int personId;
private Strin

元記事を表示

オブジェクト指向4

## はじめに

__ 【オブジェクト指向】を__ __ 【Java = ジャバ】言語で考えてみました。__

##### 以下を参照。
https://qiita.com/nekoozi/items/ad5baf8c901e07af2b31

# スーパークラス
“`java
public class Person {

// フィールド
private int age; //年齢
private String name; //名前

// コンストラクタ
/* 引数はなし */
public Person() {
this.age = 99;
this.name = “影太郎”;

/* デバッグポイント */
//スーパークラスのコンストラクタ(引数はなし

元記事を表示

IAM Roles for Service Accountsの認証情報をCamel Spring-bootで利用する方法

## 概要
Spring Boot 環境において、AWS IAM Roles and Service Account (IRSA) を使用した認証情報で、s3やsqs などのAWS リソースにアクセスするのに、情報が少なかったので記載しておきます。

## 前提
必要なIAM ロールや、ポリシー、OIDCプロバイダの設定、k8s ServiceAccount リソースはすでに作成済みの前提で、Spring Boot 環境で実装する部分についてのみ記載します。
必要な IAM ロール、 ServiceAccount が設定され、Deployment と紐づけられた場合、Pod 内の環境変数として、AWS_ROLE_ARN, AWS_WEB_IDENTITY_TOKEN_FILE の環境変数が設定されます。
[参考](#参考) からの更新部分になりますので、アーキテクチャについては参照元をご確認ください。

## pom.xml
WebIdentityTokenFileCredentialsProvider プロバイダを使用する場合は、AWS STS モジュールも必要となります。

元記事を表示

Springboot——インターセプター

### 1.インターセプターの用途
(1)未ログインのユーザーが特定のリンクに直接アクセスするのを防ぐ
(2)ログ情報をキャプチャする
(3)SQLインジェクションなどの不正攻撃を防ぐ

### 2.係わるjar、クラス
(1)spring-webmvc.jar
(2)**HandlerInterceptor**(org.springframework.web.servlet:インターフェース)、
**AsyncHandlerInterceptor**(org.springframework.web.servlet:インターフェース)、
**HandlerInterceptorAdapter**(org.springframework.web.servlet.handler.HandlerInterceptorAdapter:抽象クラス)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809422/6c777d44-c1cc-b21c-8e8c-44ccb448ef20.png)

#

元記事を表示

Javaの例外処理をマスターする

## はじめに
この記事ではJavaの例外処理に関する基本的な内容について説明します!
私はエンジニアになる前も少しJavaに触れていましたが、その頃は例外処理について何も理解していませんでした…。
つい最近、ようやく例外処理の使い方や重要性について理解できたのでここにまとめてみようと思います!

## そもそもJavaの例外処理とは?
Javaの例外処理とは、プログラムの実行中に起こる予期せぬエラー(例外)に対処し、プログラムの正常な流れを維持するための仕組みです。これにより、エラーが発生したときにプログラムが順調に動作を続けられるようになります。
つまり、例外が起きたときはあらかじめ用意しておいた処理をやってね~と指定することでプログラミングが動き続けるというだけです。

## 例外処理の具体例
Javaでは主に以下の構文とキーワードを使って例外処理を実施します。

## 1: try-catch
この構造を使用して、例外が発生しうるコードを囲みます。tryブロックの中で例外が発生すると、プログラムの制御は対応するcatchブロックに移り、指定された例外を処理するコードが実行されま

元記事を表示

【Java】シールクラスとは

## はじめに

資格勉強を進める中で、シールクラスを学ぶ機会がありました。

新しく追加されたばかりの言語仕様らしく、キャッチアップも兼ねて投稿させていただきます。

※誤りありましたら、ご指摘いただけますと幸いです。

## 想定読者
初学者の方
普段Javaを使用している方

## シールクラスとは
シールクラスは、Java 17で正式に追加された新しいクラスの型です。

シールクラスを使用すると、**クラスの継承階層を制御する** ことができます。具体的には、クラスの継承先、またはインターフェースの継承、実装先を限定することができます。

簡単にまとめると、Aというクラスをシールクラスとした時に、AクラスはBクラス、Cクラス、Dクラスのみ継承を許可する、という指定ができるということになります。

## 実際の使い方
実際の使い方を見ていきましょう。

“`java
public sealed class Shape permits Circle, Rectangle, Triangle {
//ここでは実装内容は

元記事を表示

Javaで「必ず実行する処理の記述(try..catch..finally)」の動作を確認してみた

# 概要

Javaで「必ず実行する処理の記述(try..catch..finally)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/exception/index3.html

# 実装

以下のファイルを作成しました。
“`JSample3_1.java
class JSample3_1{
public static void main(String args[]){
disp(1);
disp(2);
disp(3);
}

private static void disp(int no){
int n[] = {18, 29, 36};

try{
System.out.println(n[no]);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(“配列の範囲を超えています”);
return;
}
f

元記事を表示

Java Gold SE 11 合格体験記

# **はじめに**
Oracle Certified Java Programmer Gold SE 11に合格したので、私なりの学習方法をまとめました。少しでも参考になれば幸いです。

# **下調べ**
まず、どんな問題が出題されるかを他の方の合格体験記を参考にしながら調べました。以下がその内容です。
・ストリームAPIとラムダ式が絡む問題が、7割出題される。
・黒本の章末問題に似た問題が、5割出題される。

# **学習方法**
使用したものは以下です。
・黒本(徹底攻略Java SE 11 Silver問題集[1Z0-815]対応 )
・ChatGPT

基本的に黒本の各章を3周ずつ回し、13章の章末問題のみ4周しました。下調べで「ストリームAPIとラムダ式が絡む問題」が重要だと分かっていたので、この二つが絡む問題については、解説を見ても理解できないところがあればChatGPTで質問し、理解を深めていました。試験前日には悪あがきでJavaの公式ドキュメントを確認し、Stream APIの戻り値を頭に叩き込みました。

# **実際の試験問題の傾向**
下調べ通り、ストリー

元記事を表示

read file

### Mapに格納
“`
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class CsvToMap {
public Map readCsv(String filePath) {
Map dataMap = new HashMap<>();

try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
// ヘッダー行をスキップ
br.readLine();

while ((line = br.readLine()) != null) {

元記事を表示

オブジェクト指向3

## はじめに

__ 【オブジェクト指向】を__ __ 【Java = ジャバ】言語で考えてみました。__

##### 以下を参照。
https://qiita.com/nekoozi/items/d0e0cb616b45048143af

# スーパークラス

継承元の親クラス

“`java

/**
* 「人」を表す Person クラス
*/

public class Person {

private int age;
private String name;

public Person(int age, String name) {
this.age = age;
this.name = name;
}

public int getAge() {
return age;
}
public void setAge(

元記事を表示

オブジェクト指向2

## はじめに

__ 【オブジェクト指向】を__ __ 【Java = ジャバ】言語で考えてみました。__

##### 以下を参照。
https://qiita.com/nekoozi/items/2cb1d0ed21fa8f12b652

# クラス
“`java
public class Person {

private int age;
private String name;

// コンストラクタの宣言
/* 引数はなし */
public Person() {
this.age = 11;
this.name = “仮太郎”;
}

// コンストラクタの宣言
public Person(int age, String name) {
this.age = age;
this.name = name;

元記事を表示

オブジェクト指向1

## はじめに

__ 【オブジェクト指向】を__ __ 【Java = ジャバ】言語で考えてみました。__

##### Javaの基本的な記載方法は以下を参照。
https://qiita.com/nekoozi/items/c9be16d9dd447e687c6c

# __クラス = 設計図__
「人」を表す Person クラス
“`java
// Person = クラス名
public class Person {

/* 属性(変数)の宣言
⇒ クラスが持つ情報(データを格納するための変数) */

// フィールドの宣言
private int age; //年齢を表す age フィールド
private String name; //名前を表す name フィールド

// コンストラクタの宣言

元記事を表示

桁数指定の数値項目

# 数値項目
データベースにしろ、javaにしろ、数値項目を扱う場合には通常int型にて処理する場合が多い。しかし、0始まりの項目に関しては0が消されてしまう可能性がある。特にIDなどの主キーを設定する場合によく用いられる。
また、主キーの場合には、0始まりでIDを降っていかずに、5桁の数字の場合には、00001などから採番を始める事もある。採番ルールを決めて確実にデータベースへの保管が必要となる。

# 桁数指定の項目に関しては
この桁数でデータベースとやりとりするなど指定されている桁数が決まっている場合には0埋めなどの処理をアプリ側で入れた上で、データベースに登録する必要がある。特にID等で0始まりのものがある場合には文字列型の文字数指定型を設定しておく必要がある。

元記事を表示

一番小さい値 (paizaランク D 相当) Java解答例

# 問題文
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/min_num

# 解答例
“`java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
int min = scanner.nextInt();
for (int i = 0; i < 4; i++) { min = Integer.min(min, scanner.nextInt()); } System.out.println(min); } } } ``` # 補足 JavaのStreamを利用してみた別解が以下。 ```java import java.util.ArrayList; import java.util.Comparator; import java.util.List;

元記事を表示

文字の一致 (paizaランク D 相当) Java解答例

# 問題文
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str

# 解答例
“`java
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
try (Scanner scanner = new Scanner(System.in)) {
String a = scanner.next();
String b = scanner.next();

if (a.equals(b)) {
System.out.println(“OK”);
} else {
System.out.println(“NG”);
}
}
}
}
“`

# 補足
ポイントはJavaで文字列を比較する際`==`を使わないこと。
説明は(ちょっと難しめだが)以下が詳しい。
https://developer.mamezou-tech.com/blogs/2

元記事を表示

OTHERカテゴリの最新記事