JAVA関連のことを調べてみた2020年11月27日

JAVA関連のことを調べてみた2020年11月27日
目次

今日からできるスマートな条件分岐(if,switch)【初級編】

はじめに

コードを読む際にわかりにくいコードがあると思います。それはなぜでしょうか?
大方長過ぎるコードであったり、実装方法がスマートではなかったりします。変数が長い間生きていたり、何してるのかそもそもわからなかったり…。
そんな中でもよく書くif文、switch文に関していい感じの実装方法を紹介したいと思います。
チートシートの類ではないですがいい例と悪い例を載せつついい条件分岐の書き方を紹介しようと思います。
実務未経験から実務半年程度の人向けです。コードはJavaですが他の言語にも使えるはずです。

単純な分岐

プログラム内容:boolがtrueならば「1」をfalseならば「2」を設定する。

悪い例

“`Java:Test.java
public class Test {
public static void main(String[] args) {
boolean bool = true;
int num = 0;

//if文の判定がくどい。これは古い書き方
if(bool == true) {
//tru

元記事を表示

【Java・SpringBoot】Spring JDBC(SpringBootアプリケーション実践編9)

ホーム画面からユーザー一覧画面に遷移し、ユーザーの詳細を表示するアプリケーションを作成して
Spring JDBCの使い方について学びます⭐️
今回はまず**JDBC Templateを実装するための画面作成**を行います

構成はこれまでの記事を参考にしてください
[【Java・SpringBoot・Thymeleaf】ブラウザ言語設定でエラーメッセージの言語を変更(SpringBootアプリケーション実践編8)](https://qiita.com/suema0331/items/e3faf24876f788a5a6c5)
[【Java・SpringBoot】Spring AOP実践](https://qiita.com/suema0331/items/c7f2287fd5bf84d83691)

#Spring JDBCとは
* **JDBC**は**JavaでDBにアクセスするためのライブラリ**
* SpringJDBCは、**JDBCを使ってデータベースにアクセス**
* 通常のJDBCでは、DBへの接続やクローズ処理などを毎回書かないといけない。。。
* →?Spring

元記事を表示

【Java・SpringBoot】Spring AOP実践

#AOP(AspectOrientedProgramming)とは?
* AOPとは、**アスペクト指向プログラミング**
* **各クラスで共通する処理を抜き出して、まとめて管理する**こと
* 例えば、各クラスのメソッドでいちいち開始ログと終了ログを書くのは面倒。。。。
* 書き忘れる、コードの修正量がとても多くなることも。。。
* AOPを使えば、**共通の処理をまとめて一ヶ所に書いておき、共通処理をどのクラスの、どのメソッドに適用するかを選択**することができる!!嬉しい!
* 共通処理の例:ログ出力、セキュリティ、トランザクション、例外処理、キャッシュリトライなどなど。
* そうすることで、**各クラスでは本来書くべきコードに集中**でき、コードの可読性もUP?

#AOPの用語
* **Advice**:AOPで実行する処理
* **Pointcut**:処理を実行する場所(クラスやメソッド)
* **JoinPoint**:処理を実行するタイミング

|JoinPoint|Advice実行タイミング|
|:-:|:-:|
|Before|メソッド

元記事を表示

【Java・SpringBoot・Thymeleaf】ブラウザ言語設定でエラーメッセージの言語を変更(SpringBootアプリケーション実践編8)

#おさらい
ログインをして、ユーザー一覧を表示するアプリケーションを作成し、
Springでの開発について勉強していきます?
前回はユーザー登録画面で、まずは必須入力チェックを行い、次に中身のチェックを行うという、エラー**メッセージを順番に実行**する実装をしました〜
今回は**Webブラウザの言語設定に応じて、メッセージプロパティファイルを切り替え、表示メッセージを英語に切り替え**られるようにします

前回の記事?
[【Java・SpringBoot・Thymeleaf】バリデーションチェックの順番を設定(SpringBootアプリケーション実践編7)](https://qiita.com/suema0331/items/9369646e937ed6e5b257)

構成は以下のようになっています

“`
Project Root
└─src
└─ main
└─ java
└─ com.example.demo
└─ login
└─ controlle

元記事を表示

SpringBoot+MyBatis+DBUnitでCRUDのテストを書いてみた(後編)

# はじめに
[前回の記事](https://qiita.com/kilvis/items/123a01d5d4fae641ad5b)ではDB操作を行うService層以降のクラスの実装を行いました。
今回はいよいよServiceを使ったDBのCRUD操作を検証するJUnitテストケースを実装していきます。

# 開発環境
OS : macOS Catalina
IDE : IntelliJ Ultimate
Java : 11
Gradle : 6.6.1
SpringBoot : 2.3.4

# 1. 単体テスト用のデータベースの準備
前回の記事でローカル開発用にDockerの`MySQL`をセットアップしました。
今回は単体テスト用に`H2`データベースを使います。

Java製でアプリに組み込んで使えて、外部接続の必要がないため単体テストを行うには最適のDBです。
MySQL固有の機能や関数は`H2`では使えませんが、CRUDが主なWebアプリ開発ではほとんど困ることはないと思います。

実際、アジャイルの開発現場では自動テストや継続的インテグレーションと非常に相性のいい

元記事を表示

【Eclipse】Javaのパッケージの作成方法

# Eclipse上でパッケージを作成する方法

## パッケージの基本的な作り方

1. パッケージエクスプローラ上の作成したプロジェクトの直下にある src を右クリック
2. 新規 → [パッケージ]を選択
3. [パッケージ]名を入力する
4. 作成できていれば、”田”のようなアイコンが出来ている。

## [パッケージ] の直下に [パッケージ]をつくる

1. 先程と同様にパッケージ作成にすすむ
2. パッケージ名を入力する際に`先程の親パッケージ名.子パッケージ名`にして命名する

例えば、 最初に作った [パッケージ]名が、「package」だったとしたら、
“`
package.child_1
“`
みたいな感じで、ドットで繋いであげましょう。

[パッケージ]はカテゴリーみたいな考え方でいいと思います。
[パッケージ]の階層も、「 大分類 > 中分類 > 小分類 」のようなイメージですね。

料理で例えるなら、
「 料理 > イタリアン > 前菜 」みたいな感じでしょうか?
プロジェクトのファイルは、基本的にはパッケージ直下に作成してグルーピングすることにより、

元記事を表示

Maven の mvn exec:java で実行した java のプログラムを datadog agent によりお手軽に Profile する方法

MAVEN_OPTS に、

https://docs.datadoghq.com/ja/tracing/setup/java/?tab=springboot

の、

![Screen Shot 2020-11-27 at 0.20.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18869/e0adf9f9-ff60-46f4-be33-f34b3ea29103.png)

で作った -javaagent の snipet を指定する。

“`shell
export MAVEN_OPTS=”-javaagent:/path/to/dd-java-agent.jar -Ddd.profiling.enabled=true -Ddd.logs.injection=true -Ddd.trace.sample.rate=1 -Ddd.service=YOURAPPNAME -Ddd.env=dev”

mvn install; mvn compile; mvn exec:java -Dexec.m

元記事を表示

【Java】インポート( 他のパッケージのクラスやメソッドを使う )

## インポート
他の[パッケージ]や[クラス]を呼び出して使う、インポートに関するメモです。

## インポートとは

インポートとは、「 **他の[パッケージ]に記入されているクラスや関数を実行するための記述** 」です。

「 **他の [クラス] を利用して [クラス] の [インスタンス] を生成することができ、また「**外部ライブラリを自分のプログラムで使えるようにする時** 」も、インポートを用います。

## インポートの使い方
インポートは基本的にソースコードの先頭にある、[パッケージ]の下に記述する。

import の後ろに、 [パッケージ]と[クラス]もしくは[インターフェイス]名を指定して読み込むみます。

“`
import パッケージ名.クラス名;
import パッケージ名.インターフェイス名;
“`

サンプルコード

“`
// javaパッケージの中のlangパッケージの中のMathクラスをimport
import java.lang.Math;

public class StaticClass {
public sta

元記事を表示

【Java】BigDecimalの四捨五入や切り捨て・切り上げの方法

#プログラミング勉強日記
2020年11月26日
BigDecimalクラスを使うことで四捨五入や切り捨・切り上げはできるけど、これによって誤差(丸め誤差)が生じてしまうので、その解決方法も一緒に紹介する。

#BigDecimalクラスとは
 小数点以下の値に誤差が出ないよう正確に計算するために使う。小数点以下の四捨五入や切り捨て・切り上げといった処理を行うことができる。BigDecimalクラスを使用するためには`java.math.BigDecimal`パッケージをインポートする必要がある。
 BigDecimalクラスのsetScale()メソッドを使用することで、任意の桁数で切り上げ処理を行うことができ、基本的な書き方は下記のようになる。

“`java:構文
setScale(桁数,BigDecimal.ROUND_UP).doubleValue()
“`

#誤差を発生しないために
 BigDecimalクラスのコンストラクタの引数には浮動小数点型と文字列型どちらも指定することができるが、正確な値を扱うためには文字列型で定義する。引数に浮動小数点型を使用

元記事を表示

【Android】JavaでSHA256を計算するアプリを作ってみた

# 雰囲気

なんか、
![Screenshot_20201126-222656.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188881/0033a147-5904-7541-2ce1-c9cb96ac467e.png)

こんな感じで動く。
![Screenshot_20201126-222702.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188881/29f35b06-0f6b-acf0-ae69-ac055df843c9.png)

# 環境

Windows10
AndroidStudio 3.5.0.0
Android SDK 26.1.1
(Pixel OS10で動作確認)

# MainActivity.java

“`java
package com.weare2434.sha256;

import androidx.appcompat.app.AppCompatActivity;

imp

元記事を表示

Java SE8 Silverに合格(2020年10月)したので、まとめてみます。

# スペック
– 非ITエンジニア
– Javaの経験は、ProgateとPaizaで触っただけ
(他言語の勉強の時、課金していたのでもったいないお化け状態で触りました)
– 他のプログラミング言語の取得資格
– Ruby Silver
– Python 3 エンジニア認定基礎試験

# Java SE8 Silverを受験した理由
国家資格(ITパスポート)を取得したので、ミーハー気分で国際資格を取得したいと思ったからです。
それと、自分の中でJava Silverというのは、初心者が取得するプログラミング言語の中でも難しいイメージがあったので挑戦したかったからです。

# 学習教材
– 書籍
– [2週間でJava SE Bronzeの基礎が学べる本](https://www.amazon.co.jp/dp/B076F36Z89)
– [徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応](https://www.amazon.co.jp/dp/4844339931)(通称:黒本)

[スッキリわかるJava入門](https://ww

元記事を表示

JPA Thymeleaf でstatus=500エラーが出た時にやったことのメモ

###環境
– windows10
– Eclipse
– spring boot
– Thymeleafテンプレートエンジン

###表示されたエラー

“`
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Nov 26 21:25:14 JST 2020
There was an unexpected error (type=Internal Server Error, status=500).
An error happened during template parsing (template: “class path resource [templates/todoList.html]”)
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template

元記事を表示

BigDecimal の stripTrailingZeros 使ってる人は気をつけて

## はじめに

お仕事で BigDecimal の [stripTrailingZeros](https://developer.android.com/reference/kotlin/java/math/BigDecimal#stripTrailingZeros()) というメソッドを使っていて悲しくなったので記事にしました 😥

## stripTrailingZeros って何?

BigDecimal のメソッドで、末尾のゼロが削除された新しい BigDecimal を返します。

簡単にいうとこんな感じ

> 0.00 であれば 0
0.10 であれば 0.1

## 何があったのか

動作確認をしていると、 0.00% と表示されてしまうことがありました。

「あれ?ちゃんとエミュレーターでも動き確認してたのになぜ??」

調べてみると stripTrailingZeros が正常に動いてなさそう、、!

なぜ〜〜〜〜 :rolling_eyes:

## 原因

なんと、JDK7 だと正常に動作しないとのこと。。。

そりゃないよ。。

なので一部の An

元記事を表示

【Java】パッケージメモ ( 名前空間の中にあるクラスをまとめる )

# パッケージ
パッケージについて学んだことのメモです。
Eclipse上でパッケージの作成をする際は過去に書いた記事があります。
[【Eclipse】Javaのパッケージの作成方法](https://qiita.com/takahirocook/items/63ae65eb75adba272a33)
## パッケージとは

パッケージとは「 ~~.class ファイル 」の集まりでを示す言葉で、「 **大量の[クラス]を整理するための仕組み** 」です。

## パッケージの概念

### デフォルトパッケージ
Javaはその仕様上、クラス「 ~~.class ファイル 」ファイルを必ずどこかのパッケージに収める必要があります。
その為、パッケージを明示していない(いままでのような)クラス「 ~~.class ファイル 」ファイルは
「デフォルトパッケージ」という形で取り扱っています。

### 名前空間

「 **名前空間** 」 とは「 対象のものを指定した名称で確実に識別・特定するめの概念 」です。

つまりは、「どんなクラスか?」みたいな、形容詞的なものです。

### パッ

元記事を表示

【Java】インターフェースについて( 変数とメソッドの型のみを定義したもの )

# インターフェース
インターフェースは[オブジェクト指向]プログラミングに関わる重要な考え方らしいので、ちゃんと習得しておきたいところです。

## インターフェースとは
Javaで使われるインターフェースとは、

「 **[クラス] に含まれる [メソッド] の具体的な処理内容を記述せず、変数とメソッドの型のみを定義したもの** 」です。

**「処理の実装されていない」というのは、 { }(ブロック) 内の処理が未実装 ということです。**

Javaでは、以下のような不便があります。

– Javaでは多重 [継承] を認めないので、一度に [継承] できるクラスは常に1つのみ([スーパークラス]を1つしか持てない)
– 不要な [メソッド] もとりあえず [オーバーライド] しないといけない

ですが、インタフェースをつかうことで

– 多重継承が可能になる。
– 配下メソッドが全部抽象 [メソッド] である [クラス] になる。
– それぞれの [メソッド] は意味的に異なるインターフェースに振り分ける
– 派生 [クラス] 側で必要な [メソッド] のみ選択できる

元記事を表示

【Java】static修飾子 ( 静的メソッド / 静的変数 )

# static修飾子

## static修飾子とは
「**[インスタンス]化しなくても、[クラス]から直接[メソッド]や変数にアクセスすることができるようにする修飾子**」です。

## 用語
### クラスフィールド / クラスメソッド ( staticあり )
主に、[mainメソッド]などがそうですが

– staticな [メソッド]を「 **クラスメソッド / 静的メソッド** 」
– staticな 変数 を「**クラスフィールド / クラス変数 / 静的変数**」

とよびます。

※ クラスメソッド から 下記の**「インスタンスメソッド」や「インスタンスフィールド」にアクセスはできません。**

### インスタンスフィールド / インスタンスメソッド ( staticなし )

– static をつけない [メソッド]を「 **インスタンスメソッド / 動的メソッド** 」
– static をつけない 変数 を「 **インスタンスフィールド / 動的変数** 」

※こちらはインスタンス化が必要ですが、「**インスタンスクラスからクラスメソッド、クラス

元記事を表示

【Java・SpringBoot・Thymeleaf】バリデーションチェックの順番を設定(SpringBootアプリケーション実践編7)

ログインをして、ユーザー一覧を表示するアプリケーションを作成し、
Springでの開発について勉強していきます?
前回は入力項目毎にエラーメッセージを表示し、バリデーションのチェックを全て同時に実行しました。
今回は**バリデーションチェックの順番を設定**します^^

前回の記事?
[【Java・SpringBoot・Thymeleaf】エラーメッセージを個別に表示(SpringBootアプリケーション実践編6)](https://qiita.com/suema0331/items/9b138e5aa2b46009694e)

#入力チェックのグループを設定
* 入力チェックに引っかかった場合に処理を途中で止めることができる!
* バリデーションでグループを作成するために**インターフェースを作成**
* 構成は以下のようになっています

“`
Project Root
└─src
└─ main
└─ java
└─ com.example.demo
└─ login

元記事を表示

【Java】final修飾子 ( 定数化・継承禁止、オーバーライド禁止 )

# final修飾子

final修飾子 は「**変数 を 定数 に変えたり、元のクラスや[メソッド]の機能を変えないための修飾子。**」です。

具体的に言うと

– **[クラス]に付けた場合その[クラス]を[継承]することができなくなる**
– **[メソッド]に付けた場合、その[メソッド]を[オーバーライド]することができなくなる**
– **変数に付けた場合、その変数は 定数 となる**

といった使い方ができます。

## 固定にする理由

– 後から修正がかかった際、一か所を直せば済むから
– ソースの可読性が高まるから
– 変更されたくない値を変更されない様にするから

## 固定にするもの

[メソッド]のパラメーターや、[メソッド] のローカル変数 において、
条件分岐ごとの処理による値の書き換えの可能性が無いような場合は、 final で定義するほうがよいです。

具体的に「どんなものを定数にするか」ということですが、例を上げると

– 固定の文字列
– ダイアログなどのメッセージ
– サイトのURL
– 税率のような基本的に変わらない値

などがパッと思いつきま

元記事を表示

【Java・SpringBoot・Thymeleaf】エラーメッセージを個別に表示(SpringBootアプリケーション実践編6)

ログインをして、ユーザー一覧を表示するアプリケーションを作成し、
Springでの開発について勉強していきます?
前回の日本語でのエラー表示に引き続き**エラーメッセージを個別に表示する実装**をします

前回の記事?
[【Java・SpringBoot・Thymeleaf】日本語でエラーを表示(SpringBootアプリケーション実践編5)
](https://qiita.com/suema0331/items/a76817e28de9baaac2d8)

##エラーメッセージを個別に表示
* htmlファイルを修正して、エラーの場合だけCSSを変更して、テキストボックスを赤くします

###エラー用CSSの追加
* **th:classappend属性**でCSSのclassを追加する

“`html

“`
* エラー時だけclass属性にhaserrorを追加
* haserrorはBootstrapの

元記事を表示

JavaSilver合格体験記(1Z0-808)

#はじめに
JavaSilverはプログラミング初級者向けの資格です。
IT業界には5年ほどいますが、資格を持っていなかったため
自分の自信に少しでもなればと今回挑戦しました。
今更とか関係ないと思います。自慢をするための資格ではなく、自信をつけるための資格です。
この記事については合格するまでの勉強の過程を載せています。
合格当日の話や、合格後の証明書の話については別の方が記事してくれていますのでそちらをご参考ください。

#対象読者
 JavaSilverの資格取得を目指している方

#勉強に使用した書籍
 黒本
  [徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応](https://tinyurl.com/y25lel4l “徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応”)
 白本
  [オラクル認定資格教科書 Javaプログラマ Silver SE 8 スピードマスター問題集 ](https://tinyurl.com/y5g53rgg “オラクル認定資格教科書 Javaプログラマ Silver SE 8 スピードマスター問

元記事を表示

OTHERカテゴリの最新記事