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

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

Javaに入門してみたらmainメソッドが気になり過ぎて前に進めなくなった

#はじめに
IT業界の経験は10年以上あるものの、ずっとメインフレームコンピュータなどのレガシーな環境でCOBOLの開発をやってきて、最近はCOBOLすら書いていなくて完全にエクセルで資料作ってる人がこの記事を書いております。Java初心者が記事を書いておりますので間違いなどありましたら指摘頂けると幸いです。

#何が起きたのか
これまで個人開発でPythonを書いてきましたが、ふとOOPについて学んでみたくなったので、Javaを学んでみることにしました。まずは環境構築してHello Worldしてみたのですが、「mainメソッドはおまじない」という入門記事があったりして、本当にそれでいいのか?と気になって先に進めなくなり色々調べてみたという話です。

#とりあえず環境構築してHello Worldまでやってみる

###JDKのインストール
まずはJDK(Java Development Kit)をインストールするために[JDKのダウンロードページ](https://www.oracle.com/java/technologies/downloads/)にいきます。
2022年1月時

元記事を表示

【個人的4選】サイバーセキュリティニュースまとめ(2021年12月)

# はじめに

## この記事の目的
この記事は日々刻々と変化するサイバーセキュリティ関連のニュースの内、興味深いニュースを筆者の**独断と偏見**でピックアップしたものです。

日々の情報収集、セキュリティの勉強、~~セキュリティ全く関心のない経営層への啓蒙~~などに役立てていただけますと幸いです。

## 想定読者
– セキュリティ関連の仕事に従事している人
– セキュリティに関わらないけど、少しセキュリティに興味がある人
– セキュリティに興味のある学生

# サイバーセキュリティニュース
2021年12月は、4つのニュースをピックアップしました。

## 1位 Apache Log4j の脆弱性
1位はこれで異論のあるセキュリティ担当者はいないでしょう。
12/10頃に世界的に話題になった、Javaのログ出力ライブラリLog4jの脆弱性です。

多くのセキュリティ担当者がこの脆弱性に対応に忙殺されたのではないでしょうか。

### 概要

>
Javaベースのログ出力ライブラリLog4j2で深刻な脆弱性(CVE-2021-44228)を修正したバージョンが公開された。その後も

元記事を表示

【Java文法】リスト(List)

こんにちは、コイキングです。

本記事では’リスト(List)’について、説明したいと思います。

******

# 1. リスト(List)とは?
リストはJavaでデータ構造とデータを取り扱うためのコレクションフレームワークに属するインターフェースです。
配列のように**順序があるデータを格納するためのデータ構造**で、リストを実装しているクラスはArrayList, LinkedList, Vectorなどがあります。

# 2. ArrayList
## 1) アレイリスト(ArrayList)とは?
‘ArrayListは**長さが変更できる配列’**のようなデータ構造です。
ArrayListのクラス内部を見れば**配列を使いデータを格納している**ことが分かります。

※ 長所
– 配列のように**インデクスを使い、速やかに要素にアクセスできます。**

※ 短所
– **長さが変わる際の処理に時間がかかる。**
 リストにデータを入れてみるとリストの内部のデータを格納する配列の長さを超える場合がある。この時長さを増やした新しい配列に既格納していたデータをコピーする処理

元記事を表示

【Java文法】ラッパークラス

こんにちは、コイキングです。

本記事では’ラッパークラス’について、説明したいと思います。

******

# 1. ラッパー(Wrapper)クラスとは?
ラッパークラスはプリミティブデータ型をクラス化したもので、
**1) プリミティブ型の変数をインスタンスとして使う場合**
**2) 文字列 <-> 数字を相互変換する必要がある場合**
などに使います。

# 2. プリミティブ型からラッパークラスのインスタンスに変換
– プリミティブ型 -> **ラッパークラスの変換はnew 演算子**を使います。

“`
// ※ Wrapperクラスの参照変数には’null’の代入ができます。
Integer wrapperInt = null;
Long wrapperLong = null;
Short wrapperShort = null;
Byte wrapperByte = null;
Double wrapperDouble = null;
Float wrapperFloat = null;
Character wrapperChar = null;
Boolean

元記事を表示

【Java文法】標準入出力

こんにちは、コイキングです。

本記事では’標準入出力(ユーザーからキーボード操作などにて入力を受け取り、コンソールにて結果を出力)’について、説明したいと思います。

******

# 1. 値を入力する(Scannerクラスを使う)
Scannerクラスはユーザーからデータを入力してもらう様々なメソッドを提供するクラスです。

## 1) 整数データ入力

“`
// (int)
int inputInt = sc.nextInt();
System.out.println(“Inputed int : “+inputInt);

// (long)
long inputLong = sc.nextLong();
System.out.println(“Inputed long : “+inputLong);

// (byte)
byte inputByte = sc.nextByte();
System.out.println(“Inputed byte : “+inputByte);

// (short)
short inputshort = sc.next

元記事を表示

【Java文法】メソッド

こんにちは、コイキングです。

本記事では’メソッド’について、説明したいと思います。

******

#1. メソッドとは?
メソッドは呼出すと**特定の動作を行い、その結果をリターンするコードの集まり**として、数学の関数のような役割を担います。

#2.メソッドの宣言
メソッド'[アクセス制御子] [リターンするデータ型] メソッド名(引数1, 引数2…){メソッドのコード… }’の様に宣言します。

## 1) 引数 X, 戻り値リターン X

“`
public void printHello() {
System.out.println(“Hello!!!”);
}
“`

括弧'()’の内部に引数を宣言せず、戻り値がないため、'[リターンするデータ型]’にはvoidを使います。

## 2) 引数 O, 戻り値リターン X

“`
public void printString(String str) {
if (str == null || str.equals(“”)) {
/*
* こちらで使う re

元記事を表示

【Java文法】配列

こんにちは、コイキングです。

本記事では’配列’について、説明したいと思います。

******

#1.配列とは?
配列は同じデータ型の変数が順次的に格納されているような形のデータ構造です。
数が決まっている同じデータ型のデータを扱う時に配列が使われます。

#2.配列の宣言と初期化
## 1) 配列の宣言

“`
// データ型 [] 配列名;
int [] arrayInt;
“`

## 2) 配列の初期化する(配列の長さを指定)

“`
// 配列名 = new データ型 [長さ];
arrayInt = new int[3];
“`

## 3) 配列の宣言と初期化を同時にする(配列の長さを指定)

“`
// データ型 [] 配列名 = new データ型 [長さ];
String [] arrayStr = new String[3];
“`

## 4) 配列の宣言と初期化を同時にし、配列にデータを入れて生成
### – 方法1

“`
// データ型 [] 配列名 = new データ型[]{要素1, 要素2, 要素3…}
char [] arr

元記事を表示

【Java文法】ループ

こんにちは、コイキングです。

本記事では’ループ(繰り返し処理)’について、説明したいと思います。

******

# 1. ループとは?

ループは条件式の結果が偽になるまで、ループ構文内のコードを繰り返して実行する構文です。
Javaでループ構文はfor文、拡張for文(for-each文)、while文、do-while文があります。

# 2. for文
for文は**決まった回数分コードを繰り返して実行したい時に**主に使うループ文です。

“`
// for ([初期値]; [条件式]; [増減演算]) {
// 条件式の結果が偽になるまで実行するコード…
// }

for (int su1 = 0; su1 < 5; su1++) { System.out.println("for 1 ["+ su1 +"] 回目出力"); } ``` # 3. 拡張for文(for-each文) 拡張for文は**配列やリストのようなデータを格納しているデータ構造から、格納されているデータを順次抜き出す場合**、主に使います。 ``` ArrayList

元記事を表示

【Java文法】条件分岐

こんにちは、コイキングです。

本記事では’条件分岐’について、説明したいと思います。

******

# 1. 条件分岐とは?
条件分岐は**条件式を用いて、コードを実行するかどうか制御する構文で、**
条件式の結果が真の場合構文内のコードが実行される形でコードの実行を制御します。
Javaで条件分岐の構文はif文、switch文、算術演算子があります。

# 2. if文
if文は条件式の結果が真であればif文の構文内のコードが実行され、プログラムのフローを制御する構文です。
else、else-ifキーワードを使ったり、省略することで多種多様にコード実行を制御できます。

## 1) if文単体で使う

※ 条件式の結果が真の場合、if文内部のコードが実行されます。

“`
int a = 10;
int b = 20;
int c = 10;

if (a < b) { System.out.println(a +" より "+ b +"が大きい"); } ``` ※ 条件式の結果が偽の場合、if文内部のコードは実行されないです。 ``` if (a < c) {

元記事を表示

【Java文法】演算子(オペレーター)

こんにちは、コイキングです。

本記事では’演算子(オペレーター)’について、説明したいと思います。

******

# 1.演算子(オペレーター)とは?

オペレーターは演算をする為の記号です。
主に使われている演算子は四則演算(しそくえんざん)のために必要な’算術演算子’、
値を順次増やしたり、減らしたりするための’増減演算子’、値の比較などための’比較演算子’、変数に値を代入するための’代入演算子’などがあります。

# 2. 算術演算子(さんじゅつえんざんし)
四則演算のような計算をするために使う演算子で、
コードでは”[値A][演算子][値B]”のような形で使われます。
コードの解析は”値Aを値Bで演算子に該当する演算を実施”とすれば良いです。

## 1) ‘+’ プラス演算子
プラス演算子は足し算で使われ、コードの解析は **”値Aに値Bを足す”** になります。

“`
int a = 100;
int b = 20;
int c = -10;

System.out.println(a + b); // 120
System.out.println(a +

元記事を表示

java ソースコードを github に上げるまで

java のソースコードを github に上げるまでの手順です。
ここでは「args_parser」というプロジェクト名とします。

## 1. github でリポジトリを作成
[github](https://github.com/) でリポジトリを作成します。
![スクリーンショット 2022-01-09 10.18.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248817/576314e6-39fc-af92-5b78-618b2d07f9a0.png)

ローカルに `clone` します。

“`sh
$ git clone git@github.com:h-isota/args_parser.git
“`

## 2. gradle で Java プログラムの雛形を生成

java ソースコードの雛形を作成します。

“`sh
$ cd args_parser
$ gradle init –type java-application
“`

「app」というフォルダ内に

元記事を表示

Minioを用いてAWSアカウントなしでS3接続(javaSDK)を確認する方法

#概要
この記事では、AWSのアカウントなしでもAWS S3 接続を確認できる方法を記事にしてみました。
Minio自体は、AWS S3 と互換性があるマルチクラウドオブジェクトストレージのOSSとして知られています。
現場の業務上 S3 に対してJavaを用いて接続する必要があり自宅で無料で接続確認がしたくてminioを採用しました。
使用方法をwebで調べたのですが、出てくるのはdockerを用いて簡単に構築することができることやMinioが提供しているライブラリを用いて接続する方法しかなく、AWS SDKで接続する方法が見つからなかったので今回挑戦し成功したので記事にしてみました。

minioって何?っていう方は以下の記事や公式のサイトを見ると理解できると思います。
https://min.io/
https://dev.classmethod.jp/articles/s3-compatible-storage-minio/

aws s3って何?という方は以下の記事や公式のサイトを見ると理解できると思います。
https://aws.amazon.com/jp/s3/
htt

元記事を表示

[java]戻り値を利用して台形の面積を求める

アウトプット用!!

5回目は
戻り値を利用して台形の面積を求めていく!!

はじめに
戻り値とは何なのか??
戻り値とは呼び出されたメソッドから、呼び出し元のメソッドへ値を返すことまたは値を戻すことを言います。
戻り値を使うことでより汎用性のあるメソッドを作れるようになります。

早速ですが、こちらがコードになります

“`ensyu1.java
//戻り値を利用して台形の面積を求める
//台形の公式     面積 = {(上辺 + 下辺) *  高さ} /2
public class ensyu1 {
public static void main(String[] args) {
int area = daikei(5, 7, 4);
System.out.println(“台形の面積は” + area + “㎠です”);
}

public static int daikei(int topside, int bottomside, int height) {
return ((topside + bottomside) * height) / 2;
}

元記事を表示

Java – try-catch throwsを用いた例外処理について

# Javaの例外処理を独自の例外クラスを作成して行う方法
* なぜこの記事を書くことに至ったか
* 大学の課題でtry-catchを用いた例外処理のプログラムを書かないといけなくなったため
* 備忘録として残しておくため

# 本題

* 課題の内容は、Scannerインスタンスで入力された文字列が用意された配列(2つ)の中身と入力内容(2つ)が一 するかどうかというもの。

* そして、try-catchを用いて独自の例外クラスを用いた処理を行うために、入力内容が何もない状態(改行)の時に例外処理を行うプログラムを作れ、というものでした。
 

 まず先に例外処理クラスの作成を行います。

“` java:ExceptionCheck.java
public class ExceptionCheck extends Exception{
// warningを回避するための宣言
private static final long serialVersionUID = 1L;

ExceptionCheck(String msg) {
// 継承

元記事を表示

iOS APIでは RSA/ECB/OAEPwithSHA-256andMGF1Padding の暗号化・復号ができない

iOS の標準APIでは、Java の RSA-OAEP の “RSA/ECB/OAEPwithSHA-256andMGF1Padding” の暗号化・復号ができません。SHA-512も同様。

## iOS API と Java の OAEP の違い

[OAEP](https://ja.wikipedia.org/wiki/Optimal_Asymmetric_Encryption_Padding) は RSA で使われる平文パディングの手法で、アルゴリズムとしては2つのダイジェスト(ハッシュ)アルゴリズムを使います。

* メッセージダイジェスト
* MGF(Mask Generation Function) ダイジェスト

iOS の標準API と Java API では OAEP の仕様が微妙に違います。

* Java の RSA/ECB/OAEPwithSHA-256andMGF1Padding: メッセージダイジェスト=SHA-256, MGF1ダイジェスト=**SHA-1**
* iOS の SecurityAlgorithm.rsaEncryptionOAEPSHA

元記事を表示

[java]標準入力とif文で簡単なプログラムを作ってみた。

アウトプット用!!
今回は標準入力と条件式で簡単なプログラムを作ろう!とのことでさっそくやっていく。

まず今回のプログラムの流れ
①キーボードで好きな沖縄料理を入力する。
②条件式を用いて入力した文字と条件が一致したらtrueになって沖縄料理が食べられる。もし沖縄料理じゃないとfalseになり沖縄料理ではないよ!と表示される。

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

public class Okinawa {

public static void main(String[] args) {

System.out.println(“——————“);
System.out.println(“沖縄料理を食べよう!!”);
System.out.println(“何を食べたいですか?”);
System.out.println(“——————“);

Scanner scanner = new

元記事を表示

MyBatis × SpringBoot チャットアプリでメッセージ・画像送信機能の作成

#はじめに
今回は、自作のチャットアプリで主機能となるメッセージ・画像送信機能の実装を行なったので、実装にあたり詰まったところと解説をアウトプットしていこうと思います。

#環境
– SpringBoot 2.5.5
– MySQL 5.6.51
– MyBatis 2.2.0
– thymeleaf

#ER図
![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/879778/e2284666-c6b2-1d52-62d6-ae3283747e27.png)

#テーブル定義
## usersテーブル

| Column | Type | Options |
| ———— | ——- | ———|
| id(PK・FK) | BIGINT | NOT NULL |
| email | VARCHAR | NOT NULL |
| password | VARCHAR | NOT NULL |
| p

元記事を表示

気ぃつけよ! JavaエンジニアがC#を学ぶ時につまずくポイント3選

こんにちは。
Javaを今まで書いていてここ2ヶ月でC#を書き始めたものです。

それにしてもJavaとC#って似てますよね?

> 「JavaとC#ってほぼ同じだし、1日で文法さらえたわ」

こんなふうに思っていたら、要注意です(自戒)。
似てるが故にハマる落とし穴というものもあるのです。

# 背景

聞くところによると、Javaが1995年に最初に登場して、C#が2000年に最初に登場したようです。
Javaの方が5年上の先輩ですね。

よって、**C#にできるけどJavaではできない**、みたいな言語機能もあるわけです。

まあでもお互いに影響し合って今まで成長してきたのでしょうね。

ここからは、実際にJavaとC#の相違点について考え、**Javaエンジニアが特に陥りやすい**言語仕様などを紹介していきたいと思います。

# 1. “`protected`” の意味が違う

JavaをやっていてC#を始めて触る人は大概、「internalってなんだ?でもprotectedは共通してる!たぶん同じ意味だろうな」なんて思ったりするものです。

違います。

JavaとC#で

元記事を表示

== とequalsの使い分け

== とequalsの使い分け

[同一性と同値性]
・同一性
//同じインスタンスを参照していること
・同値性
//インスタンスは異なるが、同じ値を持っているこ

[==]
同一性を示す時に使う
int型などのプリミティブ型の時には、値が等しいことを示すことができる
配列や文字列などの参照型、同じオブジェクトを参照しているときにtrue
→2つの文字列が同じ値であっても、参照している文字列のオブジェクトが異なる場合はfalseになる

[equals]
同値性を示すときに使う
なにかオブジェクトが等しいかどうかを示すときに使う
Ex.

String sample1 = sc.next();
String sample2 = sc.next();

if(sample1.equals(sample2)){
処理
}

元記事を表示

日付マスタ/カレンダーマスタ生成プログラムを作る Java編

#はじめに

かなり間が空きましたが前回の記事です。

セルフサービスBIの定着化はデータの下処理で決まる! 日付マスタ/カレンダーマスタに必要な項目
https://qiita.com/kitade58k/items/08db8147a7bb90a1bedd

日付マスタ/カレンダーマスタの重要性や利便性についてお伝えした記事です。
業務でBI製品を販売している関係で、お客様の創業期に合わせた日付マスタを作成してお客様へプレゼントしていたりします。

そのために作成した日付マスタ/カレンダーマスタ生成プログラムを社内展開したところ作り方を記事にしてみたら?との声があったので今回はその作り方を解説してみようと思います。

#完成版の動作
CUIでコマンドプロンプトから実行します。
こんな感じです。

“`
C:\DateMasterCreator>create.bat
起点日(創業日)を入力してください。形式: yyyyMMdd 例:20000301
※日が1日以外の値の場合、自動的に1日に変換されます
20000401
作成年数を入力してください。例: 20
30
作成先のフ

元記事を表示

OTHERカテゴリの最新記事