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

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

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
作成先のフ

元記事を表示

【Java文法】データ型

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

本記事では’データ型’について、説明したいと思います。

****

# 1.データ型とは?
変数がどの様なタイプのデータかを示すのがデータタイプと言えます。
Javaでデータ型は大きく **’プリミティブ型’と’参照型’** に分けられます。

# 2. プリミティブ型
プリミティブ型は **変数に値の実体が格納される** データ型です。
因みに **’変数に格納される値の実体’をリテラル** と言います。

Javaでプリミティブのデータ型は8つありまして、詳しくは以下の表を参考にしてください。

**※ Javaのプリミティブデータ型**

|データの分類|データ型|メモリー空間|値の表現範囲|解説|
|——|—|—|—|—|—|
|整数|byte|1 byte|-128 ~ 127|整数データを入れられるデータ型、最も多く使われているのはint型|
||short|2 byte|-32,768 ~ 32,767||
||int|4 byte|-2,147,483,648 ~ 2,147,483,647||
||long

元記事を表示

[アルゴリズム]挿入ソートで配列の中身を小さい順に並べるプログラム

アウトプット用!!

#第4回目は挿入ソートで配列の中身を小さい順に並べるプログラムを作っていく!!

今回も前回と同様にアルゴリズムを意識してプログラミングしてみました。
早速作っていきます。

“`Sort.java
class Sort3 {
public static void main(String[] args) {
int Sort[] = {9,5,3,1};

int i;
int j;
int x;
for(i = 1; i <= Sort.length-1; i++) { //配列[0]は自動的に整列済み。なので[1]から配列の最後まで値をずらす j = i; while( j >= 1 && Sort[j-1] > Sort[j]) { //
x = Sort[j];
Sort[j] = Sort[j-1];
Sort[j-1] = x;
j = j -1;
}
}
i = i +

元記事を表示

AtCoder Beginner Contest 015をやった(Java)

AtCoder Beginner Contest 015をやった。
C問題は追記予定です。
できるか正直自信がないところです。

##[A](https://atcoder.jp/contests/abc015/tasks/abc015_1)
問題文記述の**必ず違う数字**というところに注意

“`Java
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
String A = scan.nextLine();
String B = scan.nextLine();
if(B.length() < A.length()){ System.out.println(A); } else { System.out.println(B

元記事を表示

【Java文法】変数

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

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

***

# 1.変数とは?
![変数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862601/6b26df30-4a95-f141-babd-d43fb7ebf895.png)

変数は値を入れるための、箱のような役割をするものと言えます。
Javaでは数字・文字のようなデータタイプを指定し、変数を宣言します。
こちらは実生活で物を片付ける際に **同じ種類の物同士を箱に入れて整理する** と思ってもらうとオッケーだと思います。

# 2. 変数の宣言
変数を宣言する方法は以下のようです。

“`
// [データタイプ] [変数名];
int var_int_1;
“`

変数が宣言だけされている状態では変数に値が入っていないため、変数の値を出力するなどのコードを作成すると、コンパイルエラーが発生します。

# 3. 変数の初期化
変数を宣言だけした場合、変数がつかえないため、変数に値を入れる必要があります

元記事を表示

Windows出身者がMacでパスを通してみた【zsh】

#背景
Qiita初投稿です。よろしくお願いします。

学生時代と社会人を通し、ずっとWindowsを使ってきた私が個人開発のためMacを使うことになり、Windowsだと慣れていた「パスを通す」という作業で苦労したためやり方をここに残しておきます。

Macでパスを通す記事は検索したらたくさん出てきますが、Macの知識がバックグラウンドにあることを前提に書かれているように見受けられるものが多く、「初心者向け」と書かれていてもWindows出身の私にはわかりづらく感じるものが多かったです。

そのあたりも踏まえ、WindowsからMacに移行した人にもわかりやすい記事を書こうと思いました。

#シェルを理解する
Macでパスの通し方を調べてみると、「シェル」という言葉が出てきます。Windowsを使っていて私は今までシェルを意識しないといけない状況に遭遇したことがなく(意識する必要がある場面もあるとは思うのですが、私がその経験がないだけです)、そもそも「シェル」が何なのかわかりませんでした。

シェルに関する説明は[こちらの記事](https://recruit.cct-inc.co.

元記事を表示

DynamoDBデータ型記述子付きJSONをPOJOに変換する方法

[ref_low]:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Programming.LowLevelAPI.html
[ref_type]:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Programming.LowLevelAPI.html#Programming.LowLevelAPI.DataTypeDescriptors
[ref_capture]:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/streamsmain.html
[ref_mapper]:https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBMapper.html

## ユースケース

[Amazon DynamoDB

元記事を表示

プログラミング初心者がjavaを触ってみる1 そもそもjavaって何だ?

#はじめに
現在プログラミング学習を始め5ヶ月目の初学者です。
学んだことをqiitaに投稿という形でアウトプットするため、また備忘録として記事を作成しています。
javaはprogateで軽く触れたことがあるだけですので、改めて基礎的な知識から学習していこうと思います。

macでの環境構築で下記の記事が大変参考になりました。

https://qiita.com/suke_masa/items/f9af0fb84ad9447ae961

##java特徴
###1.JVM(Java Virtual Machine:Java仮想マシン)で動いている
このJVMが動いているコンピュータであればOSがmacでもwindowsでもLinuxでも、どんな環境であれ動作する。

###2.オブジェクト指向で作られている
javaでプログラミングするにはこのオブジェクト指向という考え方が重要

_オブジェクト思考とは?_
モノ(オブジェクト)を同士を関係させ、組み立てていくプログラミングの考え方のこと
例えば机を作る時大きな木材を切り出して作るのは大変だが、天板、足4本と分けて作成すれば簡単に出

元記事を表示

[アルゴリズム]配列の中身を小さい順に並び替えるプログラム

“` Sort.java
アウトプット用!!

#3回目は、
配列の中身を小さい順に並び変えるプログラムを作っていく!!
今回はアルゴリズムの勉強も兼ねてあえてjava.utilパッケージにあるArrays.sort(arr)を使用しないでプログラミングをしてみました。

そこで配列の中身を小さい順に並べるにあたりバブルソート(基本交換法)でやってみました。

こちらがコードになります。

class Sort {
public static void main(String[] args) {
int Sort[] = {8,1,7,5};

int x;
int i = 0;

for(i = 0; i <= Sort.length-2; i++) { //外側のループ(最初の要素から最後の要素の一つ手前に向かって後ろに進む) int j = Sort.length-1; //最後の要素 for(j = Sort.length-1; j>=i+1

元記事を表示

Windowsでclassファイルをデコンパイル

# 経緯
既存のJAVAプログラムを読み解きたい。
そもそもJavaファイルをプログラムとして動かすためにコンパイルしてclassファイルにしているため、逆の手順を踏んで人間が読める形に変換し直す必要がある。

ソースコードからプログラムを生成:コンパイル
プログラムからソースコードを生成:**デコンパイル(逆コンパイル)**

# classファイルをデコンパイルする
以下の手順で行う。

* Amazon Correttoインストール、JAVAのパスを通す
* JADをインストールし、パスを通す
* コマンドプロンプトでデコンパイルを行う
* エラーが出たファイルを逆アセンブルする

## Amazon Corretto インストール、JAVAのパスを通す
Amazon Corretto は、マルチプラットフォームで本番環境に対応した、無料の Open Java Development Kit (OpenJDK) ディストリビューション。
Linux、Windows、macOS などの一般的なオペレーティングシステムで Javaを簡単に使用することができる。

参考:[Ama

元記事を表示

リフレクションでKotlinの要素を取得する【Javaリフレクション編】

Androidの単体テストにあたり、privateなクラスやメソッドにアクセスするために使用するリフレクションについてまとめました。

【注意点】
この記事では、筆者がリフレクションを一緒くたに認識していた背景から、KotlinでJavaリフレクションを使用しています。
しかし実際はKotlinにはKotlinリフレクションが存在するため、あえてKotlinでJavaリフレクションを使うのであれば、その理由を明確にできることが望ましいはずです。
次回は、Kotlinリフレクションをまとめます。

##リフレクションとは
リフレクション(reflection)とは、反射、内省、熟考という意味の英単語です。
JavaやKotlinでは、クラスやコンストラクタ、メソッドなどの情報の取得、必要に応じて書き替えるための仕組みを指します。
Java:[Trail: The Reflection API (The Java™ Tutorials)](https://docs.oracle.com/javase/tutorial/reflect/)

リフレクションを使うことで、通常はアクセスできな

元記事を表示

javaのプロジェクト管理を学ぶ:そもそもビルドって何?

#java プロジェクト管理を学ぶ:そもそもビルドって何?

### 【超初心者向け】Maven超入門
https://qiita.com/tarosa0001/items/e5667cfa857529900216

### そもそも、ビルドとは

– ビルドとは、**「ソースコードに問題(バグ)がないか解析を行い、問題がなければ実行できる形のファイルに変換し、組み立てること」**

– コンパイルとの違い:コンパイルはビルド作業の中に含まれる作業の1段階
– コンパイル: プログラミング言語から機械が分かりやすい機械語に翻訳を行うことを指す。

– **ビルドの仕組みと流れ**
– 1.各ソースコードの静的解析を行う。静的解析では、文法や構文の誤りを検出する(バグを見つける処理)
– 2.プリプロセッサで前処理を行う。定数の数値への置き換えやコメントの削除、マクロ(複数の操作をまとめて呼び出せるようにする機能)の展開
– 3.各ソースコードのコンパイルを行う。機械語に翻訳し、オブジェクトファイル(.o や.objなど)に変換する。
– 4.各オブジェクトファ

元記事を表示

for文の二重ループと2次元配列を組み合わせて九九の表を作る

“`java
アウトプット用!!

#第2回目は、
for文の二重ループと2次元配列を組み合わせて九九の表を作っていく!

①2次元配列を宣言していきます。
 int [][] kuku = new int[9][9];
 これで縦に9行、横に9列の九九の型が作られる。

②for文をネスト構造で繰り返す。
for(int i = 0; i < 9; i++) { //縦の行を表す。 for(int j = 0; j < 9; j++); //横の列を表す。 kuku[i][j] = (i + 1) * (j + 1); System.out.println(kuku[i][j]); } System.out.println(); } ③外側のfor文で縦の行を繰り返しています。  配列の添字は0からはじまるので、ここでは0段目から処理を繰り返す。 続いては内側のfor文に移って計算結果を各段ごとに記述する処理。ここでは8まで繰り返す。 例えばこんな感じです。 0段目の時は(外側のfor文) iが0で、jが0の時は1 iが0で、jが1の時は 2 i

元記事を表示

【Android&Firebase】Googleログイン実装のDeprecated箇所をリファクタリングしてみた

# はじめに

皆さん、ごきげんよう!れぶです!
2回目のQiitaへの投稿になります。新年早々どこにも外出せずに執筆していきます。

今回の記事は、Firebaseを用いてAndroidアプリへGoogleログイン機能を実装することに関した内容になります。具体的には、Firebaseの公式ドキュメントに掲載されているコードの中で、Deprecated箇所(startActivityForResultとonActivityResult)があるので、リファクタリングしていきます。Googleログイン機能のリファクタリング実装が書かれた記事はあまりないと感じたので、自身がJavaで書いたコードをもとに紹介します。

それでは、参りましょう!!

# この記事の対象者

* 今後Firebase Authenticationを用いて、AndroidアプリにGoogleログイン機能を実装したい方
* 既にGoogleログイン機能を実装済みだけど、Deprecated箇所のリファクタリングが知りたい方

# 開発環境

* Mac
* Android Studio(4.1.2)
* Fireba

元記事を表示

Javaを使用してPDFのテキストコンテンツを読み取る方法

##背景
今回の記事では、JavaアプリケーションでPDFファイルのテキストコンテンツを読み取る方法を紹介します。
JavaアプリケーションでPDFドキュメントを読み取るために、サードパーティのPDFコンポーネントを使用できます。この記事で使用されているコンポーネントは、JAVA用の無料のJava PDFコンポーネントであるFree Spire.PDF for JAVAです。

###JARファイルの取得とインポート:
公式ウェブサイトからjarファイルパッケージを**[ダウンロード](https://www.e-iceblue.com/Download/pdf-for-java-free.html)**します。ダウンロードした後、ファイルを解凍し、libフォルダー内のSpire.Pdf.jarファイルをJavaプログラムにインポートします。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/4d496b78-dd7d-27fd-6253-769ddf2dda31.png)

##P

元記事を表示

Javaの基礎を理解する【入門】

こんばんは。kitonです。
今回初投稿で少々誤字や日本語がおかしな部分があるかと思いますが、優しいご指摘お願いします。。
初投稿ですので少し自己紹介させてください。
私は北海道在住で、自社開発企業に属しており、主にJava言語を中心にアプリ開発してますが、最近フロント開発も個人的に興味があるので若干かじり始めてます。(Angularの勉強中。。)
自己紹介はここまでとして、今回のタイトルにもある通りJavaの基礎的な部分と、いくつかの特徴をご説明していきたいと思います。
本記事はJavaって言葉を聞いたことない…Javaって何だろ…と思っている方に参考文献から一部抜粋して記載してます。

# Java言語とは
Javaは1995年にSun MicroSystems社で開発されたプログラミング言語です。
プログラミング言語は世界中にたくさんの言語であふれておりますが、その中でもJava言語は有名で聞いたことあるなーって人が多いプログラミング言語かなと思います。
ちなみにJavaの由来は、JavaコーヒーからとってJavaと名付けて、製品マークもコーヒーカップが採用されたと聞いた

元記事を表示

配列から最大値を見つけて値を出力する。

アウトプット用!!
1回目は
配列から最大値を見つけて値を出力する方法。

①はじめにこのような配列を作ります。

“`java
int[] numbers = {36,23,19,199,382,2,5,18,30};
“`

②配列内の要素を比較するために最初の配列[0]をMax変数に代入します。

“`java
int Max = number[0];
“`

③最大値を検索します。
   そこでfor文を使用してMax変数(配列[0])と他の配列[1]から配列[8]を順番に比較します。
   ここで注意してほしい所はループを回す時に配列[1]からはじめるので初期化式には、int i = 1が入ります。

“`java
for(int i = 1; i < numbers.length; i++) { if(Max < numbers[i]) {  //Max変数と他の配列の比較 Max = numbers[i]; //もしnumbers[i]がMax変数より大きければ、numbers[i]がMax変数に代入 } } System.out

元記事を表示

OTHERカテゴリの最新記事