JAVA関連のことを調べてみた2023年08月06日

JAVA関連のことを調べてみた2023年08月06日
目次

Javaで「「.」や「..」などのパスの中の冗長な部分を取り除く(Path.normalize)」の動作を確認してみた

# 概要
Javaで「「.」や「..」などのパスの中の冗長な部分を取り除く(Path.normalize)」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/file/index15.html

# 実装
以下のファイルを作成しました。
“`JSample15_1.java
import java.nio.file.Path;
import java.nio.file.Paths;

class JSample15_1{
public static void main(String[] args){
Path p1 = Paths.get(“./doc/report.txt”);
Path p2 = Paths.get(“C:/document/doc/../pdf”);

System.out.println(p1 + ” -> ” + p1.normalize());
System.out.println(p2 + ” -> ” + p2.normalize());
}

元記事を表示

[自己解決] eclipseでJava標準APIのメソッドにステップインできるのはなぜなのか?

# 疑問

eclipseでJavaを書いてデバッグをしているとき、自前で書いたメソッドだけではなく、標準APIのメソッドにもステップインしてソースコードを表示させることができます。
たとえば、println()にステップインすると、PrintStream.classというクラスファイルが開かれて、println()の実装が確認できます。
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150194/a4f80e09-c622-eda4-fc08-e40f20eac1b8.png)

**いやしかし、クラスファイルって.javaファイルをコンパイルしたものだから人が読める形式ではないんじゃないの?** なんでソースコードが見れるの? もしかしてクラスファイルってテキストエディタとかでも開いて読める?

この時点で知っていたこと:
– .javaファイルをコンパイルすると.classファイルができる。JVMはクラスファイルを実行している。
– Javaではクラスはパッケージで管理され、パッケージ

元記事を表示

Spring BootのWebアプリケーションの基本①

今回はIntelliJを使ってSpringBootで簡単なWebアプリケーションを作成したいと思います。

IntelliJとは

IntelliJとは、2001年にチェコにあるJetBrainsが開発したIDEのことで、IDEとはソースコードエディタ、コンパイラ、デバッガなど、プログラミングに必要なツールが一つのインターフェースで統合して扱えるようなソフトウェアのことを指す。

インストール手順

こちらからToolboxの公式ページにアクセスし、ダウンロードする。Toolboxを起動後、「IntelliJ IDEA Community Edittion」を選択し、インストールする。

Spring Initializrを使ってプロジェクトを新規作成する

Spring Initializrとは、Spring Bootプロジェクトを新規作成することができるツールです。

そのツールでプロジェクトを作成し

元記事を表示

Windows11 にインストールした Java を WSL2 でも使用できるようにパスを通し各種パッケージをインストールする

## はじめに

### 説明
タイトルと重複しますが、Windows11 にインストールした Java を WSL2 でも実行出来るようにしました。という内容です。
WSL2 での操作の方が UNIX コマンドが使えたり色々と利便性が高いので、基本的にはいつも WSL2 を使ってます。
普段 Linux など触っている方は分かるかもしれません。
備忘も兼ねて記事にしましたので、過不足あればご指摘下さい。

又、WSL2 の環境構築手順は下記の記事で解説しております。
必要な方は是非参照して下さい。

https://qiita.com/tks_00/items/4347dcc3d381e8e7d8fa

**環境**

– Windows 11 home
– AdoptOpenJDK 11(Java User Group の OpenSDK)

“`:wsl
wsl-ubuntu@user:~$ java –version
openjdk 11.0.20 2023-07-18
OpenJDK Runtime Environment (build 11.0.20+8-post-Ub

元記事を表示

【JAVA・学習ログ③】制御構文について (分岐•繰り返し)

教本に沿ってやってみたシリーズ。
『第3章』突入しました。

≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ

## ■制御構造(制御フロー)
文を実行させる順番のこと。代表的なものに「順次」「分岐」「繰り返し」がある。

*順次
 上から順に文を実行する。構成は学習ログ①、②参照。

*分岐
 条件により実行する文が変わる。

*繰り返し
 一部の命令を繰り返し実行できる。
![スクリーンショット 2023-08-05 005409.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/3d3cb03e-99d4-0c00-bb1f-6044e5fd4ed7.png)
【実行】
![スクリーンショット 2023-08-05 003600.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520365/6fa79b70-aaf4-4773-f38a-411737e89c8a.png)

元記事を表示

Javaで「Pathオブジェクトに含まれるパスの各要素を取得する」の動作を確認してみた

# 概要
Javaで「Pathオブジェクトに含まれるパスの各要素を取得する」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/file/index14.html

# 実装
以下のファイルを作成しました。
“`JSample14_1.java
import java.nio.file.Path;
import java.nio.file.Paths;

class JSample14_1{
public static void main(String[] args){
Path p1 = Paths.get(“C:/code/java/file/doc/report.txt”);
Path p2 = Paths.get(“D:/image/picture”);
Path p3 = Paths.get(“file/backup.bat”);
Path p4 = Paths.get(“profile.jpg”);
Path p5 = Paths.get(“C:/”);

元記事を表示

ABC005の解答[Java]

## はじめに
いつの間にかこのコンテストの問題が全部解けていたので載せようと思います。

では、見ていきましょう。

## A – おいしいたこ焼きの作り方
問題文は[こちら](https://atcoder.jp/contests/abc005/tasks/abc005_1)

xがyの何倍かを求めて上げれば良いですね。
単純に割り算をしてあげれば切り捨て除算になります。
“`A.java
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//x、yの受け取り
int x = sc.nextInt();
int y = sc.nextInt();

//切り捨て除算
System.out.println(y/x);
}
}
“`

## B – おいしいたこ焼きの食べ方
問題文は[こちら](https://atcoder.jp/contests/

元記事を表示

[GCP] AI Dialogflowの機能調査x実装

# GCPのDialogflowについて

Dialogflowは、Google Cloud Platform(GCP)の一部であり、自然言語処理(NLP)と機械学習(ML)を使用して、チャットボットや会話型インターフェースを作成するための開発者向けプラットフォーム。以下では、Dialogflowの概要と主な機能について説明する。

## 概要
Dialogflowは、開発者がユーザーとの対話型インターフェースを構築するために必要なツールやAPIを提供する。このプラットフォームは、ユーザーが自然な言語で意図を伝え、回答やアクションを得ることができるAIエージェントを作成するのに役立つ。Dialogflowの主な要素は以下の通り。

– **エージェント (Agent)**: エージェントは、ユーザーとの対話を管理するためのコアコンポーネント。ユーザーが対話を開始すると、エージェントはユーザーの発話を解釈し、適切な応答を生成するためのロジックを実行する。

– **インテント (Intent)**: インテントは、ユーザーの発話とエージェントの応答の関係を定義するもの。エージェントは、ユ

元記事を表示

[リサーチ・メモ]ClientBuilderでSendGrid実装

## 背景
仕事で使用する予定だったSendGridを、事前の自己学習では、pomに依存関係を追加する方法で利用していた。
しかし、実際はClientBuilderで実装することとなり、触ったことが無かった為、備忘録として纏める。

## 自己学習での方法
1\. 下記をpomに記載し依存関係を追加
“`

com.sendgrid
sendgrid-java
4.7.0

“`

2\. ライブラリをインポートする
“`
import com.sendgrid.Method;
import com.sendgrid.Request;
import com.sendgrid.Response;
import com.sendgrid.SendGrid;
“`

3\. メール本文を作成し送信する
今回は事前に作成したテンプレートに文字を埋め込み送信する
※[ドキ

元記事を表示

モジュールシステムを使ってみた~OpenJDK17へのアップデートに備えて~

# 目次
– **1. はじめに**
– [1-1. 執筆時点の人物像](#1-1-執筆時点の人物像)
– [1-2. 執筆のモチベーション](#1-2-執筆のモチベーション)
– [1-3. モジュールシステムとは?](#1-3-モジュールシステムとは)
– [1-4. JEP403という壁](#1-4-jep403という壁)

– **2. 検証(検証用のプロジェクトをGitHubで公開しています)**
– [2-1. 検証環境](#2-1-検証環境)
– [2-2. 検証資材の概要](#2-2-検証資材の概要)
– [2-3. カプセル化の検証](#2-3-カプセル化の検証)
– [2-4. 無名モジュール](#2-4-無名モジュール)

## 1-1. 執筆時点の人物像
・入社5年目
・Webシステム Java(Spring系)
・AP基盤レイヤ担当
・その他、誰もやりたがらないこと(性能試験、CI/CD構築、試験環境構築…)を担当

## 1-2. 執筆のモチベーション
担当しているシステムが、

元記事を表示

【Java】 イテレータ

# イテレータ(iterator)とは
* リストに含まれる1つの箱を「今ここ」と指す矢印のようなもの
矢印は「次へ」と指示されると次の箱を指すように移動する
## Iterator<>が備えるメソッド
* `hasNext()`・・・次の要素を指せるかを判定。戻り値/boolean
* `next()`・・・次の要素を指し、その内容を返す。戻り値/反復処理での次の要素
## イテレータの取得
“`java:イテレータの取得
Iterator<リスト要素の型> it = リスト変数.iterator();
“`
* イテレータ(矢印)はリストの`先頭(最初の箱)よりもっと前`を指した状態が取得される(0番目の前)
## イテレータを用いた要素の取り出し
“`java:イテレーターを使用したArrayListの繰り返し処理
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorClass {
public static

元記事を表示

JavaでPDF文書のレイヤーを追加または削除する方法

PDFレイヤー(可視レイヤーまたは追加レイヤーとも呼ばれる)は、PDF文書内のコンテンツの可視性を整理および制御するための方法です。 インタラクティブな文書の作成、機密情報の非表示、多言語版の作成などに使用できます。 レイヤーを追加したり削除したりすることで、ユーザーは必要に応じてPDF文書の表示や内容をカスタマイズできます。 この記事では、無料の[Free Spire.PDF for Java](https://jp.e-iceblue.com/introduce/free-spire-pdf-for-java.html)を使用して**PDF文書にレイヤーを追加**したり、**PDF文書からレイヤーを削除**する方法について説明します。
– **[PDFレイヤーの追加](#pdfレイヤーの追加)**
– **[PDFレイヤーの削除](#pdfレイヤーの削除)**

### 依存関係の追加
Free Spire.PDF for Javaは、[公式サイト](https://jp.e-iceblue.com/download/free-spire-pdf-for-java.html)から手

元記事を表示

Javaで「相対パスを絶対パスに変換する(Path.toAbsolutePath)」の動作を確認してみた

# 概要
Javaで「相対パスを絶対パスに変換する(Path.toAbsolutePath)」の動作を確認してみました。以下のページを参考にしました。

https://www.javadrive.jp/start/file/index13.html

# 実装
以下のファイルを作成しました。
“`JSample13_1.java
import java.nio.file.Path;
import java.nio.file.Paths;

class JSample13_1{
public static void main(String[] args){
Path p1 = Paths.get(“/code/java/file/report.txt”);
Path p2 = Paths.get(“report.txt”);
Path p3 = p2.toAbsolutePath();

System.out.println(p1);
System.out.println(p2);
System.out.println(p3);

元記事を表示

assertThatとは

## assertThat

:::note
**JUnitやHamcrestを使用して、テストコード内で条件を検証するためのメソッド**
:::

テスト対象の実行結果やオブジェクトの状態を、期待する値や条件と比較する
比較結果が一致しない場合は、テストがFailする

## assertThatの例

### このメソッドをテストする

“`java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
“`
### assertThatを使ってテストする

“`java
import org.junit.Test;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

public class CalculatorTest {

@Test
public void testAdd() {

元記事を表示

Azure Container Apps (ACA) に Java JAX-RS カスタムコンテナイメージをデプロイする

# Azure Container Apps (ACA) に Java JAX-RS カスタムコンテナイメージをデプロイする

こんにちは、株式会社船井総研デジタルの @fsdg-adachi_h です。今回は、Azure Container Apps 環境で、Java JAX-RS Web アプリケーションをコンテナとして起動する方法を紹介します。
![java_on_azure-container-apps.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3206449/2debf0a5-df60-adb4-3efa-fe8eb0c69ad9.png)

## 目的

Windows 11 の Linux でクラウド開発します。

こちらから記事の一覧がご覧いただけます。

https://qiita.com/fsdg-adachi_h/items/6119ab05d8b13527efd8

## 実現すること

Microsoft Azure Container Apps (ACA) に Java

元記事を表示

Leetcode 17. Letter Combinations of a Phone Number

https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/

## アプローチ
– backtracking

“`java
class Solution {

public List letterCombinations(String digits) {
ArrayList result = new ArrayList<>();
if (digits.length() == 0) {
return result;
}

HashMap map = new HashMap<>();
map.put(‘2’, “abc”);
map.put(‘3’, “def”);
map.put(‘4’, “ghi”);
map.put(‘5’, “jkl”);

元記事を表示

【Java】HashMapの使い方

# はじめに

### Mapとは
* 「キー」と「値」をペアにして複数のデータを格納できる
* 要素を繰り返し処理で「ループ」する事が可能
※ 「キー」任意の文字列を使用できます。「値」StringやIntegerなどの参照型です。

# HashMap
* Mapの実装クラス
* キーと値のペアをマップに追加します
※ Hash(寄せ集め)、Map(位置付け)

### HashMapのインスタンス化
“`java:インスタンス化
Map<キーの型, 値の型> マップ変数 = new HashMap<キーの型, 値の型>();
“`

# サンプルコード
“`java:HashMapクラスの利用
public class ClassA {
public static void main(String[] args) {
// ペアで値を格納
Map prefs = new HashMap<>();
prefs.put(“北海道”, 1000);
prefs.put(

元記事を表示

Spring bootで良く見るDI方法の違い(コンストラクタ vs @Autowired)

日頃の業務でなんだかんだJavaを書きますが、良くわかっていない部分があったのでその解消。

Springフレームワークを使っていますが、他のクラスを利用する際にDIしますよね。
書き方としては、@Autowiredを利用する場合とコンストラクタを利用する場合があると思います。

皆さんはどちらですか。
私が担当しているアプリでは後者のコンストラクタを利用する方が主流です。
せっかくなのでこの違いを整理してみました。

# コンストラクタを利用する書き方
HogeValidatorクラスをDIする際こんな感じで書きますね。
“`Main.Java
@Service
public class HogeServiceImpl implements HogeService {

// ① インターフェースのfinal宣言
private final HogeValidator hogeValidator;

// ② コンストラクタでのDI
@Autowired
public HogeService(HogeValidator hogeVal

元記事を表示

Javaで「Pathオブジェクトを使ってファイルやディレクトリを表す」の動作を確認してみた

# 概要
Javaで「Pathオブジェクトを使ってファイルやディレクトリを表す」の動作を確認してみました。以下のページを参考にしました。

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

# 実装
以下のファイルを作成してみました。
“` JSample1_1.java
import java.nio.file.Path;
import java.nio.file.Paths;

class JSample1_1{
public static void main(String[] args){
Path p1 = Paths.get(“C:\\code\\java\\file\\report.txt”);
Path p2 = Paths.get(“C:”, “code”, “java”, “file”, “report.txt”);
Path p3 = Paths.get(“C:/code/java/file/report.txt”);
Path p4 = Paths.get(“C:/code/ja

元記事を表示

スッキリわかるJava入門 第3版を読んでみて-part4-

# はじめに
こんにちは(・ω・)ノ
今回は配列について学びました!

## 第4章 配列
### 1.配列のメリット
データ構造…一定のルールに従ってデータを格納する形式
代表的なもの __配列__

配列とは…
 同一種類の複数データを並び順で格納するデータ構造
<イメージ>
箱が連続して並んでいる
[0][1][2][3][4][5][6][7]

箱の一つひとつを __要素__
配列の各要素には同一種類のデータしか格納できない
 ⇨「1つ目には数値、2つ目には文字列」のようなことはダメ?

各要素にある番号を __添え字__
添え字は0から始まる決まりになっている

### 2.配列の書き方
配列の作成には以下の2ステップが必要
Step1.配列変数の宣言
 `要素の型[] 配列変数名`
Step2.要素の作成と代入
 `配列変数名 = new 要素の型[要素数]`
上記のStep1,2を同時に行うことも可能
例:`int []scores = new int[5];`

配列の要素数の取得
 `配列変数名.length`
配列の利用方法
`scores[1]=10;`

元記事を表示

OTHERカテゴリの最新記事