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

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

エラー:この文字は、エンコーディングMS932にマップできません

メモ程度に。
IntelliJ IDEAを使っている人向け。

# UTF-8でエンコードされていないのが原因

下記をConfigrationに追加すると解決する

“`
javac -encoding utf-8
“`

![2021-07-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/974c421d-0bb6-38ee-9f7f-bd23009345c9.png)
![2021-07-27 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/7c3a96fb-d359-61c9-1e73-6c96ff708fe2.png)

元記事を表示

独習Java新版まとめ(第2章)

2-1 変数
変数を複数宣言するときは原則として1つ1つ個別の文として宣言
変数はCamelCaseで戦闘箱文字にしてそれ以降は大文字スタートだが、クラスはPascal記法で頭から大文字

定数の宣言
final データ型 定数名 = 値

2-2 データ型
データ型は基本型と参照型に分けることができる
Javaの基本型はbyte/short/int/long/float/double/boolean/charのみ
また数値を示すときは基本的にint型を採用
浮動小数点も目メモリに特に制限がない限りはdoubleを使用

booleanはfalseを0やtrueを1などをみなすことはできない
Java10以降ではvarキーワードを使用することで変数を宣言するときにデータ型を省略できる
varは初期値から型推論をするのでいきなり使うことはできない

2-3 リテラル
リテラルとはデータ格納できる値そのもの、また、値の表現方法
浮動小数点リテラルは<仮数部>*10*符号<指数部>
データ型が勝手に決められて困る場合にはlomgの時はLでfloatは

元記事を表示

Java基礎(データ型)

データ型について

データ型とは

データ型とは、プログラムで扱うことができるデータの種類のこと。
データ型またはただ単に型ともいう。Javaでは多くの型があります。

代表的なデータの型

JPAという便利なものがあるらしいVer2

## 前回まで
– JPA(Java Persistence API)を利用して用意されている複数のSelect文を実行した
– 全件検索→findAll()メソッド
– 主キー検索→getOne()メソッド
– findBy[検索条件]→findByに続くフィールド名、キーワードに応じた条件検索を実行

## 本日行うこと
– JPAを用いて登録、更新、削除処理を行う
– レコードを登録、または更新する→save()メソッド
– 指定された主キーに該当するレコードを削除する→deleteById()メソッド

## 登録処理

①新規登録画面へ遷移、値の入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1715093/22e24f06-e2c5-3d4e-5069-3fcfa61f9bda.png)

②登録ボタン押下後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1715093/9

Java 11 LTSから Java 17 LTSへ

## これはなんですか
社内では現状みんなの共通言語として Java11 LTS を利用しているが、2021/9 にリリースされる Java17 LTS に乗り移るかどうか判断するため、各種 feature のまとめと、社内での議論のネタを積んでおくものです。

## 誰向け?
同様のことを検討しているお歴々には参考になるかもしれません。
後日コメントで弊社の結論も記載します。

## Java 11 ~ 17
12~16までは @nowokay 様がまとめてくださっているため、そちらを参照します。

### feature/java12
https://qiita.com/nowokay/items/0e860819b6ffb1aca90a
### feature/java13
https://qiita.com/nowokay/items/3e1625a77cb435394547
### feature/java14
https://qiita.com/nowokay/items/ec85d97a7cecaaac8123
### feature/java15
https://qii

Spring boot + JPA + Flyway on herokuでLINE Botを作る

## 概要
Spring BootとJPAとFlywayとherokuを使って、DBから返信メッセージを取得するLINE Botを作る。
あくまでちょっと動かしてみた程度のソースなので、細かいところのツッコミはご容赦ください。
また以下については説明しないので、リンク先を参照してください。

– **LINE Channelの作成**
– https://developers.line.biz/ja/docs/messaging-api/getting-started/
– **herokuでアプリを作成**
– https://signup.heroku.com/
– **JPA (Java Persistence API)** => Java標準のORM
– https://www.vogella.com/tutorials/JavaPersistenceAPI/article.html
– **Flyway** => Migrationツール
– https://flywaydb.org/

## 関連
– [line-bot-sdk-javaを使

DB名にスキーマが含まれていると DBUnit の @DatabaseSetup とかでテーブルがみつからない

いや、普通データベースってスキーマ切るでしょ。
これが「DBUnit スキーマ」とかで探してもほとんど出てこなかったんですよ。なんか Oracle データベースの話しかみんなしてない。なんでやねん。

## だめなやつ

“`java:TestConfig.java
/**
* テスト用JDBCドライバのbean
*/
@Configuration
public class TestConfig {
@Bean
DataSource dataSource(){
return dataSourceH2();
}

DataSource dataSourceH2() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
builder.setType(EmbeddedDatabaseType.H2)
.addScript(“table/schema.sql”).addScript(“table/data.sql”);
return builder

IntelliJでGradleのプロジェクト作成

# 基本

## プロジェクトの作成

IntelliJ IDEAの開始画面で新規プロジェクトをクリックします。

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/817075/26fe7474-c463-acee-e4ed-e58a62eed4f2.png)

次の画面にて,Gradleを選択しProject SDKを選択し(自分の場合Macに11.0.11を事前にインストールしているのでそれを選択)その後、Javaにチェックが入ってることを確認し下のNextへ

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/817075/51b8670a-5929-7398-dd0e-19c26b64ca43.png)

ウィザードの次のページで、プロジェクトの名前と場所を指定します。

Artifact Coordinatersに関しては今回デフォルトの設定を使いますがそれぞれ設定する際は以下のように設定します。

Spring Boot(MVC) + Spring Security + Azure ADでのログインの実装がとても簡単になった件

[以前も似たような記事を書いていました](https://qiita.com/talesleaves/items/701584fb9e4e0a941059)が、AzureADのSpringスターターが整理され、実装が非常に簡単になっていたので改めて記事にしました。

#前提条件
– [Spring Bootで”Hello World!”](https://spring.pleiades.io/guides/gs/serving-web-content/)ができる(出来れば数ページのバリエーションが実装済みだと望ましい)
– AzureADの管理者アカウントを持っている
– Spring Boot+Spring WebのアプリにMicrosoft365アカンウントで認証させたい

上記のような方に向けた記事となります。

#AzureAD側での下準備
##ドメインにアプリを登録
[AzureADスターターの開発者ガイド](https://docs.microsoft.com/ja-jp/azure/developer/java/spring-framework/spring-boot-s

Groovy 入門& 環境構築

# Groovyとは
Groovy(グルービー)は、Javaプラットフォーム上で動作する動的プログラミング言語.
groovyはJavaと同じ型が使用できます。

# Groovy導入
## groovyをインストール
homebrewを使ってインストール

“`bash
$ brew install groovy
$ groovy –version
Groovy Version: 3.0.8 JVM: 16.0.1 Vendor: Homebrew OS: Mac OS X
“`

## GroovyConsoleを起動する
以下のコマンドをターミナルで実行します。

“`bash
$ groovyConsole &
“`

コマンドを実行すると以下のようなウィンドウが表示されます。

![スクリーンショット 2021-07-26 12.31.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/817075/0f50beeb-1d1f-e900-6394-4e23c548593a.png)

デザインパターン勉強会⑥Prototype

はじめに

ZOOM勉強会の議事録です。
「増補改訂版Java言語で学ぶデザインパターン入門」を読んで、プログラム作成・パターンの理解を行います。
第6回はPrototypeパターンです。

Prototype

インスタンスの複製を作るパターンです。

役割は以下です。

  • Prototype
  • インスタンスを複製するためのメソッドを定める

  • ConcretePrototype

Springboot+Tymeleaf+Mybatis+MySQLでのCRUD処理実装(基本)

学習のためのCRUDの基本実装をしました。備忘録としてまとめました。
画面上にHelloWorld実装まではできるものとして書いてます。
MySQLにはあらかじめテーブルを用意しています。

## 開発環境

– eclipse IDE
– Java 11
– maven
– Tymeleaf
– Mybatis
– MySQL

## 設定ファイルの編集

**application.propertiesにmySqlとの接続情報を記述**

“`java
spring.datasource.url = jdbc:mysql://localhost/データベース名?serverTimezone=Asia/Tokyo
spring.datasource.username = root
spring.datasource.password = データベースのパスワード
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.mvc.hiddenmethod.filter.enabled: true
“`

【Java】AtCoderのABC-211に参加しました(レート:214→205)。

絶不調ですが、今回もA,BのみでC突破できずでした。
レートは214→205。ついに200を切ってしまう直前まで来てしまいました。

###A問題

入力値A,Bを使って、(a-b)%3+bを求める。
割り切れる場合は整数を、そうでない場合は小数点下を求めるような例題になっていたため、出力時に分岐を入れました。

“`java
import java.util.Scanner;
import java.util.Arrays;

public class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if((a-b)%3!=0){
System.out.println((double)(a-b)/3+b);
}else{
System.out.println((a-b)/3+b);
}
}
}
“`

###B問題

入力する4つの文字列に、

【Java】Apache HttpClientの使い方メモ

# Mavenプロジェクトの作成
下記の記事を参考にして、Mavenプロジェクトを作成。

https://qiita.com/hide/items/6593f3f02c3f28e57f2d

“`console
mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false \
-DgroupId=com.sample \
-DartifactId=http-client-sample
“`

# pom.xmlの編集
`pom.xml`を編集して、Apache HttpClientを導入します。
また、以下の記事を参考にして、`mvn`コマンドでの実行と実行可能JARファイル生成のための設定を追加します。

https://qiita.com/tarosa0001/items/e019ec4daaaf54684c53

https://qiita.com/hide/items/0c8795054219d04e5e98

“`x

JPAという便利なものがあるらしい

## JPAとは
– Java Persistence APIの略
– データベース操作を行うライブラリの一つ
– SQLを自動作成、実行する(→SQL文を書く必要すらない。そんな便利な世界があったとは…)

## とりあえずJPAを使うにあたって
– 従業員テーブル(従業員番号、名前、部署番号)を用意。→全部で9件用意。
– JpaRepositoryが定義しているCRUD処理用のメソッドを使ってみる。→今回は検索のみ。

## 実行イメージ
– 全件検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1715093/623c3361-a177-f508-3937-054a119452ec.png)

– 主キー(従業員番号)検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1715093/7beffb4d-6f52-b9c5-6b77-5e44cf3238a6.png)

– 部署番

【Android】 TextWatcherを使って、金額入力時にカンマを加える。

## 今回の目的

EditTextで金額を入力する時、月並みだが、動的に入力した数値をカンマ区切りに変換できないか、
色々調べたところ、ある程度制御が出来るようになったので、紹介していこうと思います。

## 使用する環境
– AndroidStudio Ver 3.4.1
– Android 10.0 (Q) API 29

## TextWatcher

[TextWatcher (AndroidDeveloper)](https://developer.android.com/reference/android/text/TextWatcher)

⇨ EditTextの入力を監視するEventListener(編集前の値を取得したり、編集後の値やポジションを取得する等、出来る)

色々詳しいことは、参考サイトや↑のリファレンスを参照してください。

## 実装に当たって

まずはImplements(実装)していきます。

“`MainActivity.java
public class SampleClass1 extends AppCompatActivity impl

Eclipse+Forgeでマイクラのmod開発~身に着けられる防具(サングラス)を作ってみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191672/0c9d3696-fe6f-fbc7-7c25-dd755ae779ec.png)

最近職場が変わって多忙してました。。なのでかなり久々の記事。忙しいのは変わらないので当分ペースが落ちそうw

## 環境

* OS: Windows10
* Jdk: openjdk version “15.0.2” 2021-01-19 ※16.xでもいいかもだけどgradleやらなにやら色々変わってしまって心配だったので今回は15で。
* IDE: Eclipse IDE for Java Developers (Version 4.19.0)
* Buildship(Eclipseのgradleプラグイン) : 3.0
* Minecraft: Java版 1.16.5
* Forge: 1.16.5
* paint.net V4.2.16

## Javaのコード

前回の記事([Eclipse+Forgeでマイクラのmod開発~単純

【Java発展学習17日目】SwingによるウィンドウUI制御

# GUIの種類
GUI(Graphical User Interface)の実現方法は、以下の2通り。

| GUI | 用途 | デザイン設計 |
|:–|:–|:–|
| WebUI | Webアプリケーション | HTML |
| ウィンドウUI | OSアプリケーション | プログラム |

# Swing APIにおける3つのウィンドウ
[参考: Swing](https://www.javadrive.jp/tutorial/)
**Swing API**が扱うウィンドウは、以下の3種類に分類される。

| ウィンドウ | 内容 | API |
|:–|:–|:–|
| アプレット | ブラウザへの埋め込みウィンドウ | `JApplet` |
| フレーム | アプリケーション用ウィンドウ | `JFrame` |
| ダイアログ | 対話入力用ウィンドウ | `JDialog` |

また、これらのウィンドウはメインスレッドとは独立した、描画処理を行う**UIスレッド**によって実行される。
`UIスレッド`は複数のスレッドの**総称**であり、中でもイベ

基本データ型

基本データ型

基本データ型ってなに?

変数に格納される値の種類を定義するもので、別名「基底型」「プリミティブなデータ型」ともいいます。
基本データ型には byte,short,int,long,float,double,char,boolean の8種類のデータ型があり、値の種類によって「整数型」「浮動小数点型」「文字型」「ブール型」の4つに分類されます。
また、基本データ型以外にも「参照型」または「複合データ型」と呼ばれるデータ型があります。

基本データ型の説明

整数型

整数データを扱います。
整数型のデータは全て符号付きで、正負どちらの値も保持することができます。

|   データ型    |   サイズ  |              値の範囲              |
|:—————–:|:——————:|:——————:|
| byte | 1

Java入門 超初心者用 プログラムの基本スタイル

# はじめに
今までRubyしかやってこなかったのですが、サーバーサイドとして働きたくてJavaもかじったほうが良いと聞き、勉強もちょっとずつやっていこうと思いました。
完全に備忘録です。
また本記事は、ゼロからわかるJava 超入門 改定3版にて勉強したものをアウトプットしています。



# 基本プログラム
基本中の基本ヌルプログラム

“`sample.java
class クラス名 {
public static void main(String[] args){
}
}
“`
いきなりでてきたヌルプログラム。Rubyしかやってこなかったが、いきなりワケワカメ。
**書籍での説明:ヌルプログラムは、プログラムとして成立しているものの。何も処理は行わない。**
おーなるほど。これをベースに行いたい命令を追加していってプログラムを完成させてくんだね!OKOK!

### 2行目のmainメソッド
プログラムは上から下にむかって実行されるんだけど、実行開始の場所は、先頭ではなくて。
必ずmainと書かれた場所から実

分類 型名 格納できるデータ
整数 byte とても小さい整数
short 小さな整数
int 普通の整数
long 大きな整数
小数 float 少しあいまいでもよい小数
double 普通の小数