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

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

安易な継承の落とし穴

継承を行った子クラスは、継承元の親クラスの一種として扱われます。
その為、一部のフィールドやメソッドのみを流用する目的で継承すると、継承されている機能の一部が、誤った用途で使用できてしまう場合があります。
このような事態を避ける為には親クラスと子クラスの関係性に注意する必要があります。

親クラスと子クラスに包含関係がある場合は良いですが、部分的にしか内容の
一致が無い場合は注意が必要です。

元記事を表示

Hello Worldからの復習 〜配列〜

昔、バスケの練習で何パターンかオフェンスの練習していて、何故この動きが必要かあまり理解せずやっていたら試合で防がれ、何故防がれたかしっかり理解できず、攻め倦んで監督から怒りの〇〇を喰らった記憶がある。

実務のテストでは、配列を良く使いました。
例の如く何となくでやっていました。
問題なく動いていましたが、理解は浅く、何がどうとかいう説明は、、、

できません。。。

結構惨めな思いをしたのも前進する為の糧。

**お品書き**
+ 配列って?
+ 配列の生成
+ 配列の初期化
+ 多次元配列
—-

##### 配列って?

同じデータ型の変数を複数まとめて管理するもの
配列の生成には**new**を使う。生成時にデフォルト初期値が設定される。
`(0、’ ‘(空文字)、false)`

**データ型[] 配列名 = new データ型[要素数];**

例えば点数を3つまとめて管理するなら
`int[] score = new int[3] ;`

配列は参照型のため、変数には参照値が入る。

※作った変数scoreのイメージ図
| score |
|:-:|
| (  ) |

元記事を表示

Hello Worldからの復習 〜データ型〜

何とな〜く覚えただけで終わらせてしまうと毎回ググれカス止まりで、毎回調べて時間をロスしてしまう気がしています。

大体、毎回、いつも同じメンバーと再会。状態。

しっかり理解し、自然と使えて応用が出来て、何故この記述でこの処理なのかを分かりやすく説明できて初めて理解した状態になるんだと思う。
まだまだです。。
毎回話しの枕が長いが、今回は**データ型**の復習。

##### お品書き
+ データ型って?
+ 基本データ型Sample
+ 参照型
+ 参照型Sample

—-

**データ型って?**

##### データ型の種類
##### ◆基本データ型
データ型は約3000種類あると言われていますが、その中で8種類が基本データ型。
なんなら**8種類しかない。**

##### ①整数型
| 型名 | サイズ | 表現可能な桁数 |
|:-:|:-:|:-:|
|**byte**|**8ビット**| -128~127 |
|**shoat**|**16ビット**| -32.768~32.767 |
|**int**|**32ビット**| -2147483648~21

元記事を表示

javaで作る電卓(サンプルコードあり)(中級者向け)

# 前置き
今回作る電卓は前回作った初心者向けのアップグレード版みたいなものです。
初心者向けの方を作りたい方は以下のリンクから飛んでください。
https://qiita.com/Puroguramingu_Bennkyoutyuu/items/5a6f93a53ba7fffb110f
# サンプルコード
“`java:電卓.java
//インポート
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import java.util.Stack;

public class AdvancedCalculator extends Application {
pr

元記事を表示

ABC341A~Fの解答[Java]

## はじめに
今回はコンテスト中にEまで、コンテスト後にFを解いたのでそれを載せようと思います。

なお、僕のライブラリは[提出結果](https://atcoder.jp/contests/abc341/submissions?f.Task=&f.LanguageName=Java&f.Status=AC&f.User=viral)よりご確認下さい。
では、見ていきましょう。

## A – Print 341
問題文は[こちら](https://atcoder.jp/contests/abc341/tasks/abc341_a)

制約から`101010…0101`みたいな感じになると予想できて、最初の`1`を除けば`01`を$N$回繰り返せば良いので、そのように実装しました。
“`A.java
final class Main{
private static final boolean autoFlush = false;
private static final SimpleScanner sc = new SimpleScanner(System.in);
pr

元記事を表示

[Google Sheets API] 行、列を挿入・追加・削除・移動する

Google Sheets API v4(Java)を使用して、
スプレットシートの行または列を挿入、追加、削除、移動する方法
についてご紹介します。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`
|No|目次|
|—|—|
|1|[行、列の挿入](#1-行列の挿入)|
|2|[行、列の追加](#2-行列の追加)|
|3|[行、列の削除](#3-行列の削除)|
|4|[行、列の移動](#4-行列の移動)|

## 1. 行、列の挿入
指定したシートに位置を指定して行または列を挿入します。

**サンプル コード**
“`
public Request insertDimension(String fileId, Integer s

元記事を表示

CAP JavaでリモートのREST APIを利用する

## はじめに
CAP JavaでリモートのREST APIを利用したい場合、CAP JavaはRESTプロトコルをサポートしていないので、SAP Cloud SDKを使うことが選択肢となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276021/43b51b16-255b-c69f-7b9d-6e779e00596c.png)
https://cap.cloud.sap/docs/guides/using-services#supported-protocols

SAP Coud SDKには[OpenAPI Client](https://sap.github.io/cloud-sdk/docs/java/features/rest/generate-rest-client)という、APIにアクセスするためのクラスを生成してくれるツールが用意されています。生成されたクラスを使用することで、APIのエンドポイントや受け渡すデータ構造をあまり意識せずにコードを書くことができま

元記事を表示

[android]アプリ起動時にスプラッシュ画面を挟む

LINEなどのアプリを起動した際に、初めに数秒表示されるスプラッシュ画面。
今回はそちらを実装してみたいと思います。
スプラッシュ画面を導入するメリットは以下になります。

– ユーザーエクスペリエンスの向上
– アプリ読み込み待ちの不安感軽減

2つ目のメリットが結構大きいと思います。

## 前提条件
開発環境:Android Studio Dolphin | 2021.3.1 Patch 1
言語:Java
テンプレート:任意(本記事ではEmpty Activityを使用)

## 実装

スプラッシュ画面の導入方法はいくつかありますが、
今回はスプラッシュ画面用のActivityを作成する方法で実装していきます。

### スプラッシュ画面で使用するアイコン作成

File > New > Vector Asset から作成できます。
デフォルトでresフォルダのdrawableに格納されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3520337/ef463fda-

元記事を表示

Minecraft Forge 1.18.2 Part0 EpitapのMOD開発忘備録について

こんにちは!DegeneracyCraft開発者のEpitapです!
マインクラフトのMOD…
・いざ作ろうとしても、そもそもどこを調べたらいいのかわからない。
・YouTubeでもmodding(MOD製作の意)解説はあるが、大体英語なのでよくわからない。
・やりたいことを思いついてもその実現方法についてよくわからない。
↑その結果折れてしまう…

正直めちゃくちゃ大変だと思います。
なので、ここでは私Epitap(初心者)が
**超絶ゴリ押し(コードが端麗ではなく煩雑という意味)**
ながらもなんとか実装に漕ぎつけたものを一度振り返ってみようというものです。
また、MOD開発を志す人にほんの少し助力にでもなれれば幸いであるというものです。

ここに書き連ねることについての注意点は
・McJty氏、Kaupenjoe氏、henkelmax氏、桜鬼神氏、柊ラッセルつばさ氏らのコード・解説を参考にして、**ゴリ押しで**実装しているものがほとんどであること
・参考にしてもらっても構いませんが、以下の開発環境で開発しているということが前提である

:::note info
開発環境 Int

元記事を表示

MyBatis/iBatisのsqlmapファイルを解析してタグ情報&パラメータを取得する

## 1. はじめに
かなり久しぶりのQiita投稿になります。とあるシステム開発プロジェクトのFW刷新においてDBアクセスに[iBatis](https://qiita.com/tags/ibatis)を利用していたものを[MyBatis](https://qiita.com/tags/mybatis)に変更する作業を行いました。設定ファイル(sqlmapファイル→mapperファイル)の変換処理は[ibatis2mybatis](https://github.com/mybatis/ibatis2mybatis)を利用して何とか終わりましたが、動的SQLの評価箇所を集中的に試験・確認したい状況になりました。そこで動的SQLの情報やパラメータ情報を取得したい必要性が発生して今回の記事となります。

## 2. 概要
MyBatisのmapperファイルやiBatisのSqlMapファイルを読み込み、XMLのタグ情報、属性情報、テキストノードの情報を取得、タグの入れ子構造を考慮して解析結果をJSON形式で標準出力に出力するツールです。ポイントはテキストノード内のパラメータ(`#{xxx

元記事を表示

javaで直角三角形を表示するプログラムを作る2

# 問題
int型の変数nを作成し、一辺がn個の右下直角の三角形を表示するプログラムを作成せよ
例) nが4の場合
## 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3717834/f071e39c-16b3-2e9d-a4e1-12e9e0f03284.png)

## 解答
“`java
public static void main(String[] args) {

int n = 4;
for (int i = 1; i <= n; i++) { dispCircle(i, n); System.out.println(); } } static void dispCircle(int i, int n) { for (int j = n; j >= 1; j–) {
if (i < j) { System.out.print(" "); } else { System.out.print("●")

元記事を表示

改めて…Javaとは【何ができる?】【メリットは?】

## :ledger:Javaでできること

JavaはOSに依存しません。
そのためどんな環境でもソフトを動かせる汎用的な言語です。

例として…

・Webサービス開発
・Webアプリ開発
・PC向けアプリ開発
・Androidアプリ開発
・基幹システム開発
・組み込みシステム開発
・ソフトウェア開発
・IoT開発

幅広い場面で使われていて世界的に見ても需要の高い言語だと思います。

## :ledger:Javaでできないこと

・IOSアプリ開発
・機械学習 
(※できないというよりもPythonなどの特化した言語があるので選ばれないイメージ)

などです。

## :ledger:Javaのメリット

1:プラットフォームへ依存しない
OSに関わらず動かせます。

2:オブジェクト指向
開発効率が良く、カプセル化などを用いてセキュリティー面のコントロールができる。

3:情報が多い
世界規模で需要が高く使っているのエンジニアが多い。そのため情報が多く勉強しやすい。

## :ledger:Javaのデメリット

1:学習難易

Hello Worldからの復習 ~変数編~

スポ少からず~っとバスケをやってきた事を思い出すと、ずっとドリブルの練習したなぁ。
エンジニアになってからも基礎をしっかりしないと変なところでミスったりするので、無骨に愚直に理解をしよう。

**お品書き**
+ 変数って?
+ 使い方
+ コンパイル
+ おまけ
—-

**変数って?**

##### データの入れ物。
例えば「a」という変数を作ったら「a」という入れ物がメモリ上にできる。
その中にデータを入れて計算したり、様々な処理に使ったりできる。

##### 変数名のルール
→1文字目
 英字(a~z、A~Z)、_、$

##### 2文字目以降は数字も使用可

##### キーワードは使用不可
(public、static、void等の単体で意味を成してしまうもの)

**使い方**

今回はクラス名をSecondとします。(2回目だから)

##### 宣言
変数を作ること。
例)`int month ;`
この宣言で`month`という**変数**がメモリ上にできます。

“`java:java
class Second{
public s

Java ~四則演算~

## :ledger:四則演算 
`加算`・`減算`・`乗算`・`除算`の`四則計算`と+αについて説明していきます。
計算をするためには `算術演算子` を使う必要があります。

| 算術演算子 | 意味 |
|:-:|:-:|
| + | 加算(足し算)
| - | 減算(引き算) |
| * | 乗算(掛け算) |
| / |除算( 割り算)|
| % | 剰余算(余り) |
| ++ | 1増加 |
| — | 1減少 |

~~~ java: サンプル
int num1 = 100;
int num2 = 10;

// int型変数resultを宣言し、num1とnum2の加算結果を代入
int result = num1 + num2;

//結果
result1 = 110;
~~~

## :ledger:文字列の連結
数字の足し算だけではなく文字列も連結させることができます。

実際のコードサンプルを見てください。

Hello Worldから始める復習 ~Hello World編~

エンジニアになり約一年が過ぎようとしていて、話題の世界一のエンジニア思考という書籍を読んで思ったことが、「ちゃんと理解してねーなぁ。。」と。
今一度、基礎をきちんと理解するためにアウトプットをしよう。

**Hello World**

“`java:java
class First1{
public static void main (String[] ages) {
System.out.println(“Hello World”);
}
}
“`
まずは基本的なコーディングから。
キーワードを「class」、半角開けて「クラス名」。
今回は「First1」とする。

ファイル作成時、ファイル名とクラス名は合わせるのがお作法。

“`java:java
class First1{→
中括弧のここをブロックという

←}
“`
ブロック内に処理文を記述する

“`java:java
class First1{
public static void main (String[] ages) {ここから→
処理文を記述
←ここまで}
}

java これだけは知っておきたいJava install.

### 最初に悪気は、無いと言っておこう。
javaをインストールしても、動かんとか、思った動きをしてくれな、と言う方におススメの記事としたい。
後からSDKを入れているはずなのに入ってなとか、SDK入れたら本体が消えたとか。
最初、俺も分からんかったのや、だから、恥じる事はない。
### 見つけたきっかけ
![スクリーンショット 2024-02-26 104300.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625232/a830ed05-f891-60a1-ecad-9325c8e662c6.png)

トムキャットがエラーで動かんかったのや。これは、installされていなかった場合も、起きてた。つまり、有効ではない、問う事に思いあたった。
そこで、installされている、javaのプロパティを見てみると
C:\Program Filesにいるんだから当然、厳重な制限を受けてるよな。
### そこで、プロパティをいじる事に
![スクリーンショット 2024-02-26 113336.png]

StripeのPython SDKとJava SDKに`StripeClient`クラスが追加されました

Python SDKバージョン8.0.0とJava SDKバージョン23.0.0から、`StripeClient`クラスが追加されました。
これにより、複数のAPIキーや設定を利用するシステムの構築や、ユニットテスト時のモック化などが行いやすくなります。

## これまでの利用方法

これまでのPython・Java SDKでは、グローバルな`stripe`モジュールを利用する形でした。

**Python**
“`python
import stripe

stripe.api_key = “sk_….”;

cus = stripe.Customer.create(name=”Jenny Rosen”);
“`

**Java**
“`java
Stripe.apiKey = “sk_…”;

AccountCreateParams params = …;
Account account = Account.create(params);
“`

この方式では、APIキーなどの設定がグローバルモジュールに設定されるため、複数のAPIキーを利用する大規模なアプリ

多重継承

# 多重継承
複数のクラスを親として子クラスを定義する事を多重継承と呼びます。
しかし、Javaではクラスの多重継承は出来ません。

原因としては、複数のスーパークラスがインスタンス化をする際に、同じフィールドがあると不都合が生じるようです。

ただし、フィールドを持たないインターフェイス(interface)を用いる事で多重継承を実装出来ます。

# 参考文献
https://docs.oracle.com/javase/tutorial/java/IandI/multipleinheritance.html

RestClientのDELETEリクエストでリクエストボディを使用する方法

# 概要
Spring FrameworkでREST APIの呼び出しでDELETEメソッドにリクエストボディを使用する方法です。

# Rest Clientのサンプル
[Rest Clientの公式ページ](https://spring.pleiades.io/spring-framework/reference/integration/rest-clients.html#_migrating_from_resttemplate_to_restclient)には以下のような3種類のサンプルがあります。
(RestTemplate から RestClient への移行)

“`java
restClient
.delete()
.uri(String, Object…​)
.retrieve()
.toBodilessEntity()
“`

“`java
restClient
.delete()
.uri(String, Map)
.retrieve()
.toBodilessEntity()
“`

“`

[Google Sheets API] テキストを検索&置換する

Google Sheets API v4(Java)を使用して、
スプレットシート内のテキストを検索し、そのテキストを置換する方法
についてご紹介します。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`

|No|目次|
|—|—|
|1|[検索&置換対象が全てのシート、またはシート指定](#1-検索置換対象が全てのシートまたはシート指定)|
|2|[検索&置換対象が指定したシートの指定した範囲のみ](#2-検索置換対象が指定したシートの指定した範囲のみ)|

## 1. 検索&置換対象が全てのシート、またはシート指定
検索&置換の対象を全てのシートか、指定したシートのみにします。

検索オプションとして以下の指定が使えます。
  ・