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

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

【初心者向け】Java ソースコードの解説①

# :writing_hand_tone1:はじめに
2023年12月18日からJava言語を学び始めた初心者です。
これまでにプログラミングに触れた機会は小学生のころにホームページをHTML,cssで
作成したことくらいです。
商業高校だったので情報処理などの授業は受けていましたが、全商2級程度です。
情報系の専門学校、大学ではありません。

# :page_with_curl:Java ソースコードの解説
サンプルコード
~~~
public class Test {
public static void main(String[] args) {
System.out.println(“はじめてのJava”);
}
}
~~~~
### :ledger:クラスとは

プログラムの1単位を `クラス` という。
サンプルコードでは` class Test { … } ` と記載しているためここでは
` Testというクラス `を作成している。

Javaのプログラムを作成する際は
` public class クラス名 { … }` と記述す

元記事を表示

GWTにおけるフロント側の処理はどうなのか?

# 割と知らないGWTのフロント側処理
・JavaからjavaScriptに変換されます。
・サイズを縮小します=ダウンロード時間の短縮
・難読化→セキュリティー向上

元記事を表示

[Google Sheets API] セルをコピペ(コピー&ペースト)、カピぺ(カット&ペースト)する

Google Sheets API v4(Java)を使用して、
スプレットシートのセルをcopy and pasteまたはcut and pasteする方法
についてご紹介します。

コードを実行する際は、
[⧉[Google Sheets API] Google Sheets API v4をJavaで操作する](https://qiita.com/doran/items/3d43f776188b2281044c)
を参照ください。
“`
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
“`
|No|目次|
|—|—|
|1|[セルのコピペ(copy and paste)](#1-セルのコピペcopy-and-paste)|
|2|[セルのカピぺ(cut and paste)](#2-セルのカピぺcut-and-paste)|

## 1. セルのコピペ(copy and paste)
指定したセルの範囲をコピー&ペーストします。
コピーするシート、ペーストするシートは異なるシートでも可能です。

元記事を表示

Paper プラグインでカスタムヘッドを描画する[Minecraft]

# 環境
– Paper API : `1.20-R1-SNAPSHOT`
– JDK : `JDK 17`

:::note warn
Paper API は基本的に Spigot API と互換性がありますが、一部機能については独自の実装がされています。
そのため、本記事に掲載しているコードをそのまま使用しても動作しない恐れがあります。その場合は Spigot の公式 JavaDoc をご確認の上ご利用ください。
:::
# カスタムヘッド(Custom Head)とは?
プレイヤーの頭やゲーム内に存在するモブ以外の絵柄の頭のこと。
[Minecraft-Heads](https://minecraft-heads.com) などに多数掲載されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2403016/457da152-6360-68cc-61da-d0527e54d7d2.png)

# 頭を描画するには
(実在する)プレイヤーの頭を描画するには以下のコードだけで済み

元記事を表示

throw / throws 

“Throw”の和訳は「投げる」
javaにおいて、
1. `throw`は、意図的に例外を発生させたい場合などに使う
1. `throws`は、メソッドの呼び出した側に例外処理を投げる

参考にしたサイト:
[【Java初心者向け】throwとthrowsの違いとその使い方](https://eng-entrance.com/java-throw-and-throws)

# throw
コード上、入力された値に問題はないが、意図して例外処理を発生させたい場面に使う。
以下は、整数の値である`19`を渡しているので問題はないけれど、if文で20未満の値が入力された場合は例外処理を発生させている。
この際の例外クラスは、「メソッドの引数に不正な引数が渡された場合」に例外を発生させる`IllegalArgumentException`を使用する。
“`Java:Throw 実装例
public class Exception_Test5 {

public static void main(String[] args) {
// 年齢を表す変数age
int age = 19

元記事を表示

コンストラクタ

コンストラクタを用いるとクラス側で初期化を行う事が出来ます。

コンストラクタはプログラムで直接呼び出す事は出来ません。
クラスがnewで作成された後、コンストラクタも自動的に実行されます。

クラスメイト全く同じ名前でメソッドを作成すると、コンストラクタとして扱われます。
ただし、コンストラクタではvoidを含めた戻り値の型を使用する事は出来ません。

元記事を表示

例外処理 try-with-resource文 / try-catch-finally文 / InputMismatchExceptionクラス

# 例外処理とは
例外処理はプログラムを実行中に異常な事態が起きた時に、対処する場合に使う

##### 障害の種類は3種類
##### 1. エラー
javaの動作環境の問題など、プログラムでは対処できない致命的な状況を表す
##### 2. 検査例外
例外処理が実装されたことをコンパイラがチェックする例外なので、実装する必要がある
##### 3. 非検査例外
例外処理が実装されたことをコンパイラがチェックしない例外なので、実装するかは任意

**Exceptionクラス**
例外を処理するクラスの継承元となるクラス

Exceptionクラスの継承先は、
* 非検査例外であるRuntimeExceptionクラスと、
* 検査例外であるクラスの2つに分かれる 

[参考URL](https://zenn.dev/kojikaya/articles/ad6903f3f6bbc8)
>非検査例外とは
非検査例外は RuntimeExceptionクラス配下の例外クラスが対象になります。
非検査例外は try-catchが必要ないため、「非」検査例外と言われます。
非検査例外

元記事を表示

[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|目次|
|—|—|
|0|[シートの情報](#0-シートの情報)|
|1|[シートを追加](#1-シートを追加)|
|2|[シートの更新](#2-シートの更新)|
|3|[シートの複製](#3-シートの複製)|
|4|[シートの削除](#4-シートの削除)|

## 0. シートの情報
シートの情報は***SheetPropertiesクラス***で設定します。
|項目名|メソッド|内容|
|—|—|—|
|シートID|s

元記事を表示

Java の文字化け対策 on Powershell

Java の文字化けって厄介ですよね。いろいろな要因が影響し、ひどいときには二重・三重に文字化けして見たこともないような化け方をします。しかもオブジェクトによってデフォルトの文字コードの決定方法が違ったりして、標準出力に複数の文字コードが混在したりします。

さらに困ったことに、PowerShell 上で動かしたりコンパイルしようとすると、問題は更に複雑になります。

この記事では文字化けの直し方は勿論、原因箇所の特定方法を含めて細かく解説させていただきます。

尚、この記事では基本的にすべてのエンコードを UTF-8 (BOM無し) に揃える前提で進めます。

# 実行環境
当記事執筆時に利用した Java の実行環境は以下です。
> openjdk 11.0.2 2019-01-15
> OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
> OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

※ PowerShell は Windows PowerShell 5.1

元記事を表示

CAP JavaでリモートのODataサービスを利用する

## はじめに
CAP JavaでリモートのODataサービスを利用したい場合、2つの方法が考えられます。一つはCAPの[Querying API](https://cap.cloud.sap/docs/java/query-execution)を使用して、SQLライクな書き方でクエリを実行する方法、もう一つはSAP Cloud SDKの[OData Client](https://sap.github.io/cloud-sdk/docs/java/features/odata/vdm-generator)を使う方法です。
この記事では、Querying APIを使ってリモートサービスに接続し、データを読み込んだり更新する方法について紹介します。接続先はBTPにDestinationとして登録されていることを前提とします。

CAPireの[ドキュメント](https://cap.cloud.sap/docs/guides/using-services)に説明がありますが、ドキュメントでは省略されているステップもあって**かなり**苦労したので、記事に残しておきます。ソースコードは以下

元記事を表示

Java学習1

## 変数
+ データ型と変数名で変数宣言して変数を作る
“`java
int length; //整数 lengthを宣言
length = 3; //length に3を代入
“`
+ 型推論で変数を作る
“`java
var length = 3; //lengthに3を代入して型推論
// 代入された値からデータ型が決まるので、宣言不要
“`
## 演算子
特に変わった使い方はしてない

元記事を表示

【Java初心者】Google Tinkを使った電子署名

# 電子署名とは

Wikipediaには
“`
電子署名とは、電磁的記録に付与する、電子的な徴証であり、
紙文書における印章やサインに相当する役割をはたすものである。
主に本人確認や、改竄検出符号と組み合わせて偽造・改竄の防止のために用いられる。
電子署名を実現する仕組みとしては、公開鍵暗号方式に基づくデジタル署名が有力である。
“`
とあります。

自分の秘密鍵でファイルに署名し、それを予め配布しておいた公開鍵で検証することで、送信者が「正しい人」であることがわかります。

# Javaで書いてみました

Tinkは、バージョンアップのたびに、APIが変わり、以前書いたコードが非推奨となることが多いため、その都度ドキュメントを見ながら修正しています。

以下に示すコードはtink-1.12.0.jarを用いています。依存ライブラリーとして protobuf-java と gson が必要です。

“`java
package sample2024;

import com.google.crypto.tink.CleartextKeysetHandle;
import co

元記事を表示

メソッド

# メソッドとは
public static voidを使用するとメソッドが作成されます。
メソッドでは引数を渡すことも可能です。

~~~:メソッドの作成方法
public satic void メソッド名(引数){
メソッドで行う処理内容
}
~~~

~~~:メソッドの呼び出し方法
メソッド名(引数)
~~~

# メソッドの利点
メソッドは複数の処理をまとめ、一つの処理として扱う事が出来ます。
これにより、複雑な処理を行う際もプログラムが見やすくなり便利です。

元記事を表示

java basic

### ラベルを用いて多重ループを自由に移動 or 抜ける
“`
labalName: for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++) { if (何らかの条件) { break labalName; // このbreak文で外側のループまで一気に抜ける } } } ``` この時continue文を用いてラベルを指定すると指定したラベルの初めにジャンプして次の繰り返しを行う。 ---

元記事を表示

Entityがnullかどうかを知る

## 背景
javaの資材を修正した際に、作成されたentityListがnullかどうかで条件分岐した箇所があった。そこで自分は、CollectionとEntityをごっちゃにして考え、null判定をするためにメソッドを理解するのに時間を要した。そこで、メモとしてここに書き留めておく

## EntityがNullかどうか判定する
“isNull”, “nonNull”,”==null”, “!=null”の4つ。
直観的にわかりやすいのは”isNull”, “nonNull”かと思う

## Listの中身がnullかどうか
“isEmpty()”,”list.size()==0″

元記事を表示

手続き型から関数型への書き換え 言語別ガイド

# はじめに

この記事では、手続き型プログラミングと関数型プログラミングの違いを明らかにし、複数の言語を通じて、同じ問題を解決するための両アプローチを示します。

# 手続き型と関数型の基本的な違い

手続き型プログラミングと関数型プログラミングは、コードの書き方とプログラムの設計において根本的に異なるアプローチを取ります。これら二つのスタイルの基本的な違いを理解することは、プログラミングの柔軟性を高め、より効果的なコードを書く上で重要です。

## 手続き型プログラミング

手続き型プログラミングは、命令の列としてプログラムを考えます。このアプローチでは、データ構造を操作するために一連の手続き(関数やサブルーチン)を作成し、プログラムの状態を変更するためにこれらの手続きを実行します。手続き型プログラミングの特徴は、プログラムがどのように実行されるか(アルゴリズムと手順)に焦点を当てている点にあります。C 言語や Java(オブジェクト指向の側面を除く)などが、このパラダイムの典型的な例です。

## 関数型プログラミング

関数型プログラミングは、計算を数学的関数の評価として扱い、

元記事を表示

GWT は日本語の文字も、サーバクライアント通信も簡単

# GWTは、いちいち日本語を通信する際の文字処理もそのままでできますよ
![GIF 2024-02-18 4-50-09.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132663/b9c916eb-7884-e41e-5668-ca51193ab08b.gif)

元記事を表示

【Java初心者】Google Tinkを使ったハイブリッド暗号

# ハイブリッド暗号とは
Wikipediaによると
“`
公開鍵暗号方式と共通鍵暗号方式を組み合わせた暗号方式である。
公開鍵暗号方式と共通鍵暗号方式の欠点を補い合い、
2つの暗号方式のそれぞれ利点を同時に利用することができる。
“`
とあります。

具体的な方法については
“`
1. Aは共通鍵を生成する
2. Aは共通鍵を公開鍵暗号方式で暗号化してBに送信する
3. AとBは安全に共有された共通鍵を用いて共通鍵暗号方式で通信を暗号化する
“`
となっている。

これならば、公開鍵暗号でもいいのではないかと思うが 上記wikipediaでは
“`
公開鍵暗号方式には、共通鍵暗号方式と比較して処理速度が非常に低速という欠点と、
事前の鍵共有が不要という利点がある。
そのため、公開鍵暗号方式のみで通信を暗号化するのは非効率的である
(中略)
ハイブリッド暗号方式には、公開鍵暗号方式と比較して処理速度が非常に高速という利点と、
事前の鍵共有が不要という利点がある。
つまり、ハイブリッド暗号方式は公開鍵暗号方式と共通鍵暗号方式の利点を
どちらも同時に利用できる、優れたそして大きな

元記事を表示

[Java] 2つの合計 (アルゴリズム)

## 課題

### 問題:

> 与えられた整数の配列**`nums`**と整数**`target`**に対して、その和が**`target`**になるような2つの数のインデックスを返します。各入力には**正確に1つの解**が存在し、同じ要素を2回使うことはできません。答えは任意の順序で返して構いません。
>

**例 1:**

“`
入力: nums = [2,7,11,15]、ターゲット = 9
出力: [0,1]
説明: nums[0] + nums[1] == 9 であるため、[0, 1] を返します。

“`

**例 2:**

“`
入力:数値 = [3,2,4]、ターゲット = 6
出力: [1,2]

“`

**例 3:**

“`
入力:数値 = [3,3]、ターゲット = 6
出力: [0,1]

“`

### **制約:**

– `2 <= nums.length <= 104` - `109 <= nums[i] <= 109` - `109 <= target <= 109` **フォローアップ:** 時間の計算量よりも少

元記事を表示

Entity、DTO、VO

Javaでオブジェクトを実装する方法としては、Entity、DTO、VOなど様々な方法がある。

# Entity

– 実際のデータベースと1:1にマッピングされるclass
– @Entity を付ける。
– オブジェクトの一貫性を高めるために、無分別なsetter の使用を推奨しない。
– 生成者を通じて値を入れて一貫性を維持するようにすることをお勧めする。 基本生成子のアクセス制御子をprotectedと宣言し、希望通り生成子を作成するようにすることで、オブジェクト自体の一貫性を高めることができる。

“`java
@NoArgsConstructor(access = AccessLevel.PROTECTED)
“`

– 別々に使用する必要がある場合は、setter 以外に使用した意図や意味が分かる別途のメソッドを作成することを推奨する。
– 小規模な個人プロジェクト程度であれば、エンティティを直接使用することがコードの簡潔性とメンテナンスに容易である。

# DTO

– 階層間データ交換のためのオブジェクト
– 別途のロジックなしに主に

元記事を表示

OTHERカテゴリの最新記事