JAVA関連のことを調べてみた2021年10月03日

JAVA関連のことを調べてみた2021年10月03日

WindowsのXAMPPでTOMCATを起動する方法

## 1. 事前準備
– [【初心者でもできる‼】Windows10にJava環境を作る方法(JDK14.0.1)](https://qiita.com/ryome/items/30135570954e36196821)
– 環境変数に `JAVA_HOME` が存在すること

事前準備として、上記リンクの内容が必要です。

## 2. 環境変数設定
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/55033dea-262a-99fb-3d4a-2add6a764075.png)

– windowsボタンを押して、`システム環境変数の編集` を検索
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/5229790f-24b8-011d-d68a-ab6e9c8a1086.png)

– `環境変数(N)…` をクリック
![03.png](https://qiita

元記事を表示

【Java】Stringクラスでの文字列結合にStringBuilder使わなくてもいいと思う

`+`演算子による`String`の結合が遅いのは、Javaを少しでもかじったことある方であれば皆さんご存知でしょう。
では、次のコードはどちらの方が実行速度が速いと思いますか?

1. `String s = “a” + “b” + “c”`
1. `String s = new StringBuilder(“a”).append(“b”).append(“c”).toString()`

答えば1であり、`StringBuilder`が`+`よりも遅くなる数少ない例です。

# 結論から
大抵の場合はどっち使ってもいいけど、個人的には迷ったら`+`がおすすめです。

# `StringBuilder`と`+`を選択するときの観点
`+`を`StringBuilder`に置き換えたくなったときは、次の観点から考えてみて下さい。

## 可読性
これが一番の理由になってくると思います。
可読性自体は極めて主観的なものであり、人によって見解はどうしても割れてきます。
それでも、`+`よりも`StringBuilder`の方が文字数が多く、多くの場面で可読性は`+`が優位と思います。

#

元記事を表示

Java データ型

#データ型

データ型とは、変数に入れるデータの集類のことです。

データ型は、4つに分かれます。

* 整数
* 小数
* 文字
* ブール型(真偽値型)

#整数系のデータ
整数系のデータ型は,byte,short,int,longの4つ。
__数値の範囲が異なる__

| 型名 | 扱える整数値の範囲 |
| :—: | :—:|
| byte | -256~255 |
| short | -32768~+32767 |
| int | -約20億~+約20億 |
| long | 「京」の桁以上 |

__※longの場合、最後に小文字か大文字の「L」をつける必要がある。__

“`java:
public class Lesson07_01 {
public static void main(String[] args) {
byte var01 = 1;
short var02 = 12345;
int var03 = 1234567890;
long var04 = 123456789000

元記事を表示

様々な言語での日時表記

#背景
日時表現は割とよく使うけど、言語で書き方統一されてなくて正直やり辛いな~~
似てるけどちょっと違う、が多くてよくミスってしまうな〜〜
と思ったので覚書程度にまとめます。

というわけで、いろんな言語で現在の年月日・時刻を「2021年10月02日 23時00分00秒」の形式で出力します。
とりあえずはJava, Ruby, Python3, Go, php。適宜更新します

#Java(8以上)
SE8から加わったDate and Time APIのおかげで実装がぐっと楽になりました。

“`Java:Main.java
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
public static void main(String[] args) {
// SE8から加わったクラス。現在の日時を取得
LocalDateTime dateTime = LocalDateTime.now();

// 独自のフォーマットを準

元記事を表示

【Java】継承したクラスをインスタンス化した時のイメージ

##はじめに
Javasilver勉強中に????になったことを自分に刻むためのメモ

##今回の????となった問題
※著作権とかあるかわからないですが、怖いのでそのままではないです。

パッケージ構成
test1
┗Human.java
test2
┗Engineer.java
┗Main.java

“`java:Human.java
package test1;

public class Human {
private String name;

protected String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
“`

“`java:Engineer.java
package test2;

import test1.Human;

public class Engineer extends Human {
}
“`

“`java:Main.java
package test2;

publi

元記事を表示

Java基本的なまとめ

#クラス
クラスを組み合わせて一つのプログラムを作るイメージ。
クラスが集合体になってJavaの土台となっていくイメージ

![10285001417.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1572216/d299cde8-3c2e-a472-77cf-ac9e7fbfa142.jpeg)

__クラスを定義する__

“`java:Greeting.java
class Greeting{
public static void main(String args[]){

}
}
“`

①class Greetingと定義する。クラスを定義する際、最初にclassと記述しなければならない。

②classの次は、どんな名前のクラスを決定する。クラスの名前のことを「クラス名」という。

__※ファイル名とクラス名は同じにする必要がある。__
__※クラス名の最初は大文字にするのが鉄則。__

③クラス名の後は波括弧を記述する。波括弧で囲まれた部分をブロックと呼ぶ。
波括弧の中に、プロ

元記事を表示

Beanstalk+Docker+JavaアプリでタイムゾーンをJSTに変更したかった日

微妙に嵌ったのでメモ

* AWS Elastic Beanstalk web applications
* Multicontainer Docker
* Java8 Spring Boot

# .ebextensions で設定する方法

“`yml:.ebextensions/timezone.config
# Dockerホスト(EC2インスタンス)のタイムゾーンを変更
commands:
timezone:
command: ln -f -s /usr/share/zoneinfo/Japan /etc/localtime
“`
– EC2インスタンスのタイムゾーン: 変更される
– Dockerコンテナのタイムゾーン: 変更されない
– Javaアプリのタイムゾーン: 変更されない

# Dockerfile に RUN を記述する方法

“`dockerfile:Dockerfile
# ゲストOSのタイムゾーンを変更
RUN ln -f -s /usr/share/zoneinfo/Japan /etc/localtime
ENTRYPOINT [“

元記事を表示

【Unity、AWS】実践!構築から開発をしてウェブアプリを公開する!

#はじめに

 ローカルで作成したアプリをサーバで公開し、外部から閲覧できるようにするまでの流れを実践を通してまとめました。また、GUIの操作で実装できる部分をコードで行い、実装方法の比較をしました。
 アプリはUnity、サーバミドルウェアはSpringBoot、サーバはAWSを使用しました。

#設計

 今回、作りたいものの設計図です。経験少ないまま作成したものですので、ご容赦ください。

(1)構成図
 AWSの構成と使用するファイルをまとめます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1474054/e0ff1cfe-9969-ba55-2108-6cdb51ff3e8f.png)

(2)ユースケース図
 今回の記事で私が行ったタスクをまとめます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1474054/eb36280e-b037-17b9-9c8a-eb70

元記事を表示

JUnitでthrows Exceptionしないのは人道に反する

こういうのやめてほしいんです。疲れました。

“`java:
@Test
public void testMethod_001 () {
try {
Foo foo = new Foo();
Object result = foo.method();
assertEquals(0, result);
} catch (Exception e) {
// ★☆★なんでこういうことするの★☆★
e.printStackTrace();
fail(“テスト実行時に例外が発生しました”);
}
}
“`

単体テストがどうあるべきかとか、日常生活の中で考えたりしないんですかね?
メンテナンス不能です。こんなの。

コンソール出力を見ないとどこで例外が起きたかわかりません。
どこの現場に行っても、何回指導しても直らなくてうんざりしています。誰かがそういう風に教育しているなら改めてほしいです。

そもそも、単体テストの結果って3通りあると思うんです。

* 成功 … 正しく動

元記事を表示

【Java】ポリモーフィズムについて復習していく

#目的

* ポリモーフィズムの理解を深める

#実際の手順と実例
###1.ポリモーフィズムとは

同じクラスを継承した別々のクラスのオブジェクトの同じメソッドを呼び出した時に、それぞれのオブジェクトの振る舞い(処理)を変えることです。

下記の例をもとに見ていきます。

###2.例題

サンプルを作成しました。

まずは親クラスの作成をします。

“`Jump.java
package practice.jump;

public class Jump {
// フィールドメソッドを定義
private String name;
protected String dream;

// コンストラクタを作成
public Jump(String name, String dream) {
this.name = name;
this.dream = dream;
}

// final修飾子をつけることで他で使えなくする(オーバーライド禁止)
final public String getName() {
return this.name;
}

/

元記事を表示

M1 MacにJavaの環境構築

#はじめに
OracleのサイトからJDKインストールしていたが、中々インストールまで辿り着けなかったので今回、azulのサイトからJDKダウンロードした流れをまとめていきたいと思います。

#$ 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.
“`

JDK未インストール状態にて、$ java -versionのコマンドを打つと上記のメッセージが表示。
単純にJDK未インストールであるのでインストールを催促されるメッセージが表示される。

#Eclipseを使うべきではない理由

Javaの開発環境といえば、IDE(統合開発環境)であるEclipseは初学者には難しいのでおすすめはできない。
理由が以下の通り。

* Eclipseは高機能すぎて動きが遅い
* 高いPCスペックを要求する
* 初学者は挫折し

元記事を表示

Java 11 to 17

# 概要

JavaのLTSバージョンの「17」がリリースされていたので、Java 11から新しく使えるようになった機能をメインにまとめます!

> こんな機能あるよ!の紹介にとどめ、詳細は追いません。
「触ってみよう」「調べてみよう」のきっかけになればと!

# Switch Expressions

http://openjdk.java.net/jeps/361

switch文を式の中で使用できるようになりました!

“`java
jshell> var a = 1
a ==> 1

jshell> var b = switch (a) {
…> case 1 -> “one”;
…> case 2, 3 -> “two or three”;
…> default -> “other”;
…> }
b ==> “one”

jshell>
“`

ポイント

– `->`と記載することで`break`を書かなくてよくなる
– break実装漏れによるバグが減る!
– `,`でつなげることで複数項目ぬも対

元記事を表示

ポケモンの対戦シュミレータを作ってる話

# はじめに
こんにちは、4月から都内のSES企業で働いてる佐々木と申します。
先月ぐらいから勉強がてら毎日少しずつ作ってるポケモン対戦シミュレータが少しぐらい形になってきたので今日はそちらを紹介していきたいと思います。

# 概要
https://github.com/sasakirione/PokemonClone
・仕事ではそこまでコーディングする機会がないので[^1]実際にガッツリコーディングする経験を積みたい
・TDDをやってみたい
・単純にポケモンが好き
・オブジェクト指向的な設計の勉強をはじめて試してみたくなった
・とりあえず研修で勉強してある程度基礎ができてるであろうJavaをある程度のレベルまで持っていきたい

以上の理由からJavaとなんちゃってTDDでポケモンの対戦シミュレータを作ってみました。

# 使い方
もちろんGUIアプリケーションではないのでわざわざ使う人も少ないと思いますが一応簡単な使い方を解説していきたいと思います。テストコード見て貰えばなんとなく分かると思いますが、一応まとめておきます。
まず使用するポケモンのオブジェクトを作ります。

“`Ja

元記事を表示

DataSourceが複数ある場合にSpring Testの@Sqlを使う場合の落とし穴

# やりたいこと
DataSourceが複数ある場合のテスト時に、Spring Testの`@Sql`を使ってそれぞれのDataSourceにデータ投入を行いたいです。

# 忙しい人のためのまとめ
– `@SqlConfig`に必ず下記を設定しましょう
– `dataSource`要素に`DataSource`のBean ID
– `transactionManager`要素に`PlatformTransactionManager`のBean ID
– 必須ではありませんが下記も明示的に設定した方が良いでしょう
– `transactionMode`要素に`ISOLATED`
– `errorMode`要素に`FAIL_ON_ERROR`

# 検証した環境
– Spring Framework 5.3.9
– Spring Boot 2.5.4
– JUnit 5.7.2
– Oracle OpenJDK 17.0.0
– PostgreSQL 13.2 (Docker上で2コンテナを実行)
– macOS 11.6

> 未確認ですが、多少バージョ

元記事を表示

【Java】継承について復習 していく

#目的

* 継承について学んだことを例題に沿って復習する

#実際の手順と実例
###1.継承とは

意味としてはそのままでした。

> あるクラスを作っているときに、クラスの一部を変更して使いまわしたいときに利用できる実装

参照:[今すぐ分かる!Javaで書くクラスの継承【初心者向け】](https://techacademy.jp/magazine/9246)

継承する元のクラスを「スーパークラス(親クラス、基底クラス)」と呼び、継承する先のクラスを「サブクラス(子クラス、派生クラス)」と呼びます。

###2.継承で覚えるべきこと

####1.抽象クラス

抽象メソッドを1つ以上持つクラスのことです。抽象メソッドとは、処理を記述せずにメソッド名や引数、戻り値だけを定義したメソッドのこと
→ 各継承先で(サブクラスで)処理だけ変えて使える

**基本構文**

“`java
アクセス修飾子 abstract class クラス名 {
// 抽象メソッドの宣言
アクセス修飾子 abstract 戻り値の型 メソッド名(引数);
}
“`

####2.イ

元記事を表示

Eclipse+MavenでJavaFXの環境構築を行う

Eclipse+MavenでJavaFXを使い、Eclipseからの実行と、実行可能jarの作成ができるまでの手順を記載する。
この手順で環境構築を行った例は以下。
https://github.com/tsyki/javafx-example

# JavaFX用のEclipseプラグイン「e(fx)clipse」を入れる(任意)
マーケットプレイスからインストールする。
入れなくてもJavaFXのアプリの実行はできるが、入れておくとFXMLの編集がやりやすくなる。
例えば、FXMLで指定したIDに対応するプロパティがコントローラで定義されていない、といった場合に警告を出してくれる。
2021/9版のpleiadesにe(fx)clipse3.7を入れて動作することを確認済み
# 新規Mavenプロジェクトを作成
「シンプルなプロジェクトの作成」をONにして作成する
# pom.xmlに以下を追加
“`xml

org.openjfx
javafx-controls

元記事を表示

Javaのまとめ

#はじめに
今日からJavaの学習も始めたので少しずつJavaとはどういったところが得意なのかこちらの記事でまとめてノウハウを蓄積していきたいと思います。プログラミング学習始めた時はJavaとJavascriptってややこしいなと思っていました、懐かしいですね

#Java得意なこと
Webアプリケーション、Androidアプリの開発。

#Java特徴
* コンパイラ言語
* オブジェクト指向言語

__コンパイラ言語__
コンパイラ言語とは、機械語に一括し変換してから実行するプログラミング言語。
処理が高速

__オブジェクト指向言語__
Java はオブジェクト指向。オブジェクト指向では何か特定の役割を果たすモノ(=オブジェクト)を作成し、そのオブジェクトに対して実行する処理を指示する。

余談として同じオブジェクト指向言語には「C++」「C#」「Kotlin」などがある。

__OSを選ばない__
Javaは、Windows,MacOS,Linuxなど、どのプラットフォームでも動く。
なぜなら、JVM上で動くから。

JVM = Java Virtual Machine(Jav

元記事を表示

[Java] JPAでbulk insertをする方法

## 概要
JPAでbulk insertを行いたいのだが、`@GeneratedValue`を使ってidを自動採番させるとbulk insertができない。`@GeneratedValue`を使わない場合、primary keyを明示的に入力しなければならないので面倒。

自動採番した上でbulk insertする方法はないのか。
中々情報がないが、JPAの仕様を理解し直すところも含め、なんとか実現方法がないのか調査してみた。

今回はPostgreSQLを使っているが、MySQLでも原因と解決策はほとんど同じである。

↓↓解決策だけ知りたい方は↓↓
**[解決策](#解決策)**

## 環境
– OpenJDK 15.0.4
– Spring Boot 2.5.4
– org.springframework.data:spring-data-jpa:2.5.4
– PostgreSQL 9.6.23

## bulk insertを有効にするための設定
まずはbulk insertを有効にするために、application.ymlで以下の設定をする。
これらの設定をし `rep

元記事を表示

[100%] CommonPrimeDivisors (codility lessons)

_Lesson 12_
## [Euclidean algorithm](https://app.codility.com/programmers/lessons/12-euclidean_algorithm/)

***
[Open reading material (PDF)](https://codility.com/media/train/10-Gcd.pdf)

> _Medium_
> ### [CommonPrimeDivisors](https://app.codility.com/programmers/lessons/12-euclidean_algorithm/common_prime_divisors/)
> Check whether two numbers have the same prime divisors.

***

#### Task description
A prime is a positive integer X that has exactly two distinct divisors: 1 and X. The first few

元記事を表示

EclipseでMySQLを使う

#概要
MySQLで作成したデータベースの中身をEclipse(Java)で使えるようにする
詰まったことがあったので備忘録

#バージョン等
Windows10

Eclipse : 2021-06 (4.20.0)
Java : Java11
MySQL : 5.7.33

# 目次

1. [Javaプロジェクト作成](#Chapter1)
1. [プロジェクトにMySQLライブラリの追加](#Chapter2)
1. [MySQLからDBの値を取り出す](#Chapter3)
1. [エラー対処](#Chapter4)



# 1.Javaプロジェクト作成
DBtestという名前でプロジェクトを作成する。
今回はモジュールファイルも使用するので作成する。
**Eclipse2021の場合は下画像のように「モジュール->module-info.javaファイルの作成」に✓を入れないとファイルが作成されないので注意**
![image.png](https:

元記事を表示

OTHERカテゴリの最新記事