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

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

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の文字列表記方法

# 始めに
Javaには他言語と同様に文字列を表記するための型が存在します。
それがString型です。

# String型
数値型と文字型のように、型が異なるものを表記する際の特徴があります。
それが””と+を用いた文字列の連結です。

例えば 私の戦闘力は53万です。 とString型で表記したい場合、
~~~
“私の戦闘力は” + 53 + “万です。”;
~~~
と表記されます。

localhot xampp セッティング例「備忘録」

一度整理して、再構築したので構築の見本と備忘録のため例として載せることにしました。
それぞれの環境のパスに合わせ参考程度でお願いします。
“`text
xampp-control.exe action to stato

it my address
C:\xampp\htdocs
http://localhost/ to PHP: index.php http://127.0.0.1/index.php

Apache 2.2 work Area action?
file:///C:/Program%20Files%20%40×86%41/Apache%20Software%20Foundation/Apache2.2/htdocs/my_work_index.memo
PHP
php_5_4_6_Win32_VC9_x86 Chec Apach conf httpd.conf No Sete UP.
php_8_2_12_vs16_64 local no setup
Sete up: Apache
AddHandler cgi-script .cgi .pl .r

Spring transactionメモ

~~~Java
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;

import java.io.IOException;

@Service
public class CsvImportSer

Java経験者がKotlinで実装したアプリをGoogle Playでリリースするまでに得た気づき

# 概要
日頃、Javaに触れている筆者が、KotlinでAndroidアプリを作成し、Google Playに公開した一連の中で得た気づきを共有できたらと考えています…

# 前提・背景
Java:ある程度読み書きできます…Androidアプリは過去に個人レベルでJavaにて実装経験がありました。
Kotlin:興味をよせていましたが、KotlinでのAndroidアプリ実装経験はありませんでした。

# デバッグに使うAndroid仮想マシンのアイコンランチャに、開発中アプリのアイコンが2つ存在する…
開発中、デバッグ環境としてAndroid Studioに標準搭載のAndroid仮想マシンを使っていました。デバッグや実行をすると、当該アプリがインストールされランチャーに開発アプリのアイコンが追加されます。ところが、まったく同じアイコン・名前のアプリがランチャーに2つ表示されていました…

## 原因・解決
AndroidManifest.xmlにて、以下の2つの記述が、複数のActivityの各``内に

ラムダ式の中では「実質的にfinalでない変数」は使えないらしい

# はじめに
業務でJavaのStream APIを書いたときにエラーが出たので調べたことをメモします。

# 問題
日付と値を持つオブジェクトのリストと、対象期間が与えられ対象期間内でリストにない日付のデータを補完する処理を書きました。

“`java
List dateAndValList = List.of(); // 実際には検証したいオブジェクトのリスト
LocalDate startDate = LocalDate.parse(“2024-01-01”);
LocalDate endDate = LocalDate.parse(“2024-02-01”);

while(!startDate.isAfter(endDate)) {
if (dateList.stream().filter(date -> date.isEqual(startDate)).count() < 1) { // 補完する処理 } startDate.plusDays(1); } ``` StreamAPIを利用している行で以下のエラ

GmailEメール送信機能の実装

:::note info
個人的に作っているウェブサイトからメールを送信する機能を作るようになって記録します。
:::

1. build.gradle 作成
“`gradle
dependencies {
implementation ‘org.springframework.boot:spring-boot-starter-mail’
}
“`

2. 以下のURLからアプリパスワードを作成
https://accounts.google.com/v3/signin/challenge/pwd?continue=https://myaccount.google.com/apppasswords&service=accountsettings
![스크린샷 2024-02-07 17.59.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3567846/c51cecfd-f1ba-3161-dbf1-4e5ddf7fe10e.png

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