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

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

Java Silver Switch文

## Switch文 NullPointerExceptionがスローされる時

・finalで修飾するとcase式で使える

・変数case式では使えない

・引数にnullを渡すとnullpointerexceptionが発生

“`java
final int Num = 0;
int num = 0;
String str=null;

try {
switch(str) {//条件はString型
case “10” : System.out.println(“a”); 
break;
case “Num”:System.out.println(“b”);
break;
default:System.out.println(“default”);
}
}
catch(NullPointerException n){
System.out.println(“nullです”); //nullを入れているため
}

元記事を表示

Java Silver めも

# var の使い方
**ローカル変数** の宣言でしか使えない

:::note alert
フィールドの宣言や、引数宣言で使うとコンパイルエラーになる
:::

# ==とequals

#### ==は同一性

同一性は同じ参照かどうかを判定

“`java
Sample s1 = new Sample(10);
Sample s2 = s1;
System.out.println(s1==s2);
//true
“`

“`java
Sample s1 = new Sample(10);
Sample s2 = s1;
s1 = new Sample(10)
System.out.println(s1==s2);
//false
“`

“`java
Sample s1 = new Sample(20);
Sample s2 = new Sample(20);
System.out.println(s1==s2);
//false
“`
#### equalsは同値性

“`java
Sample s1 = new Sample(20);
Sample s2 =

元記事を表示

JavaはまだChromeやEdgeで使えるのか?解決策としてのCheerpJの紹介

![rectangle_large_type_2_305e069cc554723270842d3aefc91891.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3486144/62d4afb4-b6be-2b7f-a43a-c2ccbe77df07.jpeg)

広く使われているプログラミング言語であるJavaは、何十年もの間、ソフトウェア開発業界の基本技術となってきた。Webブラウザを含むさまざまなプラットフォームで数多くのアプリケーションを動かしてきた。しかし、テクノロジーが進化し続けるにつれ、[Javaとモダンブラウザの互換性](https://leaningtech.com/cheerpj/)が議論されるようになりました。

このブログは、その疑問を解決することを目的としている: Javaは今でもChromeやEdgeで使えるのか?

__Javaアプレットとその衰退__

Javaアプレットは、かつてWebブラウザでインタラクティブなコンテンツを配信するための一般的な手段でした。アプレットに

元記事を表示

Eclipse と IntelliJ IDEA で Java コンパイラの仕様に差異がある

# 概要
Eclipse から IntelliJ IDEA に乗り換えた時に、
Java コンパイラの仕様の差異で、落とし穴にハマったのでメモ程度にまとめます。

# 詳細
– Eclipse では **Eclipse Compiler for Java** (略してECJ)を使用している
– IntelliJ IDEA では **javac** を使用している

基本的には ECJ の方が制約が緩い傾向にあるため、
ECJ では通っていたソースコードが javac では通らないということが発生しうる

**Eclipse どっぷり Java エンジニア**の場合、知らず知らずのうちにECJでしか通らない構文でコーディングしている事があるので、
同じソースコードを IntelliJ IDEA に持っていた時にビルドエラーが発生して困ることがあります。。(悲しい)

# 解決策
IntelliJ IDEA において Eclipse と同様のコンパイルにしたい場合は、
Java コンパイラの設定を開き、使用するコンパイラを **javac** → **Eclipse** に変更する

![

元記事を表示

ListのnullチェックにはCollectionUtils.isEmpty()を使おう!

はじめに(読み飛ばし推奨なので折り畳み)

こんにちは。なっしーです!

しばらくQiitaを放置しつつ、業務や資格試験に挑戦などをしていたらあっという間に開発経験1年半強?くらいになってました。
大学やPa〇zaで書いていた独りよがりなコードとは違い、きちんとした制約や原則に基づいた美しいコードにずっと触れる毎日でとても楽しいです。

今回は業務で得た豆知識を紹介したいと思います!
(おそらく多くの人が知っているものかもしれませんが、私と同じ若手向けの記事なのでユルシテ…ユルシテ…)

# 想定読者層
この記事は私と同じ若手向けのものです。
Javaがほんの少しだけわかり、Javaでの業務ロジックや個人開発などでコードを書き始めた人を想定しています。

# 忙しい人向け結論
– ListのnullチェックにはCollectionUtils.isEmpty()を使おう!
– CollectionUtils.isEmpty()はListだけでなく、Collectionで

元記事を表示

Java勉強メモ7_標準ライブラリ

# 標準ライブラリ
### Stringクラス
**String**クラスは、文字列を操作するためのメソッドを提供します。
#### 主要な特徴
文字列は不変であり、一度作成すると変更できません。
新しい文字列を作成すると、実際には新しい**String**オブジェクトが生成されます。
#### 主要なメソッド
1. length()
**説明**: 文字列の長さ(文字数)を返します。
**例:** str.length()
2. charAt(int index)
**説明:** 指定されたインデックス位置にある文字を返します。
**例:** str.charAt(0)
3. substring(int beginIndex, int endIndex)
**説明:** 文字列の指定された範囲のサブストリングを返します。
**例:** str.substring(1, 4)
4. equals(Object anotherString)
**説明:** 文字列が指定されたオブジェクトと等しいかどうかを比較します。
**例:** str.equals(“test”)
5. equals

元記事を表示

Java勉強メモ6_例外処理

# 例外処理
### Try-Catch ブロック
**概要:** **try**ブロック内でコードを実行し、例外が発生した場合は**catch**ブロックでそれを捕捉して処理します。
“` java
try {
// 例外が発生する可能性のあるコード
} catch (ExceptionType name) {
// 例外を処理するコード
}
“`
例:
“` java
try {
int division = 10 / 0;
} catch (ArithmeticException e) {
System.out.println(“算術例外が発生しました: ” + e.getMessage());
}
“`
### 例外の種類
Javaの例外には大きく分けて以下の三種類があります。

1. チェック例外(Checked Exceptions)
コンパイル時にチェックされる例外。
プログラマがこれらの例外に対処することが期待されます(例: IOException、SQLException)。

2. 実行時例外(Runtime Exceptio

元記事を表示

Java勉強メモ5_クラスとオブジェクト

# クラスとオブジェクト

### クラスの定義
クラスはオブジェクトの設計図です。クラスを定義することで、オブジェクトの属性(フィールド)と振る舞い(メソッド)を指定します。

#### 1.構造
**フィールド(Fields):** オブジェクトの特性を表します。例えば、車のクラスには色や速度などが含まれます。
**メソッド(Methods):** オブジェクトが実行できるアクションを定義します。例えば、車が加速する動作など。
**コンストラクタ(Constructors):** クラスからオブジェクトを作成するための特別なメソッドです。オブジェクトの初期化に使われます。
“` java
public class Car {
String color; // フィールド
int speed; // フィールド

// コンストラクタ
Car(String c, int s) {
color = c;
speed = s;
}

// メソッド
void accelerate(int

元記事を表示

SpringBootのWarパッケージをDockerコンテナ化してみる

目的

Springbootアプリケーションをコンテナ化したことがなく、SpringbootのDockerコンテナ化の記事は見るが、Warパッケージのコンテナ化の記事は見た記憶がないのでWarでも問題なくコンテナ化できるか確認と練習のため。自分用メモ

プロジェクトの用意

コンテナ化の確認のためだけなので依存関係は最小限(画像はGradleになっているがMaven選択)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673518/edf0280f-b3a0-eb98-3fef-af7bbed5dc1c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673518/b0f3b083-d6f8-071c-e448-2b8bdf6128ba.png)

“`pom.xml

元記事を表示

可変長引数【Java】

### 可変長引数とは
Java言語における可変長引数は、メソッドに任意の数の引数を渡すことができる機能です。
メソッドの定義側では配列と同じように扱います。
また、呼び出し側で直接配列を指定することも可能です。

### 書き方
::: note
メソッド定義側
型と引数名の間に「…」を入れて書く。
“`
例)static void Sample(String… name) {}
“`

異なる型を引数に指定する場合は、以下のように**最後**に可変長引数を定義します。
“`
例)static void Test(int num, byte b, String… name) {}
“`
:::

::: note
メソッド呼び出し側
引数を通常通りカンマ区切りで定義します。
“`
例)Sample(“111”, “abc”, “aiueo”);
“`
:::

元記事を表示

FlinkとDroolsでストリーム処理

## はじめに

本記事ではApache FlinkとDroolsとを組み合わせ、ストリーム処理を行う方法について書いていきます。
ストリーム処理とは、システムにおいて継続的に発生するデータを、リアルタイムで収集・変換・解析することで、ビジネスにとって有用な結果を導きだすことを指します。

金融商品の価格データをもとにした自動売買の仕組みや、工場のセンサーデータをモニタリングすることによる異常検知など、様々なシーンで応用されています。

## Flink(Apache Flink)について

Javaで利用できるOSSで、ストリーム処理を実装するための豊富なAPIが提供されています。
データを受け取り、特定の操作をしたうえで後続の処理に流す事が可能です。
Flinkでは、下図のようにData Source・DataStream Transformation(Operator)・Data Sinkという3段階の手続きを記述することでストリーム処理を実装することができます。

“`mermaid
graph

1_[Data Source]
2_[Operator]
3_[Data S

元記事を表示

Spring Boot学習⑤~エラーメッセージをプロパティファイルで一元管理する~

前→https://qiita.com/19960417akiho/items/4f89cf51b69125c4cdc9

以下の動画を参考に、ハンズオン形式でSpring BootでWebアプリを制作していきます。

今回はPart11。

エラーメッセージをプロパティファイルで一元管理できるようにします。

まずは、src/main/resorces下に、エラーメッセージを管理するファイルを作ります。

ファイル名は必ず`messages.properties`でないといけません。

このファイルに、キーと値という形式でメッセージを管理していきます。

以下の通りです。

# messages.properties
“`
login.wrongInput = ログインIDとパスワードの組み合わせが間違っています。
“`

今回は、ログイン失敗時のメッセージをこのファイルから引っ張ってきて表示するような実装を行います。

ファイル作成の次は、`messages.properties`からロ

元記事を表示

Windows版 Cursorのターミナルで日本語の文字化けを解消する方法

WindowsのCursorでターミナルに出力する日本語がどうしても文字化けするときの解消方法。
最適解ではないかもしれないが、これも1つの方法という事で。

# ターミナルはPowerShell
設定を変更していなければターミナルはWindowsPowerShellが動作しているのでPowerShellに対して文字コードを指定してあげればよい。
要は文字コードをUTF-8にしてあげれば文字化けは解消する。

ちなみにWindowwsPowerShellではなくコマンドプロンプトに変更することもできる。

### PowerShellでの文字コード変更方法
ターミナルで以下のコマンドを入力する。
>“`
>$OutputEncoding = [System.Text.Encoding]::UTF8
>[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
>“`

まぁ毎回上記2行を入力するのは面倒なので「changeUTF8.ps1」といったテキストファイルを作成し上記コマンドを記載しておく。
(拡張子ps1はPowerS

元記事を表示

【初めてのJava】まずはコーディングしてみた(スレッド / その1)

## はじめに
スレッドの実装練習として、カウントダウンするタイマー機能を作ってみました。
タイマーは標準のものは使わず、自作します。

## 機能
指定した数値からスタートして、1秒ごとにカウントダウンするだけの機能です。

## ソースコード
“`java:App.java
/*
*/
import java.util.Scanner;
public class App{
public static void main(String[] args){
try(Scanner scanner = new Scanner(System.in)){

System.out.print(“カウントダウン値入力 “);
int num = scanner.nextInt();

CountDownThread countDownThread = new CountDownThread();
countDownThread.start();

元記事を表示

[androidアプリ]AWSのAPIgatewayを使用してみる

## はじめに
Cognito認証を使用した各種サービスへのアクセスに非常に困惑したので備忘録として情報を記載する
特にAWSMobileClientの仕様が理解できておらず困惑したので書き留めておく.

## 何をするか
android環境で,APIgatewayに3つの状況でリクエストを送信する.
– 1.認証・認可なしの場合
– 2.AWS cognito userpoolを使用する
– 3.AWS cognito userpool + idpoolを使用する

このページでは,1の認可・認証無しの場合について,解説する.
2: 追記予定
3: 追記予定

## 環境
S3や,UIはテスト目的以外に特に使用していないので無くても動作するはずである.また,後述するが,API gatewayのandroid SDKをビルドして使用する.

– minSdkVersion 28
– targetSdkVersion 34
– sourceCompatibility JavaVersion.VERSION_11
– targetCompatibility JavaVersion.VER

元記事を表示

【2024年】若手エンジニアにオススメする技術書20選

# [リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://amzn.to/3NYrLaT)

[![画像タイトル](https://m.media-amazon.com/images/I/81+3DpjuMdL._SL1500_.jpg)](https://amzn.to/3NYrLaT)

**「美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。そういうコードは使うのが楽しいし、
自分のコードもそうあるべきだと思わせてくれる。本書の目的は、君のコードを良くすることだ」(本書「はじめに」より)。**

コードは理解しやすくなければならない。本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介します。
名前の付け方、コメントの書き方など表面上の改善について。コードを動かすための制御フロー、論理式、変数などループとロジックについて。
またコードを再構成するための方法。さらにテストの書き方などについて、楽しいイラストと共に説明しています。

日本語版ではRubyやgroongaのコミッタとしても著名な

元記事を表示

【Java】パスワードの複雑さの要件をチェックする

# はじめに

パスワードの複雑さの要件として、「8文字以上で半角英数字の全ての文字種が含まれていること」というような文言を見ることがあります。
このチェック処理が以前から気になっていたので、頭の体操がてらJavaを使って力技で実装してみました。

# 作成したコード

* 正規表現を使ってチェック項目を1つずつ処理するコードを作ってみました。
* あまりスマートな書き方ではありませんが、単体テストなどを考慮して粒度を小さくするとこんな感じになってしまうのでモヤモヤしますね…
* `String#matches()`や`Pattern.matches()`などを使った書き方もありますが、今回はパフォーマンスを重視してPatternオブジェクトを作ってマッチさせる方法を採用しました。
* 参考URL:[文字列のマッチング方法によるパフォーマンスの違い](https://hhelibex.hatenablog.jp/entry/2017/11/26/155849)

“`java:PasswordChecker.java
import java.util.regex.Matc

元記事を表示

GCP Data Catalog機能/実装

# GCPのData Catalogの概要と機能

## 目次
– [概要](#概要)
– [機能/詳細](#機能詳細)
– [まとめ](#まとめ)

## 概要
GCPのData Catalogは、データの探索、検索、モデリング、データガバナンスを容易にするためのメタデータ管理サービスです。Data Catalogを使用することで、組織内のデータリソースを中央集中的に管理し、データの可視性を向上させることができます。

Data Catalogは、データ資産に関連するメタデータ(データの特性や関連情報)を統合したデータカタログを提供し、以下のような機能を提供します。

## 機能/詳細

### メタデータ管理
Data Catalogは、データリソースのメタデータを一元管理します。メタデータには、データセット、テーブル、ビュー、ストアドプロシージャなどのデータリソースの情報が含まれます。メタデータは階層的に組織され、関連データリソースを簡単に見つけることができます。

以下は、Data Catalogのメタデータを管理する方法の一例です。

“`java
import com.g

元記事を表示

KotlinとThymeleaf 基本編(Dtoの値を出力)

以下の例では、架空のAnimalViewDtoクラスに保持した値をHTMLに出力させている。

“`:AnimalViewDtoクラス
package jp.type.user.controller.index.view.dto

/**
* 動物紹介ページ用ViewDto
*/
data class AnimalViewDto(
/** ID */
val id: Int,
/** 動物名 */
val name: String,
/** 性別*/
val sex: String,
)
“`

“`:文字列の出力方法

この動物の名前は、[[${animalViewDto.name}]]です。]]

“`

文字列の出力方法は上記の3つ。
状況に応じて使い分ける。

元記事を表示

エポックミリ秒ってなんだ。。

## 背景
現在担当している機能の中で、エポックミリ秒を扱っている処理があった。

## エポックミリ秒とは
UNIX時間(エポック秒)とは、1970年1月1日0時0分0秒(UTC)からの経過秒数を表す、コンピュータの時刻表現方法の一つです。 UNIX時間は、コンピュータの各種アプリケーションで時刻を扱う際に広く使われており、タイムスタンプやファイルの更新日時など、様々な場面で利用される。

ミリ秒単位で表すものを「エポックミリ秒」
秒単位は「エポック秒」と呼ばれる

## 参考サイト
以下のサイトで、指定した日付をエポックミリ秒、エポック秒に変換できる
https://yu-yum.net/epoch/

元記事を表示

OTHERカテゴリの最新記事