JAVA関連のことを調べてみた2022年09月14日

JAVA関連のことを調べてみた2022年09月14日

[Java]staticを初心者向けに解説

# Java初学者に向けて
Java初学者がだいたいよくわからなくて詰まりがちなstaticをなるべくわかりやすくなると思って解説していきます。

# クラスとインスタンス
まずはここの違いを認識しましょう。

クラスとは設計図です。
“`java
// ロボットの設計図
public class Robot{
private String name;

public Robot(){
}

public Robot(String name){
this.name = name;
}

public String getName(){
return this.name;
}
}
“`

インスタンスとは、設計図を基につくったオブジェクトです。
“`java
public static void main(String args[]){
Robot dora = new Robot(“ドラえもん”);
Robot koro = new Ro

元記事を表示

JavaのSerializableに対する自分の理解

# そもそもSerializableとは
javadoc↓
https://docs.oracle.com/javase/jp/8/docs/api/java/io/Serializable.html

`java.io.Serializable`がimplementされたクラスは、serialize(=直列化)できる。
serializeとは、具体的にはバイト配列化させるということ。

バイト化させることで、クラスのデータをストリーム(ファイル)やディスクに読み書きできるようになるため、低レイヤでのデータやりとりが可能になる。

おもにdtoやformクラスにimplementすることが多い。

# Serializableをimplementしないことによって起きる害

sessionにdtoを詰める際は、dtoが直列化可能である必要がある。
(=Serializableをimplementしている必要がある)

https://teratail.com/questions/78928

> HttpSessionオブジェクトは、コンテナへ特に設定しない場合はメモリに格納されたまま

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのデバッガ(デバッグ)の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのデバッガ(デバッグ)の比較

# Python

https://qiita.com/kaitolucifer/items/dc58efebd72d72a8feb2

# Ruby

https://qiita.com/port-development/items/5ea6448eb2b45c70ef65

https://qiita.com/suketa/items/52c60d79332c9a24f973

# PHP

https://qiita.com/ryouya3948/items/0055c1935b7bd62ba3b9

# Java

https://qiita.com/gatchan03/items/3c43b674e2b7c4b5c5cb

# JavaScript

https://qiita.com/a_

元記事を表示

switch文利用の注意点について(忘れないように)

本日実務で久しぶりにswitch文を実装する機会があったので、
Java silverにて学んだことをもう1度おさらいで備忘録として残そうかと思います。

## Switch文利用の注意点
注意点は3つです。
基本的には、統合開発環境(eclipseなど)が赤線で教えてくれますが、
最初から知っていれば無駄な修正時間も省けます。

### ①:case文の処理後は、break or returnを忘れない

“`java
String status = “open”;
int i = 0;
switch (status) {
case “open”:
i++;
case “close”:
i++;
break;//ここまで処理が実行されてしまう
}
“`

これは統合環境(eclipseなど)でも赤線を引っ張られないので、記載漏れがあった場合、
テスト時に気づく必要があります。

case文に該当すれば、その中の処理が実施されますが、breakもしくはreturnをしないと次のcase文まで実行してしまいます。

### ②:case文で指定す

元記事を表示

【Java基礎】インターフェース

# はじめに
最近Java基礎の研修を受けました。学生時代にJavaを授業で習って基礎は身につけていたのですが、忘れていた内容もあったので備忘録として書き残してみます。

この記事では、**Javaの基礎的な内容に関してまとめていきます**。
今回は**インターフェース**です。

# インターフェースとは
**インターフェース**とは、原則として、**publicな抽象メソッドだけを宣言できるクラスのようなもの**です。コンストラクタも宣言することができません。また、**インスタンス化できない**のも特徴です。

# インターフェースの宣言
インターフェースは以下のように宣言します。
“`java:インターフェースの形式
修飾子 interface インターフェース名 {
インターフェースのメンバ
}
“`

## メソッド
インターフェースには、publicな抽象メソッドが宣言できます。
“`java:抽象メソッドの宣言例
interface Booking {
public abstract String getTitle();
List

元記事を表示

Android StudioでWebViewアプリを作成してみる

## はじめに
転職による有休消化期間で何かしたいと思い、Androidで欲しかった機能を作ろうと思い立ちました。
期間は半月程度です。
ほしかった機能はここでは重要ではないので割愛しますが、Androidのローカルファイルへのアクセスが必要な他は特に必須機能がないのでアプリ画面はWebViewなどで簡易に作成することにしました。
Kotlinは未経験でしたが、Javaは経験済みだったため、Kotolinを一から学習するのではなく、JavaでのAndroidアプリをモック的に作成し、Kotlinにリファクタリングする形で差分学習をし、学習効率をあげようと計画しました。

いつもの自分だったら、Kotlinの本などで一通り学習して、アプリの基本設計もして、準備万端な状態で開発に入るのですが、半月という期間でそれでは間に合いません。
また、こちらの本を読んだばかりで、まずモックを作ってしまうというアプローチや学習効率を模索したかったのもあります。(Kindle Unlimitedに入っています)
【Java基礎】継承

# はじめに
最近Java基礎の研修を受けました。学生時代にJavaを授業で習って基礎は身につけていたのですが、忘れていた内容もあったので備忘録として書き残してみます。

この記事では、**Javaの基礎的な内容に関してまとめていきます**。
今回は**継承**です。

# 継承とは
**継承**とは、クラスの機能を受け継いで機能を拡張した新しいクラスを作成する方法です。
このとき、継承元となるクラスを**親クラス(スーパークラス)**、継承して新たに作成したクラスを**子クラス(サブクラス)** と呼びます。

次の関係を見てみましょう。
+ 商品
+ 本
+ 食材

このとき、「商品」という親クラスから、「本」「食材」という子クラスが作成されています。

## 継承の方法
継承は以下のように行います。
“`java:継承の形式
class 子クラス extends 親クラス名 {
}
“`

継承の例を見てみましょう。

“`java:「商品」クラス
class Item {
// 「商品」クラス
}
“`

“`java:「本」クラス
clas

元記事を表示

【Java/Kotlin/JPA】entityをnullセーフにしたい

こんにちは。こまつです。

概要

Java8からJavaにもnullセーフが入りました。optionalを使えばヌルポがなくなります。
とか言いながら、Java+SpringDataJPAではoptionalをマッピングできません。カスですね。
Kotlinならどうなるんでしょうか。

前提

nullセーフとはヌルポになりうるコードをコンパイルエラーにしてくれるやつです。
Entityは特にnullセーフにする重要度が高いです。

“`nulセーフサンプル.java
String randomStr = new Random().nextBoolean() ? “わーい” : null; // nullかも知れない文字列
Integer length1 = randomStr.length(); // 1/2でヌルポ
Optional str = Optional.ofNullable(randomStr); // null知 文字列型定義
Integer length2 = str.length(); // コンパイルエラー
Integer leng

元記事を表示

初めてのSpringBootでのアプリケーション作成(実装編)

# 概要
本記事では、プログラミング初学者が初めてWebアプリを作成してみて詰まったことや困ったことなどをまとめました。今回は実装編です。
環境構築編もありますので、是非そちらも併せて読んでいただければと思います。

基本的には以下の記事で作成しているポモドーロタイマーと同じものを作成しています。
設計やコードなどはほぼほぼ一緒ですので詳細はそちらをご参照ください。

https://qiita.com/Shiho_anyplus/items/59a93b1fcb09b6ef8e81

## 作成したアプリ画面
参考元の記事と少し違いますがcssの変更によるものだけで機能は同じです。
![スクリーンショット (520).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629104/020fed79-26af-7958-ffef-6b7040c5701a.png)

### 環境
– Windows10
– Eclipse 2021
– Java 11
– PostgreSQL14

# 作業して

元記事を表示

初めてのSpringBootでのアプリケーション作成(環境構築編)

# 概要
本記事では、プログラミング初学者が初めてWebアプリを作成してみて詰まったことや困ったことなどをまとめました。今回は環境構築編です。

基本的には以下の記事で作成しているポモドーロタイマーと同じものを作成しています。
設計やコードなどはほぼほぼ一緒ですので詳細はそちらをご参照ください。

https://qiita.com/Shiho_anyplus/items/59a93b1fcb09b6ef8e81

## 作成したアプリ画面
参考元の記事と少し違いますがcssの変更によるものだけで機能は同じです。
![スクリーンショット (520).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629104/020fed79-26af-7958-ffef-6b7040c5701a.png)

### 環境
– Windows10
– Eclipse 2021
– Java 11
– PostgreSQL14

# 作業してみて詰まったこと・困ったこと
Eclipseは使える!記事も読んだ!けどど

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのコマンドライン引数の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのコマンドライン引数の比較

# Python

https://qiita.com/taashi/items/07bf75201a074e208ae5

# Ruby

https://qiita.com/shiGira/items/44586bdc48c06e00d99f

# PHP

https://qiita.com/aic0o/items/91ca1ddc1fc6e025286f

# Java

https://qiita.com/takahirocook/items/ece64146015f702d0a83

# JavaScript

https://qiita.com/furusin_oriver/items/f030d1eaa9e7b54233c3

# Perl

https://perlzemi.com/

元記事を表示

【JDK】インストールと環境変数の設定(Windows)

## 環境
+ Microsoft Windows 10.0.22000.856
+ Windows Terminal 1.14.2282.0

## はじめに
この記事ではJDKのインストールと環境変数の設定の手順を説明する。

【用語解説】Java SE, JVM, JRE, JDK

### Java SE (Java Platform, Standard Edition)
**Java APIの集合体**。ここでいうAPIはJavaの機能やデータなどを利用するための呼び出し方を定義したもの。

### JVM (Java Virtual Machine)
**Java仮想マシン**。Javaで作成されたアプリケーションをOSで動かすために必要となるアプリケーション。クラスファイル内のバイトコードをCPUが解釈できるマシンコードに変換するとともに、CPUに送って処理を実行する。

### JRE (Java Runtime Environment)
**Java実行環境**。Javaのプログラムを実行するためのJVMや対応する

元記事を表示

Gradle実行時に発生するjava.lang.IllegalArgumentException: Unsupported class file major version 61を解消する方法

# 対処方法

使用しているJava SDKのバージョンを変更する。

## macOS

“`sh
brew install openjdk@11
echo ‘export PATH=”/opt/homebrew/opt/openjdk@11/bin:$PATH”‘ >> ~/.zshrc
rehash
“`

# エラーが発生する理由

使用しているJavaのバージョンが新しい、もしくは古い。

# エラー全文

“`
FAILURE: Build failed with an exception.

* Where:
Settings file ‘/Users/reoring/repos/mal/mal-account-keycloak/settings.gradle’

* What went wrong:
Could not compile settings file ‘/Users/reoring/repos/mal/mal-account-keycloak/settings.gradle’.
> startup failed:
General error dur

元記事を表示

KMSでSecp256k1の署名と検証(後編)

# はじめに(Introduction)

BitcoinやEthereumでは署名にECDSA(楕円曲線DSA)を用いています。
そこで使用される、楕円曲線はSecp256k1と呼ばれるパラメータです。
AWS Key Management Service (AWS KMS) では、Secp256k1のECDSAを用いることが出来るのでこれをJavaを使用して署名、検証を行います。

サンプルで使用するライブラリとしては、Ethereumで利用されているWeb3jを使用します。

筆者は、AWSもEthereumも素人なので、そこら辺の間違いについてはご指摘いただけるとありがたいです。

この記事は後編です。
[前編はこちら](https://qiita.com/tnakagawa/items/7c4ef36080aed97516d1)

# 実装(Programming)

JavaでKMSを利用して署名と検証を行います。
前編で取得した、IAMユーザの「**アクセスキーID**」と「**シークレットアクセスキー**」と
KSMで作成した鍵の「**キーID**」を使用します。

#

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較

# Python

https://qiita.com/Morio/items/e8aed85346c0055beea7

# Ruby

https://qiita.com/Morio/items/3ac5cac9ace7e9ddbdb4

# PHP

https://qiita.com/miriwo/items/d1b5d5ece4f16c7b5985

# Java

https://qiita.com/Co_Pilot/items/7c59410cd90be4cf06d8

# JavaScript

https://qiita.com/w-tdon/items/f3ecb29dc9350f2f2e8d

# Perl

https://perlzemi.com/blog/20080327120662

元記事を表示

C言語とJavaの環境構築

*Ubuntu22.04*環境下における、*C*と*Java*の環境構築について備忘録。

# C言語

コンパイラの*clang*と*gcc*のインストールだけなので、

“`
sudo apt install clang gcc
“`

で良いです。

# Java

*Eclipse*は、好みの問題で今の所、使いません。
“`
sudo apt install default-jdk
“`

で良いです。*JDK*についてバージョンを選択したい場合は、

[Java Downloads | Oracle](https://www.oracle.com/java/technologies/downloads/)

から選択して落としてください。当方、まだ初学者なので、そんなJDKを選ぶような状態ではないです。の場合は、上述のコマンドでよいでしょう。

以上です。

元記事を表示

Spring IntegrationのTCP機能のデシリアライズ時にタイムアウトを指定する

Spring IntegrationのTCP機能には、ソケットレベルのタイムアウト時間(SO_TIMEOUT)を指定することはできるのですが、これは接続相手から指定した時間データが送られてこないとタイムアウト扱いになります。
特に問題ないように思うかもしれませんが、例えばタイムアウト時間に「10秒」を指定した場合、接続完了から10秒間データのやり取りがないとタイムアウトになってしまいます。これは都度接続方式であれば問題にならない可能性はありますが、常時接続方式だと・・・問題になります。

:::note warn
本エントリーの記載は、NIO(Non-Blocking/IO)を使う前提になります。NIOじゃないと「やりたいこと」が実現できないので悪しからず。
:::

# やりたいこと

データを受信して1つのメッセージにデシリアライズが完了するまでのタイムアウト時間を指定できるようにしたい。

# タイムアウト検知機能付きのデシリアライザ

タイムアウト検知機能付きのデシリアライザを作ってみました。

“`java
package com.example;

import org.

元記事を表示

逆引きQuarkus

[backend-example-quarkus](https://github.com/unhurried/backend-example-quarkus)を実装する過程での知見を整理した。QuarkusでReactiveなRestful APIを実装する際の勘所をまとめている。

#### 基礎知識を学ぶ

RESTful APIを実装するのであれば、下記が全体を理解するのに役に立つ。

* [WRITING JSON REST SERVICES](https://quarkus.io/guides/rest-json)
* [WRITING REST SERVICES WITH RESTEASY REACTIVE](https://quarkus.io/guides/resteasy-reactive)

#### 開発環境を構築する

[Quarkus CLI](https://quarkus.io/guides/cli-tooling)というスタンドアロンなコマンドが提供されているが、[Mavenプラグイン](https://quarkus.io/guides/maven-t

元記事を表示

Java・Kotlin得意マンがRustの文字列の納得に時間を要した話

Javaを20年やってきた自分が、Javaの先入観からかRustで“`String::from(“hoge”);“`という書き方をすることに納得するまで時間を要したので整理。

## Java
文字列リテラル=“`String“`
“`String“`は固定長の文字列を扱うクラス。
+で連結できるが、インスタンスが保持している文字列に付け加えているわけではなく、新しいインスタンスが生成される。
Kotlinの場合は+演算子をオーバーロードしているが、起きていることはJavaと同じはず。

場合にもよるが、“`String“`を連結したい場合は“`StringBuilder“`を使うのが良いとされている。

## Rust
文字列リテラル=“`&’static str“`
メモリ上の不変の部分に存在している。

文字列の連結など、可変長の文字列を扱う場合は“`String“`。
“`String“`の参照はそのまま“`&str“`として扱うこともできる。
逆に、“`&str“`を“`&String“`扱いはできないので、“`String::f

元記事を表示

ABC268A~Dの解答[Java]

## はじめに
今回も4完出来たのでDまで載せようと思います。

では見ていきましょう。

## A – Five Integers
問題文は[こちら](https://atcoder.jp/contests/abc268/tasks/abc268_a)

[公式解説](https://atcoder.jp/contests/abc268/editorial/4779)のように全部比べていっても良いですが、今回はHashSetを使ってみました。
Setで要素の重複はしないので、単純にsize()を出力すれば良いです。
“`A.java
class Main{

static Library System = new Library(java.lang.System.in,java.lang.System.out);

public static void main(String[] args)throws IOException{

//重複を弾くためのHashSet
HashSet list = new HashSet();

元記事を表示

OTHERカテゴリの最新記事