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

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

オーバーライドについて

# オーバーライドについて

## オーバーライドの説明
オーバーライドとは、サブクラス内で、スーパークラスで定義しているメソッドと目的が同じであるが、
処理が異なるメソッドを定義する場合に使用します。

## オーバーライドのルール

実際にコードをみてみましょう。

“`
class Parents { //親クラス
A method(int a){}
}

class Childs extends Parents { //サブクラス
A method(int a){}
}

“`

オーバーライドは、**メソッド名、引数リストがまったく同じであること**、
戻り値は**スーパークラスと同じ型もしくは、その型のサブクラス型でなければいけません。**

また、アクセス修飾子は**スーパークラスと同じものか、それよりも公開範囲が広いものを使用**しなければいけません。

・アクセス修飾子
*public(広い) ⇨ protected ⇨ デフォルト ⇨ private(狭い)*

## @Override(アノテーション)について
Java言語では@Ov

元記事を表示

Java DecimalFormat NumberFormat を簡単にまとめました。

|0|数値1桁を表します。数値が無い場合は「0」を表示させます。|
| —- | —- |
|#|数値1桁を表します。数値が無い場合は何も表示させないです。|
|,|カンマ区切りを表します。|
|%|パーセントで表示します。|
|–|マイナスを表します。|
|.|小数点を表します。|

“`java
// NumberFormatクラスを利用したパターン (表示形式が既定のフォーマットでOKな場合)
NumberFormat perFormat = NumberFormat.getPercentInstance(); //パーセント
NumberFormat comFormat = NumberFormat.getNumberInstance(); //カンマ区切り
NumberFormat curFormat = NumberFormat.getCurrencyInstance(); //通貨

System.out.println(perFormat.format(1.234));
System.out.println(co

元記事を表示

Microsoft Build OpenJDK の正式リリースを発表

この記事は ”[Announcing General Availability of Microsoft Build of OpenJDK, May 25th, 2021](https://devblogs.microsoft.com/java/announcing-general-availability-of-microsoft-build-of-openjdk/) ”の翻訳記事です

## Microsoft Build の OpenJDK の一般提供開始を発表

マイクロソフトは Microsoft Build の OpenJDK の一般提供開始を発表できることを嬉しく思います。
Microsoft Build の OpenJDK は、オープンソースで、どこにでも、どなたでも無料でご利用いただける OpenJDK の新しいディストリビューションです。
マイクロソフト社内でも Java は数多く利用されており、50万を超える Java VM が社内で実行されています。Java Engineering Group は、Java エコシステムに貢献できることを非常に誇りに思ってい

元記事を表示

jstatコマンドでjvmのガベージコレクションの様子を見てみよう

本記事では、jstatコマンドを使って、jvmが動的にガベージコレクションを行う様子を確認する。
java歴1週間の人間が自分用のメモとして書いた記事です。内容自体はn番煎じであること、考察も一部不完全であることをご承知おき下さい。

本記事の作成にあたって、以下の記事を大いに参考にさせていただきました。

[JavaのGCの仕組みを整理する](https://qiita.com/e_tyubo/items/48398391a8ef0f24c1be)
[jstatを使用したJavaアプリのメモリ計測](https://qiita.com/N_G/items/2dab8694fdebce2de868)
[Javaのメモリ設定と、jstatの出力結果に関するメモ](https://qiita.com/sengoku/items/03939ce47363f2b69803)
[Javaのメモリ調査ことはじめ](https://qiita.com/nkoseki/items/79ab050351e08c319832#jstat%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%

元記事を表示

Java屋さんのMaven使うのなんでを考察する

## これはなんですか?
タイトル。

この記事を読むとよいかもしれない対象者は「なんでMavenとGradleでビルドツールが2分化されているのか」について疑問に思っている人に対してJava屋さんが一つの考察を開示するものです。

ここ2年間で5回位聞かれたことなので、記事になるかなーと、考えを記すことにしました。

## 本題

メリット。
1. 昔から使ってるのでやりたいことの9割以上のことがMavenで**かんたんに**できてしまう
1. 資産として溜め込んだプラグインの使い方をGradleに移植するのが面倒
1. Gitで公開していあるそこそこ歴史あるプロジェクトはビルドツールにMavenを使っていることが多く、絶滅するおそれが少ない
1. やりたいことのプラグインも探せばだいたい出てくる

デメリット。
1. XMLだるい
1. 初心者がとっつきにくい
1. Java以外の言語だと最適ではない場合がある

長くJavaと寄り添ったツールとして発達し、支持されているため、その世界最強ですが、kotlinやgroovyのプロジェクトではgradle使うべきかなーとも思います。

元記事を表示

ストップウォッチ

activity_main.xml

“`

元記事を表示

Spring BootとPostgreSQLで時間計測 powered by AMD Ryzen7 4800H(8core/16thread)

##検証環境

– Spring Boot環境
– v2.5.0
– OS Windows10
– OpenJDK 16.0.1
– PostgreSQL環境
– v10.15
– OS Red Hat Enterprise Linux 8.4
– 仮想化環境 vmware workstation player 16.1.2 4core/メモリ8GB割り当て
– JMeter環境
– v5.4.1
– OS Windows10(Spring Bootと同居構成=本当はよくない。)
– jdk-8u291-windows-i586(最新版だと動かないので意図的に古い版を利用)

##検証コード

“`
package com.example.demo.controller;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Map;
import org.springframework.beans.f

元記事を表示

フィールドのアクセス修飾子について

# フィールドのアクセス修飾子について

JavaSilverの学習とマッチングサイト制作時に、フィールドのアクセス修飾子はprivateにするのが基本だということを知ったのをきっかけに、フィールドのアクセス修飾子について調べてまとめてみました。



# フィールドのアクセス修飾子の定石
フィールドはすべてprivateに指定するのが基本とされています。

privateでフィールドを指定することで外のクラスからは直接アクセスすることを阻止できます。

【privateフィールドの宣言(構文)】

`クラス名.staticフィールド名
`


# privateフィールドにアクセスする方法
privateフィールドにアクセスする方法は、フィールドのある場所が同じクラスのメソッドと他クラスのメソッドで異なります。

## 同じクラスのメソッドからアクセスする方法

同じクラスのメソッドからは「this」を用いてアクセスします。

コード例

“`Java
pub

元記事を表示

業務用コードの書き方(ver1.0)

# はじめに
初心者から中級者になるためには可読性の高いコードを書く、一般的に業務で製品としてつくるコードが書けることが初心者を脱出する第一歩になります。**製品を提供する**、**納品する**、**保守性の良い**、**誰がみてもわかりやすい**、**バグが出にくい**コードを**高速**で書けますか??本章では一般的にできて当たり前なコードを書くお約束と、わかりやすいコードってなんだろう?をお伝えしていきます。

# コメントを書くということ

保守性、可読性といった観点でコメントは重要です。自分のためにではなく、次にこのソースコードを触るひとのために書きます。たまにラップ調で*XXを呼び出す*、*YYを返却する*といったコメントを見かけますが、正直そんなの見ればわかりますよね笑 ぱっと見で次の人のために、なにをするためにあるかを書くくらいでもいいのではないでしょうか。コメントは多ければいいというものではありません。
クラスやメソッドにはブロックコメントを書きますよね。なぜなら後からPHPDOCやJAVADOCといった自動で出力することができるし、IDEによってはマウスオーバーでそ

元記事を表示

C++で作成したDLLとC#/Javaとで文字列を授受する

# 目的

諸事情あってC++で作成したライブラリ(DLL)をC#, Javaでも使用したい。
またその処理の都合上、文字列を引数で授受したい。

# 方法

ソースコード全体は[GitHub](https://github.com/kurukuruz/demo-common-dll)に配置。

## 前提

– C++, C# のビルドにはVisual Studio 2019を使用
– Java は Open JDK 11 を使用
– 各ソースコードはShift-JISで記述

## 呼び出される関数

### 定義

今回呼び出される関数(C++で作成)の定義を示す。

“`cpp:my_common_lib.h
#define MY_COMMON_FUNC_DECL_KWD __declspec(dllexport)
extern “C” MY_COMMON_FUNC_DECL_KWD bool __stdcall my_func_a(
const char* in_str,
char* out_str
);
“`

仕様上のポイントは以下の通り。

– 入力

元記事を表示

Scanner.nextLine()で一行目の文字列を取得した後に、配列にして、目的の文字を要素で取得する方法

“`
// 入力例:System.in = {A B C}
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
String[] params = line.split(” “); // 配列にしてしまう

System.out.println(params[0]); // A
System.out.println(params[1]); // B

// 蛇足
System.out.println(params); // オブジェクト名が表示される(例:[Ljava.lang.String;@5f184fc6)
“`

元記事を表示

SpringBoot+JUnit+DBUnitで超簡潔なテスト

以前に作成した[SpringBoot + MyBatis + Thymeleaf + MySQL で超簡潔なCRUD処理](https://qiita.com/hhujk5/items/a35fab16614164c99718)でテストコードを書いてみたので自分用のアウトプットとして投稿させていただきます。
誤りがございましたらご指摘いただけますと幸いですm(_ _)m

##環境
macOS Big Sur
Java 11
Spring Boot 2.4.5
SpringToolSuite4
Maven
MySQL
MyBatis

##テスト対象
①GETリクエストで正しくページが表示される(HTTPステータスコード200が返される)こと。
②GETリクエスト時に、Modelのattributeに文字列”hello”が渡されていること。
③GETリクエスト時に、select処理によりModelのattributeにデータベースのUserListが格納されていること。
④ユーザーのIDを引数とした1件のselect処理が成功していること(DBUnit利用)。
⑤データベース全体のse

元記事を表示

JavaのTreeMap

Javaの連想配列の使い方の記事です。データベースのデータの受け取り処理、ファイルを読み込む処理の時に良く使います。今回は標準入力、標準出力でのサンプルプログラムです。

“`Java
package sakamichi;

import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Sample1 {
public static void main(String[] args) {
Map data = new TreeMap();
Scanner sc = new Scanner(System.in);
System.out.println(“データの個数を入力してください”);
String line = sc.next();
int N = Integer.parseInt(line);
for(int i=0;i

元記事を表示

標準入力のScannerを1度closeしたら、2度と標準入力できない理由を調べた

#概要

Javaで標準入力ストリームのScannerを1度close()すると、再度Scannerクラスのインスタンスを生成しても標準入力ができなくなります。

“`Java:Sample.java
Scanner sc1 = new Scanner(System.in);
sc1.close();
Scanner sc2 = new Scanner(System.in);
String input = sc2.nextLine(); // NoSuchElementException
“`

理由は、「標準入力ストリームはプログラム開始時に開き、sc生成時に開くわけではない。一方で、sc.close()すると標準入力ストリームが閉じてしまうため」です。

「当たり前じゃん」と思ったらそれでOK。
以下、もう少し詳しく説明します。

#私が誤解していた点
私は上述のエラーについて、「Scannerクラスのインスタンスを新しく生成しているんだから、読み込めてもいいのでは?」と思っていました。
これは、Scannerクラスとストリームの関係があいまいだったゆえの誤解です。

実際は

元記事を表示

VSCode の Java 開発環境にフォーマッターを設定する

# はじめに

本記事では [Google Java Style](https://google.github.io/styleguide/javaguide.html) をサンプルに、フォーマッターを Visual Studio Code に設定する方法を紹介していきます。

# 前提

– 拡張機能 [Japanese Language Pack for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-ja) がインストールされていること。
– 拡張機能 [Java Extension Pack](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack) がインストールされていること。

# 設定方法

## 1. フォーマッターファイルを用意

Google Java Style のフォーマッターファイルは、https://ra

元記事を表示

ある日突然名前解決ができなくなった時に見ると、助かるかもしれない

#はじめに
こんにちは、黒糖と申します。

ブログ(https://kokutoh.com/?p=187)
に書いた内容と同じですが、同じ轍を踏まないようにQiitaにも書いて、供養したいと思います。

日々、システムエンジニアとして、とあるECサイトの保守・運用業務を担っております。
※環境としては、一般的な構成(FW、SSLアクセラレータ、LB、Web(AP)サーバ複数台、DBサーバ)で
 アプリケーションのミドルウェアはWebshere Application Server 8系
 Web(API)サーバのOSはRedhat7、Java1.7です。

先日、他社様とのWEB API 部分で、通信に失敗し、
試行錯誤した末に、復帰することができましたので、備忘の意味も込めて、残しておきます。

#原因?
結論から申しましょう。
原因としては、APIを受ける他社様サーバはAWS上に構築されており、IPアドレスが可変であったことです。

#でも、ちょっと待って・・・
ただ、そのAPIにリクエストを送信するWEB サーバから参照しているDNSサーバは、
他社様指定のもので、名前解決の結果

元記事を表示

Jasperで帳票PDF出力備忘メモ

# 1. はじめに
JavaプロジェクトでJasperによる帳票出力方法についてまとめたメモ。

# 2. Jasper Studioインストールと設定
帳票テンプレート(jrxml)を作成するためにjrxml編集ツールをインストールする必要がある。
編集ツールの利用方法は下記の2通り。

* Jasper Studioを利用する([リンク](https://community.jaspersoft.com/wiki/jaspersoft-studionoinsutorutosetutoatupu))
* IDEにJasperプラグインをインストールする

今回はEclipseのJasperプラグインを利用することにする。

Eclipseへのプラグインインストール方法は[Jaspersoftのコミュニテイーページ](https://community.jaspersoft.com/wiki/jaspersoft-studiopuraguinnoinsutoru)に記載されているため、ここでのインストール手順は省略する。

※2021/5時点の最新バージョンは**6.17.0**である

元記事を表示

JavaでFizzBuzzを作ってみた

こんにちは。Javaを学習し始めたので早速FizzBuzzを作ってみました。
ちなみに私はRubyを学習していました。

“`java
public class FizzBuzz {
public static void main(String[] args) {
for(int i = 1; i < 50;i++) { if((i % 3 == 0)&&(i % 5 == 0)) { System.out.println("FizzBuzz"); }else if(i % 3 == 0) { System.out.println("Buzz"); }else if(i % 5 == 0) { System.out.println("Fizz"); }else { System.out.println(i); } } } } ``` 結果 ![515d8694a15a377205a3c2455cdc4fd9.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

Spring Cloud Contract メモ – Getting Startedでの気付き

## 1. やったこと

– Spring Cloud Contractのサンプルを実装して動かした
– 下記のガイドを参考に実装した
– https://spring.pleiades.io/guides/gs/contract-rest/
– Artifactをローカルリポジトリに配置して、Consumer側からアクセスできることを確認した
– Githubリポジトリに生成されたStubを配置して、Consumer側からアクセスできることを確認した
– 実装したサンプルは下記リポジトリ
– https://github.com/ShigeoTejima/spring-cloud-contract-demo

## 2. バージョンなど

– Java 11
– AdoptOpenJDK-11.0.11+9
– Spring Boot 2.4.6
– Spring Cloud Contract 2.2.7.RELEASE
– Spring Cloud Contract 3.0.2

## 3. 気づき

### 3.1. Githubリポジトリにssh接続の場合にエラーに

元記事を表示

Javaでグラフを描画する(SpringBoot)

日次で資産運用のグラフを管理していますが、エクセルだとブログに簡単に貼れないので自作しようと思います。WEBサービスでよくある、インターネット上にデータを保管するようなものではなく、入力欄にエクセルからデータを貼り付けて、グラフ画像を作るだけのプログラムを考えています。(データを管理するとコストがかかるので・・・)

### 現時点の資産運用グラフ

上記のグラフと推移が一致するグラフ画像をプログラムで作ります。今日はまず分割線とチャートです。

**実際にプログラムで出力したチャート画像**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1535669/8ad1daa8-fce7-f4b8-f0d0-0e30a2d896eb.png)
**プログラム**
https://github.com/jamcookjapan/grapy/commit/567f8b2f444b1ef4a89e622babf3a4

元記事を表示

OTHERカテゴリの最新記事