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

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

Java の Maven で Azure Functions を試してみた

いつもは .NET で Azure Functions を使っていますが、ふと Java だとどうやって作るのだろうと疑問に思ったので試してみました。

## 動作環境

“`bash:bash
$ java -version
openjdk version “11.0.10” 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.10+9, mixed mode)

$ mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Default locale: ja_JP, platform encoding: UTF-8
OS name: “mac os x”, version: “10.16”, arch: “x86_64”, family: “mac”

$ func –version
4.0.5801

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | 入出力 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## Java.io.File
ディレクトリやファイルへのパスを表すクラス
“`java
File file = new File(“絶対パスか相対パス”)
“`
| メソッド名 | 説明 |
|:-:|:-:|
| exists() | 存在するか確認 |
| createNewFile() | 新しいファイルを作る |
| mkdir() | 新しいディレクトリを作る |
| getAbsolutePath() | ファイルやディレクトリの絶対パスを調べる |
| listFiles() | 指定位置のファイルやディレクトリの一覧をファイル型配列で取

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | ラムダ式 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## ラムダ式
クラスに内包されていない変数に格納できる関数のこと、関数型プログラミングの概念が採用されている。
外部のオブジェクト変数を使用する場合、参照先は実質的にfinalになる。
変数に型がついていないのはvar型で表現されているため。
匿名クラスをさらに簡潔にしたもの(オーバライドするメソッドがわかればいいみたいな)

### 引数の型は省略可能
(x) -> x;
### ()も省略可能
x -> x ;
### 引数の型を記述する場合、()は省略できない
(String x) -> x ;
### 引数が複数になる場合、引数の型は省略可能だが()は省略できな

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | クラス・並列処理・Optional 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## ネストクラス
### インナークラス
クラス直下に記述
public、protected、private、abstract、final
エンクロージングクラスのインスタンスも必要、staticなフィールド等は記述不可能
### staticインナークラス
クラス直下に記述
public、protected、private、abstract、final、static
エンクロージングクラスのインスタンスと記述を必要としない
### ローカルクラス
メソッド内クラス
abstract、final
実質的finalなローカル変数は先に記述されていれば使える
### 匿名クラス

元記事を表示

【初心者】JRubyでSQLiteデータベースを読み書きする

# 手軽に使えるSQLiteだが思ったよりも苦労した

何もわざわざJRubyなんて使う必要ないと言われそうなんですが、プログラミングを人に教えるときにデータベースの使い方を扱う必要が出てきまして、Windowsで手軽に環境構築できるので、JRubyを使うことにしました。

また、手軽に利用できるデータベースを探していたところSQLiteにたどり着きました。実際、selectは他のDBよりもかなり速いですね(個人が利用する範囲ならば)

ネットで色々と検索したのですが、自分の環境ではJRuby + SQLiteの読み書きは、Rubyのライブラリーではあまりうまく行きませんでした。

普段からJavaでsql2o( https://www.sql2o.org/ )を利用していたので、これをJRubyで呼び出せば行けるのではないかと考えました

# 準備

sqlite-jdbc-3.46.0.0.jar , slf4j-api-1.7.30.jar , slf4j-simple-1.7.30.jar ,sql2o-1.8.0.jar を使います。

sqlite-jdbcは、slf4jに

元記事を表示

隙間時間にみる早見表〜OracleJavaSE11 gold | 基本 〜

# この記事について
OracleJavaSE11 goldを勉強していた時になかなか覚えられないな〜っとなっていた内容を毎回見ることができるようにこちらの書籍で勉強していた時のまとめたものです!

おすすめ書籍(勉強開始時点の書籍最新版を購入しましょう)

https://book.impress.co.jp/books/1121101020

各カテゴリごとでまとめていますので隙間時間に見てみてください。

## list.of
変更不可なリストを返す

## java.lang.Object
### int HashCode()
インスタンスの内容をハッシュ値で返す
### boolean Equals(Object obj)
自インスタンスと引数のインスタンスが同一か判定
### String toString()
インスタンス内容を文字列表現にして返す。sysoutやStringBuilderなど多くに使われる。
メインフィールドや全てのフィールドを出力したり。
FQDN@ハッシュ値

## iterableインタフェース
コレクションのスーパーインタフェース
拡張for文に

元記事を表示

No.10 クラス&練習問題01

**【動画URL】** https://youtu.be/dQYUvKx1XYI

Javaではクラスという単位で作成する。部品のようなもの

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680113/2674231b-a2f7-b0fb-bb4a-bb81a74e1b09.png)

・{ ~ }までをブロックという
・大文字と小文字を区別する

**【動画URL】** https://youtu.be/vxTRN8HpR-0?feature=shared

**【練習問題】practiceパッケージを作成し、その中に新しいクラス(Practice01)を作成し、自分の名前を出力してみよう**
<出力例>
Udemy花子

※解答例は、完成例のプロジェクトをご参照下さい
https://zenn.dev/codek2/books/63c880c460c21e/viewer/082a9e

まとめてご覧になりたいあなたは
https://zenn.dev/code

元記事を表示

Trie

# 概要
コーディング試験でよくみられる
`Prefixあるか、文字列検索せよ`
みたいなのは

完全検索でできるが、
面接に行ったら、「もっと改善できるか」と聞かれる

「私の考えは`Trie`(トライ木)を利用します」と話せば、半分は合うかと思う

# Trieとは
1. 文字列を保存し、効率的に探索するための`Tree`形式のデータ構成
1. 自動完成機能、辞書検索などの文字列を探索するために特化されている
1. 例えば、`Apple`の検索するためには、一番最初に`A`を探し、その後`p`、`p`の順番で探せばいい。こういう画面を適応したものが`Trie`(トライ木)

#### 例1)Trieの形
![제목 없는 다이어그램.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2961840/a83df9b6-d064-136c-95fe-e09adb37fa66.png)

#### 例2)ヤフーで東京を検索した時に表示される文字列
東京(Prefix)以降

元記事を表示

【Spring Boot】ログインユーザーを取得する

spring securityを使ってログイン中のユーザーを取得したり表示したりするための設定が意外と面倒だったため記録

## ユーザー情報クラス
`@AuthenticationPrincipal`で取得するためにaccountフィールドを追加
“`AccountDetail.java
import java.util.ArrayList;
import com.example.todo.entity.Account;
import org.springframework.security.core.userdetails.User;
import lombok.Getter;

public class AccountDetail extends User{
// 追記
@Getter
private Account account;

public AccountDetail(Account account){
super(
account.getName(),
a

元記事を表示

【Spring Boot】thymeleaf + ajaxで非同期処理

## やりたいこと
SNSのようなアプリケーションでユーザーが投稿からコメント削除をした場合に、ajaxでページ遷移や更新を行わず非同期で反映させたい

## Thymeleafの記述
* `meta`タグにCSRF対策トークン埋め込み
* Spring Security使用している場合は設定しないと動かない
“`html


“`
* 必要なjsファイルとjQuery読み込み
“`html


“`

## コメント一覧表示部分
“`show.html 【Java】初心者がオセロのコンソールアプリを制作した学習メモ

プログラミング(Java)の学習を始めて1ヶ月が経ったので、オセロのコンソールアプリ(Windowsならコマンドプロンプト、Macならターミナルで動作するアプリ)を制作した備忘録です。

# 使用環境
PC:MacBook Air 2018
OS:macOS Sonoma 14.3.1
IDE:Eclipse

# 全体のソースコード
全体のソースコードは、以下のGitHubにて公開しています。
https://github.com/miya71/othello_cui

# 各クラスの解説

## Mainクラス
各クラスのインスタンス化と、Gameクラスに各インスタンスを渡してplayメソッドを実行するクラスです。
“`java:Main.java
package othello;

public class Main {
public static void main(String[] args) {
// 各クラスのインスタンス化
Stone stone = new Stone();
Player player = new Player();
T

元記事を表示

Javaで「文字列を正規表現パターンを使って分割する」の動作を確認してみた

# 概要

Javaで「文字列を正規表現パターンを使って分割する」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index20.html

# 実装

以下のファイルを作成しました。
“`JSample20_1.java
class JSample20_1{
public static void main(String[] args){
String regex = “;|:”;
String str = “赤色:青色;黄色:;”;

String[] result = str.split(regex, 0);
for (int i = 0 ; i < result.length; i++){ System.out.println("[" + result[i] + "]"); } System.out.println("-- --"); result = str.split(regex, -1); for

元記事を表示

Genericsでクラスインスタンスを外から注入するのはカッコ悪い

## Genericsは便利
JavaのGenericsは非常に便利ですね。大筋は似たような動作で詳細が少しだけ違う場合になどよく利用します。あとから詳細を実装したクラスを加えてやって求める動作を実現できます。
さて以下のような人間の心と行動をあとから注入するクラスを作ったとします。

###### 空っぽの人間
空っぽの心
“`java:EmptyMind.java
package com.example.generics;

public abstract class EmptyMind {
protected EmptyMind() {
super();
}

public abstract String myMind();
}
“`
空っぽの行動
“`java:EmptyAction.java
package com.example.generics;

public abstract class EmptyAction {
protected EmptyAction() {
super();
}

public abstract String myA

元記事を表示

Optionalを使ってNPEを撲滅する

用語 NPE:NullPointerException

## 🏃‍♂️はじめに
たとえば以下のように、
String型の値を返すメソッド `getMailTemplateByClient`を作っていて、呼び出し元で返り値を使っているとします(`mailTemplate`にセット)。

“`java
public Client getClientInfo(int clientId) {

// メソッドコール
String mailTemplate = getMailTemplateByClient(clientId);
int mtCharCount = mailTemplate.length();

//(以下略)
}

// 顧客に送るメール定型文を取得する
private String getMailTemplateByClient(int clientId) {

// 顧客IDに紐づいたメール定型文をDBから取得する
final String mailTemplate = selectMailTemplateFromClie

元記事を表示

java.lang.Systemクラスでわかるprint(), println()の違い

print, printlnメソッドは、コンソール出力で使用したことがある人も多いと思います。

println()は改行をいれてくれると認識している人も多いと思いますが、その実態はBufferedWriterクラスのnewLine()メソッドを呼出しています。

以下はSystemクラスとPrintStreamクラスのコードです。Systemはクラス、outはフィールド、print(println)はPrintStreamクラスのメソッドです

“`Java
public final class System {

public static final InputStream in = null;

public static final PrintStream out = null;


}
“`

“`Java
public class PrintStream extends FilterOutputStream
implements Appendable, Closeable
{
.

元記事を表示

【Spring Batch】~Stepについて~

## 前回の内容
[前回の記事](https://qiita.com/yommy/items/9156e5478c62053b4ba7)ではSpring Batchの簡単な概要とJobについて説明しましたが、今回はStepについて書いていければと思います。

## Stepの役割
まずSpring Batchの基本的な流れのイメージを持つことが大事なので、前回も張った下記の図を頭でイメージしてから読み進めてください。![spring-batch-reference-model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3669426/c3e3d71e-27d7-dad5-4a3c-9ad52dfcdd24.png)

Spring BatchのStepは、Jobの中で実行される一連の処理を定義する単位のことを言います。
Jobは複数のStepから構成され、それぞれのStepが特定のタスクを実行します。

Stepは主に以下の3つのフェーズに分かれます。
“`
1. ItemReader: データを

元記事を表示

Java 不変性 共変性 反変性

Java 11 Gold 取得に向けた学習記録

# 型推論
型推論はコンパイル時に代入演算子の右辺の値を元に行われ、ローカル変数、メソッドの戻り値や引数に対して行われる。

中でも`var`による型推論は、ローカル変数にのみ利用することができる。

また、配列の初期化時にも利用される事がある。

“`java
int[] array = {1, 2, 3};
“`

## ジェネリクスにおける型推論

ジェネリクスも型推論があり、ジェネリクスを指定しないオブジェクトをジェネリクスを指定した変数へ代入する際に行われる。

型を指定しない記述方法はダイアモンド演算子`<>`と呼ばれる。

“`java:ジェネリクスの型推論
// 型推論あり
List list = new ArrayList<>();

// 型推論なし
List list = new ArrayList();
“`

またジェネリクス自体に型引数を与えなかった場合、`Object`型を指定したものとして扱われる。

“`java:ジェネリクスの型推論
// 型引

元記事を表示

抽象クラスのメリット

抽象クラスの使いどころと聞いて何を思い浮かべるでしょうか?
インターフェイスを使っていると、抽象クラスの存在は霞んでしまいがちです
しかし、明確なメリットもあります
それは…

* **動的なフィールドを持てる事**

インターフェースには無い明確な個性です
何故なら、抽象クラスに対しインターフェイスは静的なインスタンスであるため、動的フィールドを自身で運用できないためです
抽象クラスは、これを高度に隠ぺいします

コード一覧

“`:Status.java
public abstract class Status{
private int hp,atk;

public Status(int hp,int atk){
this.hp=hp;
this.atk=atk;
}

protected void damage(Status target){
int curr

元記事を表示

Javaで「文字列全体が正規表現パターンとマッチするか調べる」の動作を確認してみた

# 概要

Javaで「文字列全体が正規表現パターンとマッチするか調べる」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/string/index19.html

# 実装

以下のファイルを作成しました。
“`JSample19_1.java
class JSample19_1{
public static void main(String[] args){
String str1 = “airplane.png”;
String str2 = “lemon.png”;
String str3 = “apple.jpeg”;
String regex = “a.+png$”;

System.out.println(str1.matches(regex));
System.out.println(str2.matches(regex));
System.out.println(str3.matches(regex));
}
}
“`

以下の

元記事を表示

【Java】ラムダ式のスコープ外の変数を参照できるのはどうしてなのか?

# ラムダ式について
## 疑問に思ったこと

* ラムダ式の外で作成した変数をラムダ式内で使えるのはどうして?

例えば下のソースコードを見てみる。

“`
public class DemoApplication {

public static void main(String[] args) {
Dog dog = new Dog();

Runnable runnable = () -> {
dog.call();
};

runnable.run();
}
}
“`
このソースコードは問題なく動くが少し納得いかないところがある。



納得いかないのはこの部分。

“`
Runnable runnable = () -> {
dog.call();
};
“`
ラムダ式はメソッドの中で関数を実装してインスタンスを作成している。

ラムダ式を使わずに書くと下のようになる。

※書き換えのバリエーションはほかにもあります

“`
public class Demo

元記事を表示

OTHERカテゴリの最新記事