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

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

Intellij IDEAでtypo検出の緑の波線を消す方法

## 症状

![スクリーンショット 2024-06-23 14.26.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3172801/2b43ba70-e7ae-bbd5-4011-3902661687c2.png)

邪魔ですね。

## 対策

Settings(command + ,) → Editor → Inspections → Proofreadingのチェックを外せばオーケーです。

![スクリーンショット 2024-06-23 14.29.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3172801/f0129423-e192-6e8f-be4f-7b3011534982.png)

![スクリーンショット 2024-06-23 14.33.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3172801/

元記事を表示

Java Gold 紫本

# enum P9
**特定の値を列挙するオブジェクトのこと**
→ 列挙型の実体 = 定数、メソッドを持つクラス
## 注意点メモ
・明示的なインスタンス化はできない
・オブジェクト.クラス定数でアクセス
・コンストラクタ、メソッド、変数定義可
・抽象メソッド、インタフェースのオーバーライド、実装可
・定数は書いた順番に管理
“`enum.java
enum Card {
SPADES,
CLUBS,
DIAMONDS,
HEARTS
}
↓ コンパイルすると…
final class Card extends java.lang.Enum {
public static final Card SPADES = new Card();
public static final Card CLUBS = new Card();
public static final Card DIAMONDS = new Card();
public static final Card HEARTS = new Card(

元記事を表示

【Java】ArrayListクラスを継承する

#### ▶はじめに
ArraiListクラスの継承について最近学んだのでアウトプットのために記事を書こうと思いました。
初学者のため、間違いなどありましたご指摘いただけますと幸いです。

#### ▶(前提)ArrayListとは
そもそもArrayListってなに?というところから説明できればと思います。

ArrayListとは、Listインターフェースを実装したクラスの一つです。
実装には配列が使われており、要素の追加や削除ができます。
配列ではないのか?と思う方もいるかもしれませんが
配列はサイズが宣言時に固定されている一方で、ArrayListは後から必要に応じて拡張されます。
“`Java:宣言方法
ArrayList<-> 変数名 = new ArrayList<->();

//上記に書き方よりも下記で書かれていることの方が多い
List<-> 変数名 = new ArrayList<->();
“`
なぜList<->という書き方なのかについては今回触れないので、調べていただければと思います。
(QiitaでもListとArrayListについて書かれている記事

元記事を表示

Spring Data Jpaの@OneToMany @ManyToOne Entityテーブル結合基礎 備忘録#5

### ER図

![スクリーンショット 2024-06-23 12.28.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/7d3c3f50-9c83-5a6a-d92d-81599f62b29e.png)

### 成果物イメージ
![スクリーンショット 2024-06-23 12.53.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/f1d999dc-eeab-966c-ae14-d4153be1e560.png)

### schema.sql

“`schema.sql
— テーブル削除
DROP TABLE IF EXISTS company CASCADE;
DROP TABLE IF EXISTS employee CASCADE;

— カテゴリーテーブル
CREATE TABLE company
(
id SERIAL PRIMARY KEY,

元記事を表示

[超初心者向け]プログラミング??Java??って人に

# 概要
### この記事で何がわかるようになる?
+ そもそもプログラミングってどういうものなの?
+ Javaの歴史や考え方
+ どんな開発を行うことができるか、日本で使える??

### 今回の記事で覚えておきたいこと
+ プログラミングって?
+ Javaはオブジェクト指向という考え方がある

# そもそもプログラミングってなんなの?(小声)
+ コンピュータに対して指示書を作成することをプログラミングという
– この指示書自体のことをプログラムという
– プログラムが与えられているから、私たちの動作によって処理を行ってくれる
– キーボードを打ったら文字が反映される
– 指で画面をなぞったらスライドされる などなど
– プログラミング言語とは機械への指示書を書くために用いられる言葉のこと
– 機械は基本的に二進数しか読めないからプログラミング言語を書いて、それを機械語に変換して指示を与える
> これが機械語のイメージ
>
> 10110000 01100001
>

# Javaとは
– Javaとは先ほど説明したプログラ

元記事を表示

Javaで「配列の要素を逆順に並び替える」の動作を確認してみた

# 概要

Javaで「配列の要素を逆順に並び替える」の動作を確認してみました。
以下のページを参考にしました。

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

# 実装

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

class JSample15_1{
public static void main(String[] args){
int[] src = {12, 24, 18, 31, 17};
System.out.println(Arrays.toString(src));

for (int f = 0, l = src.length – 1; f < l; f++, l--){ int temp = src[f]; src[f] = src[l]; src[l] = temp; } System.out.println(Arrays.toString(src

元記事を表示

OpenAI APIをJavaで使用する: 非公式クライアント「jvm-openai」の紹介

こんにちは、皆さん!今日は、Javaを使ってOpenAI APIを簡単に利用するための非公式クライアントライブラリ「jvm-openai」について紹介します。このライブラリを使用することで、OpenAIのさまざまなAPI機能をJavaコードから直接利用できるようになります。

# jvm-openaiとは?

「[jvm-openai](https://github.com/StefanBratanov/jvm-openai)」は、Java向けの非公式OpenAI APIクライアントで、Jacksonを使用してJSONを解析するシンプルなライブラリです。このライブラリを使用することで、OpenAIのさまざまなAPI(例えばチャット、画像生成、音声生成など)を簡単に操作することができます。

## 依存関係の追加

まず、Java 17以上を使用する必要があります。プロジェクトに依存関係を追加するには、以下のように設定します。

### Gradleの場合

“`groovy
implementation(“io.github.stefanbratanov:jvm-openai:${v

元記事を表示

Javaの値型(基本データ型、プリミティブ型)と参照型(オブジェクト型)の違い

# 値型(プリミティブ型、基本データ型)と、参照型(オブジェクト型)の違い

| | 値型(プリミティブ型)
基本データ型
| 参照型
(オブジェクト型)
|
| —- | —- | —- |
| 型 | intとか | Integerとか |
| 頭文字 | 小文字 | 大文字 |
| 特徴 | ・変数に「値」そのものを持つ
・変数のサイズ(bit)が決まっている
 ・既定サイズを超える値を格納することはできない
 ・適切な型を使わないと無駄にメモリを使う
・何のメソッドも持たない
(「int.メソッド名」とかのドット演算子でメソッドを呼び出せない)
・オブジェクトではなく単なる値|・変数には「値」そのものではなく、値がメモリのどこに格納されているかを示す「参照値」が格納される |

※基本データ型=値型(プリミティブ型)
 ↑言い方が違うだけで同じもの

# ラッパークラス(wrapper class、プリミ

元記事を表示

Java 16で登場した「recordクラス」について

# 導入

Java 16では新しい言語機能として「レコードクラス」というものが導入されました。
私自身、ほとんどJava8か11のプロジェクトばかりしか触れてこなかったので、きちんと触ったことがなかったのですが、この機能が便利そうでしたので、記事にまとめてみました。
ですので、本記事では、レコードクラスの概要と使用例を紹介していきます。

# レコードクラスの概要
レコードクラスは、簡潔にイミュータブルなデータキャリアを定義するための機能です。
古くから利用されているJavaBeansのようなゲッターのみを持つシンプルなクラスを簡潔に定義できます。

これにより、不要なコード(getterメソッド、`toString()`、`equals()`、`hashCode()`メソッドの定義)の明示的な実装を削減することができ、コードの可読性と保守性が向上します。

## レコードクラスの定義

レコードクラスは、`record`キーワードを使用して定義します。
例は以下のようになります。

“`java
record レコードクラス名(型1 引数名1, 型2 引数名2, …) {}

元記事を表示

Stream API入門

# 導入

JavaのStream API(ストリームAPI)は、コレクションなどのデータソースに対してパイプライン処理を行うための強力な機能を提供してくれます。これを使うことで、**データを連続的に処理**しながら、各ステップを**直感的に記述**できます。
本記事では、Stream APIの基本を入門レベルでわかりやすく解説します。

# Stream APIの概要

## パイプライン処理

Stream APIのメインになるのはパイプライン処理です。
パイプライン処理とは、`ある処理の出力が次の処理の入力`となり、一連の処理が**連鎖的**に行われる仕組みです。
例えば、データをフィルタリングしてから、変換し、最後に集計する、といった一連の処理をパイプラインとして記述できます。

## ストリームの基本構造

ストリームの処理は次の3段階に分かれます。

1. **ストリーム生成**
2. **中間操作**
3. **終端操作**

以下の例ではこれらの3段階のステップが実行されています。

“`java
List list = Arrays.asList(

元記事を表示

WebSocketメッセージングサーバ”Madoi”をASL2で公開しました

チャットや共有ホワイトボードなどの多人数参加型のウェブアプリを作る際に必要となる、メッセージ送受信や入退室管理、オブジェクト状態管理などの機能を実装したWebSocketサーバ “Madoi” を、オープンソースライセンス(ASL2)で公開しました。この記事では、起動方法から簡単な利用方法までを駆け足で解説します。

## まとめ
* サーバ側開発無しで、チャットや共有ホワイトボードなどの多人数参加型アプリが開発できる、オープンソースのWebSocketサーバを公開した
* https://github.com/kcg-edu-future-lab/madoi
* サーバの実装言語はJava。Dockerで一発起動できる
* クライアントライブラリはJavaScript/TypeScript用
* シンプルな記述でブラウザ間のメッセージ送受信、関数実行の共有、オブジェクトの共有が可能
* Issue登録・プルリク待ってます!

## なんで”Madoi”?

親しい人たちが集まり楽しく過ごす場所である”円居”のようなアプリを作るフレームワークという意味と、ネットワークプログラ

元記事を表示

requiredで複数チェックボックスを、1つ以上のチェックを必須にする 備忘録#4

### シンプルな使い方

“` diff_html
HTML

商品 値段
+ +

“`

このように、inputタグないに`required`とすることによって、
テキストエリアに入力されず、登録ボタンを押された場合、以下のような表示になります。

![スクリーンショット 2024-06-22 14.33.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3807467/13dfde3e-1cf5-e1f9-17f2-0f

元記事を表示

Gradleってなんだ?JavaやKotlinのビルドってどうやっているの?

# Gradleとは?
Gradleは、主にJava,Kotlin,ScalaのようなJVMベースの言語で開発されたソフトウェアプロジェクトの**ビルド自動化ツール**.実はPythonやC++にも対応している.

:::note info
**ビルドツールとは**
ビルドツールとは、以下のようなプログラムのビルドや実行を自動化するツールのこと.
– 必要なライブラリのインストール
– コンパイル
– オートテスト
– パッケージ(Jarファイル)の作成
– 実行
:::

# なんで作られたのか
Antや Maven などの従来のビルドツールの欠点を克服するために開発された.

### Antの欠点
– **XMLベースの設定**
Antは、XMLを使用してビルドスクリプトを記述する.XMLは冗長で読みにくく,大規模なプロジェクトではスクリプトが複雑になりがち…また,スクリプトのロジックを表現するために,XMLにカスタムタスクを埋め込む必要がある.

– **依存関係管理の欠如**
Antには、依存関係管理のための組み込みの仕組みがない.外部ライブラリの依存関

元記事を表示

Javaで「2つの配列の要素の値を比較する(equals,deepEquals)」の動作を確認してみた

# 概要

Javaで「2つの配列の要素の値を比較する(equals,deepEquals)」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/array/index11.html

# 実装

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

class JSample11_1{
public static void main(String[] args){
int[] a = {85, 78, 92};
int[] b = a;
int[] c = {85, 78, 92};

System.out.println(a == b);
System.out.println(a == c);
System.out.println(b == c);
System.out.println(Arrays.equals(a, b));
System.out.println(Arra

元記事を表示

よく使う関数型インターフェース(入門レベル)

# 導入

Java SE 8から、関数型インターフェースが導入され、Javaでの関数型プログラミングがより簡単になりました。関数型インターフェースは、1つの抽象メソッドを持つインターフェースです。

**「1つの抽象メソッドを持つインターフェース」** というワードですぐに`ラムダ式`が思いついた人はさすがです。
この関数型インターフェースは、ラムダ式を利用したものになります。

本記事では、特によく使われる関数型インターフェースについて説明し、その利用方法を紹介します。

# 使用頻度の高い関数型インターフェース

## Function\

`Function`は、引数を1つ取り、結果を返す関数です。
`T`は引数の型、`R`は戻り値の型です。
抽象メソッドは`R apply(T)`になります。

### 使用例

“`java
Function ageFunction = (age) -> { return age + “歳”; };
String ageString = ageFunction.apply(30);

元記事を表示

SpringBootを使って、タダ(無償)でHTMLファイルをPDFにする

# はじめに
SpringBootを使った、管理サイトを構築予定です。
その中の要件としてPDFを出力したいというものがあったので調べてみました。
もちろん有償のライブラリを使えばできるのは知ってましたが、Google Maps Platformを
使ったりランニングコストがかさむので、無償にこだわって調査から開始

# やってみる
## 環境
Spring Boot 3.3.0

PDFの作成には、以下を利用しています。

https://github.com/danfickle/openhtmltopdf

## 日本語フォントファイルを格納
無料で使えるフォントファイルを取得します。

「Noto Sans CJK JP」のダウンロード方法【フォント見本あり】

ダウンロードしたファイルを解凍して、以下の通り格納
src/main/resources/fonts/NotoSansJP-Regular.ttf

## Gradleの設定
PDF変換のために、以下の2行を追加してください。

“`gradle
implementation ‘com

元記事を表示

homebrewでjavaをインストールしたがUnable to locate a Java Runtimeエラーになった時の解消法

## 背景

“`
$ brew install java
“`

でmac book proにインストールをしたのに

“`
$ java –version
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
“`

になった

## PCスペック

| 項目 | 情報 |
| — | — |
| OS | macOS Sonoma 14.4.1 |
| ハードウェア | MacBook Pro 16inc 2023 |
| プロセッサ | Apple M2 pro |
| メモリ | 32GB |

## 解消法

シンボリックリンクを張るといいらしい。

### 以下のようにして対応

javaのインストール

“`
$ brew install java
“`

シンボリックリンクを張る
“`
$ sudo ln -sfn $

元記事を表示

Javaの try-with-resources文の紹介

# 導入
今回はJava7以降で使用可能な`try-with-resources`文について紹介していきます。
これは以前のこちらの記事で触れた「入出力ストリーム」における課題を解決するのに向いているので、ぜひ参考にしてください。

https://qiita.com/F-monsoon/items/cac08dc5475c8f4ee69e

# try-with-resources文の紹介

プログラムでファイルやネットワーク接続、データベースなどを利用する際、リソースの管理は非常に重要です。特に、リソースを使い終わった後の「クローズ処理」を忘れると、メモリリークや他の問題の原因になります。

従来の方法では、`finally`句で手動でリソースを閉じる必要がありましたが、Java 7から導入された`try-with-resources`文を使えば、リソースの自動解放が可能になります。これにより、コードが簡潔になり、クローズ処理の記述漏れを防ぐことができます。

## 1. 従来のtry-finallyによるリソース管理

従来のリソース管理では、次のように`try-finally`

元記事を表示

SevletとJSPで開発していた時に突然特定のページ全体が???になり文字化けする

## Eclipseを使うのはもう新卒だけかもしれないけど

Eclipse、Sevlet、jsp、Tomcatという古代のツールを使って開発していると様々なわけわからないエラーに遭遇します。

### 特定のページだけが文字化けする問題

ServletからJSPにフォワードする仕組みですが突然JSP全体が文字化けというかすべて「???」になりました。これはWindows XP時代に海外のPCを使って日本語を表示させたときに似ていました。

文字化けというか日本語全部が「???」と表示されていました。

ウェブには

**「文字エンコーディングが`UTF-8`になっていること」**

を確認しろとありましたが、その面は全く問題ありません。

### 原因はServletのミス

詳しいことは私の性格上忘れましたがSevletにミスがあったようです

元記事を表示

Javaで「2つの配列を連結して新しい配列を作成する」の動作を確認してみた

# 概要

Javaで「2つの配列を連結して新しい配列を作成する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/array/index17.html

# 実装

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

class JSample17_1{
public static void main(String[] args){
int[] src1 = {28, 14, 35, 19};
int[] src2 = {17, 40, 23};
int[] dst = new int[src1.length + src2.length];

System.arraycopy(src1, 0, dst, 0, src1.length);
System.arraycopy(src2, 0, dst, src1.length, src2.length);

System.out.prin

元記事を表示

OTHERカテゴリの最新記事