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

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

Javaのスコープ

# スコープとは
{ }で囲まれた部分をブロックと呼びます。
Javaでは、他言語と同様にブロック内で宣言した変数は、ブロックの外側では利用できません。

この時の変数が利用可能な範囲をスコープと呼びます。
スコープの外で変数を呼び出そうとすると該当の変数を見つけられずエラーが発生します。

元記事を表示

【Java初心者】Google Tinkを使ったMAC(メッセージ認証コード)

# Macとは

Googleのサイトによると
https://cloud.google.com/kms/docs/mac-signatures?hl=ja

“`
MAC 署名は、データの整合性と信頼性の検証に利用される暗号出力です。
“`
とあります。そして
“`
MAC 署名には主に 2 つの目的があります。
* 署名されたデータの整合性を検証します。
* メッセージの信頼性を確認する。
“`
と説明されています。

また、こちらのサイトでは

https://e-words.jp/w/%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E8%AA%8D%E8%A8%BC%E3%82%B3%E3%83%BC%E3%83%89.html

“`
メッセージ認証コード(MAC)とは、相手から届いたメッセージが途中で
改竄やすり替えに合っていないか検証するための短い符号。
送信者と受信者が共有する秘密のデータ(鍵)とメッセージ本体から生成する。
“`
となっています。

ただ今回のサンプルでは、PGPのように「はじめて見る相手のメッセ

元記事を表示

【Java】カプセル化についての理解を深める

オブジェクト指向の基本原則である「カプセル化」についての理解を”なんとなく”ではなく”しっかり”理解するためのシンプルな備忘録。ここではJavaを用いて説明する。

## カプセル化の基本理解
ざっくり言うと **「①関係性のあるデータをまとめて、②外部から隠すこと」** である。
これによって、ソフトウェアの更新の際にどこをいじればいいのかが明確になり、不用意な更新を防ぐことができる。

### ①関係性のあるデータをまとめる
関係するフィールドやメソッドをひとまとめにすることで、関係性のないデータをクラスから取り除くことができる。これにより、このクラスはこの役割を果たすんだな、とクラスの目的が明確になる。

では、”ひとまとめにする”とはどういうことなのか?
例えば、クラスAとクラスBがあったとする。クラスAのメソッドがBのフィールドにアクセスできる場合は、ひとまとめにされていないと言える。AのメソッドからBのフィールドにアクセスできるのであれば、AのメソッドはBにあるべきだからだ。

### ②外部から隠す(データ隠蔽)
値の書き換えを防ぐにはアクセス制限をかける必要がある。

元記事を表示

「スッキリわかるJava入門 第3版 スッキリわかるシリーズ」を読んだので内容をまとめる

Manipulating DataFrame Using SMILE

# Motivation

To understand how to’s for handling DataFrame in SMILE

# Environment

Jupyter Lab & IJava & temrin jdk 11 (have to use > 9)

# Usage of IJava and maven

First, should do load repositories and dependencies
For example,
“`
%mavenRepo scijava-public https://maven.scijava.org/content/repositories/public/
%maven net.imagej:ij:1.54h
%maven com.github.haifengl:smile-core:3.0.2
%maven com.github.haifengl:smile-plot:3.0.2
“`
(Here, ImageJ was loaded, but you do not need, just example…)

元記事を表示

Gradleを用いたJava開発記事まとめ

GradleとKotlinを利用したJavaアプリのソースコードの例をいくつか見つけました。以下のリンクを参考にしてみてください。
Gradle x JavaをKotlinに浮気させる #Java: GradleとKotlinでSpring Bootアプリケーションを作成する方法を紹介しています。
なんとなく使わないGradle: Gradleの基礎とモダンなプラクティスについて解説しています。
GradleとIntelliJで始めるKotlin (プロジェクト作成編) #Kotlin: GradleとIntelliJでKotlinプロジェクトを作成する手順を説明しています。
これらの記事は、GradleとKotlinの組み合わせに関する有益な情報を提供してくれると思います。もし、もっと具体的なソースコードを見たい場合は、GitHubでキーワードを検索してみてください。

GradleとKotlinを利用したJavaアプリのソースコードをGitHubから検索すると、以下のような結果が得られます。

– [gradle/gradle](^3^): Gradleは、JavaやKotlinな

元記事を表示

Javaの条件分岐

Javaも、他言語と同様にifによる条件分岐が可能です。
条件分岐を表現する時、Javaではboolean型というデータ型を用いた方法があります。

# boolean型
boolean型はtrueとfalseのみを扱う事が出来るデータ型です。
使用するビット数も2ビットと少なく、条件文の分岐フラグの管理で使用されます。

元記事を表示

DIコンテナを自作する

# DIとは?
– Dependency Injection – 依存性注入のこと
– クラス間の依存関係を外部から注入することで、開発者側でコンストラクタによるインスタンス生成が不要になる
– `new Hoge()`をせずともHogeクラスのインスタンスを利用できる
– Spring Bootだと以下3パターンがある
– コンストラクタインジェクション
– フィールドインジェクション
– セッターインジェクション
– ベストプラクティスはコンストラクタインジェクション

# DIコンテナとは?
– DIを実施するコンテナのこと
– プロジェクト内のクラス間の依存関係を全て把握し、よしなにDIしてくれて、かつその処理を開発者の見えないところでひっそりやってくれる
– 汚れ仕事を全て引き受けてくれる黒子みたいな存在

# 作ったもの
https://github.com/tttol/MicroDI

自分がDIコンテナのことを理解するために作ったものなので、**作業記録みたいなものと思ってもらえれば。**
実際のアプリ開発で利用できるクオリティには程遠い

元記事を表示

クラス、インスタンス、オブジェクト、コンストラクタ

![スクリーンショット 2024-02-10 10.23.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/4a5458c6-0f71-44d9-c2cc-6b8373dae215.png)

* クラス(設計図)を呼び出して、インスタンス化(オブジェクトを作る)する。
* インスタンス=オブジェクト

## クラスの定義方法
“`java
アクセス修飾子 class クラス名 {
クラスの中身
}
“`
アクセス修飾子 :
`public` `private`の2種類。

クラス名:
クラス名は**先頭を大文字**にするのが慣例。
(ちなみに、変数はキャメルケース。`static fainal`の定数は全て大文字)

例)商品を扱うクラスを定義する場合
“`java
//商品クラス
public class Product{
“`

## フィールド
変数と同じ。
1. 宣言
1. 代入
1. 参照

##### 1.宣言と2.代入
* クラスのフィールドでは多く

元記事を表示

Javaの数値型のあれこれ

# 始めに

Javaの数値型にはint型,float型,double型の他にもbyte型,short型,long型などのデータ型が存在します。

byte型,short型,long型はいずれも整数型です。

byte型,short型はint型よりビット数が少ないので小さな値を格納するのに適しています。
long型はint型に収まりきらない数値を表記出来ます。

# Javaの数値型

【Java】競技プログラミングにJavaを使っていいの?

# はじめに
競技プログラミング (競プロ) でよく使用されるプログラミング言語といえばC++やPython (pypy) などが挙げられるでしょう。そう、競プロでJavaを使用するのはどちらかといえばマイノリティーに分類されます。
とはいえ、この記事にたどり着いたという事は、何かしらの理由で競プロでJavaを使う事を検討しているのではないでしょうか。実は私も数年前、同じ立場にいて、そのうえでJavaで競プロを始める事を選んだ人間です。
そこで、この記事では、実際に競プロでJavaを使っていて感じた事を解説していきたいと思います。「競プロでJavaを使ってみても大丈夫かな」と不安になっている方に届きますように。

※競プロといっても色々なサイト・大会がありますが、ここでは筆者がメインで参加しているAtcoderに絞った話をします。

# 目次
・筆者について
・私がJavaを選んだ理由
・実際にJavaを使ってみてどうか
・結論

# 筆者について
・競プロ歴5年 (アクティブに参加し始めたのはここ2年くらい)
・競プロでの使用言語: Java
・Atcoderレート帯: 緑

以上

Eclipseでスクラッチブックを使ってみる

# 1. はじめに
* Eclipseで開発をする時に簡易な動作確認をしたい

# 2. 開発環境
* Eclipse All In One
* Java

# 3. スクラッチブックの新規作成
* Javaの実行/デバッグ > スクラッチブック・ページを選択する
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852081/f51bdc82-be8e-32e6-ec98-cbfa3f6d45c2.png)

# 4. スクラッチブックの使い方
## 4.1. 事前準備
* import文がある場合はコードではなく、右クリックから設定置く必要がある
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852081/52276a7c-ba3d-c0f9-835f-9a57e8c1631a.png)

* importするものを追加しておく
![3.png](https://qiita-image-store.s

Javaにおける乱数の生成

# 始めに
Javaでは乱数を生成する事が出来ます。
乱数を生成するには、Mathクラス、またはRandomクラスを用います。

# Math.random()を利用する方法
Math.random()は0.0以上1.0未満の実数を生成するメソッドです。
そのままだとdouble型。

Math.random()に様々な数値を加算、乗算する事で、乱数の範囲を調整する事が可能になります。

~~~ :0.0以上x未満の実数を生成
Math.random()*x
~~~

~~~ :y以上(y+1.0)未満の実数を生成
Math.random()+y
~~~

また、int型でキャストすると整数を生成出来ます。

~~~ :y以上(x+y)未満の整数を生成
(int)(Math.random()*x+y)
~~~

# java.util.Random()を利用する方法
java.util.Random()はjava.util.Random()nextInt()のように表記する事で乱数を生成します。

また、nextInt()に引数を設定する事が可能で、その場合は0以上、(引数-1)未満

Java初心者のためのPython×競技プログラミング入門Day7

# Java初心者のためのPython×競技プログラミング入門Day7
本記事は、Javaの基本を学び終えた方に向けて、Pythonを使って競技プログラミングを始めてもらおうという趣旨の記事です。1週間でAtCorderのB問題(現時点で最新のABC338)(誘導あり)を解けるようにする、ということを目標として書いていきます。
言い訳:まだ業務未経験であり、歴も長くないため、間違っているところや勘違いについてはご容赦下さい。
初投稿のため、至らぬ点はぜひご指摘いただきたいです。
前回:[Java初心者のためのPython×競技プログラミング入門Day6](https://qiita.com/maru3460/items/00b2796580b6fc1b0e6e)

### 前提条件
– Javaの基本がわかる
– googleのアカウントを持っている
– AtCorderのアカウントを持っている。持っていない方は[こちら](https://info.atcoder.jp/overview/contest/intro)を参考にしてください

Python実行用ファイル:[J

Java初心者のためのPython×競技プログラミング入門Day6

# Java初心者のためのPython×競技プログラミング入門Day6
本記事は、Javaの基本を学び終えた方に向けて、Pythonを使って競技プログラミングを始めてもらおうという趣旨の記事です。1週間でAtCorderのB問題(現時点で最新のABC338)(誘導あり)を解けるようにする、ということを目標として書いていきます。
言い訳:まだ業務未経験であり、歴も長くないため、間違っているところや勘違いについてはご容赦下さい。
初投稿のため、至らぬ点はぜひご指摘いただきたいです。
前回:[Java初心者のためのPython×競技プログラミング入門Day5](https://qiita.com/maru3460/items/8b5f58f44081111d90ce)
次回:[Java初心者のためのPython×競技プログラミング入門Day7](https://qiita.com/maru3460/items/b2af82d55d8330a353a0)

### 前提条件
– Javaの基本がわかる
– googleのアカウントを持っている
– AtCorderのアカウントを持

Java初心者のためのPython×競技プログラミング入門Day5

# Java初心者のためのPython×競技プログラミング入門Day5
本記事は、Javaの基本を学び終えた方に向けて、Pythonを使って競技プログラミングを始めてもらおうという趣旨の記事です。1週間でAtCorderのB問題(現時点で最新のABC338)(誘導あり)を解けるようにする、ということを目標として書いていきます。
言い訳:まだ業務未経験であり、歴も長くないため、間違っているところや勘違いについてはご容赦下さい。
初投稿のため、至らぬ点はぜひご指摘いただきたいです。
前回:[Java初心者のためのPython×競技プログラミング入門Day4](https://qiita.com/maru3460/items/36ee56dbf4d7b42e3d56)
次回:[Java初心者のためのPython×競技プログラミング入門Day6](https://qiita.com/maru3460/items/00b2796580b6fc1b0e6e)

### 前提条件
– Javaの基本がわかる
– googleのアカウントを持っている
– AtCorderのアカウントを持

Java初心者のためのPython×競技プログラミング入門Day4

# Java初心者のためのPython×競技プログラミング入門Day4
本記事は、Javaの基本を学び終えた方に向けて、Pythonを使って競技プログラミングを始めてもらおうという趣旨の記事です。1週間でAtCorderのB問題(現時点で最新のABC338)(誘導あり)を解けるようにする、ということを目標として書いていきます。
言い訳:まだ業務未経験であり、歴も長くないため、間違っているところや勘違いについてはご容赦下さい。
初投稿のため、至らぬ点はぜひご指摘いただきたいです。
前回:[Java初心者のためのPython×競技プログラミング入門Day3](https://qiita.com/maru3460/items/ae9cab608affad804cd7)
次回:[Java初心者のためのPython×競技プログラミング入門Day5](https://qiita.com/maru3460/items/8b5f58f44081111d90ce)

### 前提条件
– Javaの基本がわかる
– googleのアカウントを持っている
– AtCorderのアカウントを持

Java初心者のためのPython×競技プログラミング入門Day3

# Java初心者のためのPython×競技プログラミング入門Day3
本記事は、Javaの基本を学び終えた方に向けて、Pythonを使って競技プログラミングを始めてもらおうという趣旨の記事です。1週間でAtCorderのB問題(現時点で最新のABC338)(誘導あり)を解けるようにする、ということを目標として書いていきます。
言い訳:まだ業務未経験であり、歴も長くないため、間違っているところや勘違いについてはご容赦下さい。
初投稿のため、至らぬ点はぜひご指摘いただきたいです。
前回:[Java初心者のためのPython×競技プログラミング入門Day2](https://qiita.com/maru3460/items/848b28a92719b86c8044)
次回:[Java初心者のためのPython×競技プログラミング入門Day4](https://qiita.com/maru3460/items/36ee56dbf4d7b42e3d56)

### 前提条件
– Javaの基本がわかる
– googleのアカウントを持っている
– AtCorderのアカウントを持

Java初心者のためのPython×競技プログラミング入門Day2

# Java初心者のためのPython×競技プログラミング入門Day2
本記事は、Javaの基本を学び終えた方に向けて、Pythonを使って競技プログラミングを始めてもらおうという趣旨の記事です。1週間でAtCorderのB問題(現時点で最新のABC338)(誘導あり)を解けるようにする、ということを目標として書いていきます。
言い訳:まだ業務未経験であり、歴も長くないため、間違っているところや勘違いについてはご容赦下さい。
初投稿のため、至らぬ点はぜひご指摘いただきたいです。
前回:[Java初心者のためのPython×競技プログラミング入門Day1](https://qiita.com/maru3460/items/2b42d78890b6f001d789)
次回:[Java初心者のためのPython×競技プログラミング入門Day3](https://qiita.com/maru3460/items/ae9cab608affad804cd7)

### 前提条件
– Javaの基本がわかる
– googleのアカウントを持っている
– AtCorderのアカウントを持

Java初心者のためのPython×競技プログラミング入門Day1

# Java初心者のためのPython×競技プログラミング入門Day1
本記事は、Javaの基本を学び終えた方に向けて、Pythonを使って競技プログラミングを始めてもらおうという趣旨の記事です。1週間でAtCorderのB問題(現時点で最新のABC338)(誘導あり)を解けるようにする、ということを目標として書いていきます。
言い訳:まだ業務未経験であり、歴も長くないため、間違っているところや勘違いについてはご容赦下さい。
初投稿のため、至らぬ点はぜひご指摘いただきたいです。
次回:[Java初心者のためのPython×競技プログラミング入門Day2](https://qiita.com/maru3460/items/848b28a92719b86c8044)

### 前提条件
– Javaの基本がわかる
– googleのアカウントを持っている
– AtCorderのアカウントを持っている。持っていない方は[こちら](https://info.atcoder.jp/overview/contest/intro)を参考にしてください

Python実行用ファイル:[J

Javaの数値型
データ型 ビット数
byte 8ビット
short 16ビット
int 32ビット
long 64ビット