- 1. 【Java】Switch文・Switch式とは
- 2. Javaで「引数を指定してmainメソッドを呼び出す」の動作を確認してみた
- 3. テーブルを追加したらコンパイルエラーでビルドできなくなった話
- 4. クラスの概念を初心者にわかりやすく解説
- 5. No.14 演算子(足し算)
- 6. Javaで「固定引数と可変引数の組み合わせ」の動作を確認してみた
- 7. [備忘録 その8] Java Silver ~制御文~
- 8. O型のJava記載方法まとめ
- 9. Stream基礎
- 10. @ConfigurationPropertiesを使用した内部クラスの問題記録
- 11. 競技プログラミング練習 ビット全探索(Java)
- 12. Java リフレクション
- 13. Java プロパティファイル
- 14. Javaで「可変引数」の動作を確認してみた
- 15. 変数・値・参照・代入
- 16. AOP思想、動的プロキシ、Spring AOPの三者の関係
- 17. Javaで「メソッドのオーバーロード」の動作を確認してみた
- 18. Sliding Window アルゴリズムを利用した問題解決
- 19. No.13 定数
- 20. [備忘録 その7] Java Silver ~基本データ型の型変換~
【Java】Switch文・Switch式とは
## はじめに
Java Silverの学習を進めている際、Switch文、Switch式について学ぶ機会がありました。
条件分岐処理は普段if文を使って書くことが大半なので、備忘録としてまとめてみようと思います。
※誤りありましたら、ご指摘いただけますと幸いです。
## 想定読者
初学者の方
普段Javaを使用している方## Switch文とは
Java14で正式に追加された、複数の条件分岐を簡潔に記述するための制御構造のことを言います。
特定の変数の値に基づいて異なるコードブロックを実行することができます。
if文と似ていますが、条件分岐が多くなる場合は、Switch文を使用した方が可動性は向上するかと思います。## 実際の使い方
実際の使い方を見ていきましょう。
ここでは2つの書き方を取り上げます。#### 1, オーソドックスな書き方
“`int day = 3;
switch (day) {
case 1:
System.out.println(“Monday”);
Javaで「引数を指定してmainメソッドを呼び出す」の動作を確認してみた
# 概要
Javaで「引数を指定してmainメソッドを呼び出す」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/main/index1.html
# 実装
以下のファイルを作成しました。
“`JSample1_1.java
class JSample1_1{
public static void main(String args[]){
System.out.println(“「” + args[0] + “」”);
}
}
“`以下のコマンドを実行しました。
“`
$ javac JSample1_1.java
$ java JSample1_1 hello
「hello」
“`# まとめ
何かの役に立てばと。
テーブルを追加したらコンパイルエラーでビルドできなくなった話
こんにちは、サーバエンジニアの池脇と申します。
今回は私が実際に経験した失敗談とそこから得た学びについてまとめようと思います。
どなたかの参考になれば幸いです。## テーブルを追加しただけでコンパイルできなくなった!?
JavaのSpringBootを使って新規テーブルを追加する作業は開発者にとって日常的な作業です。
しかし、ある日新規テーブルを追加し、いつものようにコードの自動生成を走らせてビルドを行ったところまさかのコンパイルエラーに直面しました。
エラーの内容は
“`
パラメータが多すぎます。(too many parameters)
“`
というものでした。## なぜコンパイルエラーが起きたのか
上記エラーの内容と発生箇所から、これはコンパイラが受け付けるコンストラクタのパラメータ数が上限を超えていることが原因ということはわかりました。
しかしなぜエラーが発生したのか……?エラーの発生に至った背景を探ると次のことが明らかになりました。
私のプロジェクトでは、マスタデータのキャッシュを暖気するためのクラスを自動生成していました。このクラスは `private fi
クラスの概念を初心者にわかりやすく解説
# 背景
現在、新卒でエンジニアになりオンボーディングを行っています。研究でC++を用いてプログラミングをしていて半泣きになりながらオブジェクト指向プログラミングについて理解した過去から、同期の理解の一助になればと勉強会を開いて理解のサポートをしました。そこで説明した内容をこちらでも供養できればと思います。:::note warn
こちらの記事はクラスの概念をプログラミング初学者がざっくりとした理解をするを目的とした記事です。専門的で詳しい内容を知りたい方は別途自分で調べていくことをお勧めします。
:::
:::note
私もJava初学者ですので、記事の内容で不備がある、わかりにくいなどあれば遠慮なくコメントなどいただけると嬉しいです。
:::
# 目次
1. [クラスとは](#1クラスとは)
1-1.[クラスのイメージ](#1-1クラスのイメージ)
1-2.[クラスの中身を書きながら理解](#1-2クラスの中身を書きながら理解)2. [例を見ながら解説](#2例を見ながら解説)
2-1.[題材となる問題](#2-1題材となる問題)
2-2.[問題を読んで](#2-2問題を読
No.14 演算子(足し算)
# 演算子(足し算)
+(足し算)
<出力結果>
30yen(まず10+20が行われてからyenが連結される)-(引き算)
*(掛け算)
/(割り算)# 演算子(余り)&練習問題
[備忘録 その8] Java Silver ~制御文~
# 制御文
制御文とは、プログラムの実行フローを制御するための文法です。代表的な制御文には以下のものがあります### 1 \. 条件分岐(if文)
### 2 \. switch文
### 3 \. 繰り返し文(for文)
### 4 \. 繰り返し文(while文)## 1 \. 条件分岐(if文)
### if文
if文は条件が真か偽かを評価し、真の場合にのみ特定のコードを実行します。されに、’else if’や’else’を使うことで、複数の条件に応じた分岐を作ることができます。#### 基本構文(if-else)
“`java
if (条件式) {
// 条件式が真の場合に実行する処理
} else {
// 条件式が偽の場合に実行する処理
}
“`
#### 例
“`java
int number = 10;if (number > 0) {
System.out.println(“numberは正の数です。”);
} else if (number < 0) { System.out.println("numberは負の
O型のJava記載方法まとめ
## はじめに
【Java】を記載する上で、最低限必要そうなことを、まとめました。
————————————————
## 変数
#### プリミティブ型(メモリのスタック領域に値が入っている)
““int ・・・ 32ビット整数(4バイト) 例:10 -2,147,483,648 ~ 2,147,483,647
long ・・・ 64ビット整数(8バイト) 例:33293304432234523L int 型の範囲を超える数値を代入する場合は末尾に「L」を記述 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
char ・・・ 16ビット(2バイト) 例’あ’ または ‘1’ Unicodeという文字コード規格での数字を表す(数字
Stream基礎
## Stream APIって?
StreamはListなどに対する操作ができるクラスだよ。
for文の処理をよりスッキリかけるようなものだと思ってもらうといいと思うよ。
現場ではfor文を使わず、streamを使うことが多いので簡単に紹介するよ。streamは中間処理といって絞り込みや要素の変換などを行う操作と、終端操作といって結果の取得や表示をする処理があるよ。
百聞は一見にしかず、実際に使ってみるよ。## 具体例
### ①map
mapはstreamの各要素に対して指定の操作を行って返すよ。
今回はString型の数字をInteger型に変換して2倍にする操作を行うよ。
まずはfor文で書くよ。
“`java
import java.util.ArrayList;
import java.util.List;public class Main {
public static void main(String[] args) {
final var sampleList = List.of(“1”, “2”, “3”, “4”, “5”);
@ConfigurationPropertiesを使用した内部クラスの問題記録
私たちはよく@ConfigurationPropertiesを使ってカスタム設定を注入しますが、設定ルールが複雑な場合、複数のクラスを定義して設定をマッピングする必要があることがあります。このとき、これらのクラスを単独で定義するか、内部クラスとして定義するかという問題に直面します。
私は内部クラスを使用することを選びました。**理由は、管理とメンテナンスが容易だからです。**
内部クラスの方法を使用しているときに、設定が注入できないという問題が発生しました。ネットで色々と調べましたが、うまくいきませんでした。その後、Datasourceの設定が比較的複雑な設定であることを思い出し、どのように実装されているかを確認しました。**すると、このような方法で定義する場合、内部クラスをpublic staticとして定義する必要があることが分かりました。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809422/4bded3de-dcc9-cc11-5f5e-831054986f99
競技プログラミング練習 ビット全探索(Java)
競技プログラミングで必要になったので、ビット全探索のシンプルな演習をしてみた。
“`java:ビット全探索練習
class Main {
public static void main(String[] args) {
// 集合{a,b,c}の部分集合を列挙する
String[] s= {“a”,”b”,”c”};
//要素数
int n=3;//2^nパターンを探索
for(int i=0 ;i< (1<>j)==1) sub += s[j]; }
System.out.println(“{“+sub+”}”);
Java リフレクション
Java 11 Gold 取得に向けた学習記録
# リフレクション
**リフレクション**は、クラス、メソッド、フィールドなどの**実行時**の情報を動的に取得したり操作したりする機能のことを指す。
リフレクションを使用することで、プログラムの実行時にクラスやオブジェクトのメタデータを取得し、メソッドの呼び出し、フィールドへのアクセス、インスタンスの生成などを行うことができる。
また、リフレクションを利用することでアノテーション情報を取得することができる。
実際にリフレクションを利用するには`java.lang.reflect`パッケージを使用する。
https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/lang/reflect/package-summary.html
## `Class
` `java.lang.Class
`クラスは、クラスが持つメタデータを表す。 リフレクションを利用して`Class
`オブジェクト取得する方法にはいくつかのバリエーションがあり、取得した`Class
Java プロパティファイル
Java 11 Gold 取得に向けた学習記録
# プロパティファイル
アプリケーションの設定情報を、外部ファイルとしてアプリケーションと分離させることでコードのコンパイルやアプリケーションのビルドをせずに挙動を変える手法がある。このときの外部ファイルを**プロパティファイル**と言う。
プロパティファイルの実体は、キーバリュー形式で値を保持する単なる**テキストファイル**である。このファイルの拡張子は通常 `.properties` とする。`settings.properties`や`config.properties`というファイル名が多く使用される。
キーとバリューは以下のように記述する。`=`と`:`を利用することができる。
“`text:config.properties
password=hello
database.password=world
database.username:suzuki
“`プロパティファイルを扱うためには[`Properties`](#properties)クラスか[`ResourceBundle`](#resourcebu
Javaで「可変引数」の動作を確認してみた
# 概要
Javaで「可変引数」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/method/index9.html
# 実装
以下のファイルを作成しました。
“`JSample9_1.java
class JSample9_1{
public static void main(String args[]){
System.out.println(sum(4, 10));
System.out.println(sum(7, 2, 8));
System.out.println(sum());
}private static int sum(int… nums){
int sum = 0;for (int i = 0; i < nums.length; i++){ sum += nums[i]; } return sum; } } ``` 以下のコマンドを実行しました。 ``` $ javac JSampl
変数・値・参照・代入
# これは何?
変数ってなに? という話。
値なのか、参照なのか、代入したらどうなるのか、とか。そのあたり。# いくつかの言語の事例
いくつかの言語の事例を書いてみる。
## C言語の場合
C 言語の変数は(概念としては)型が付与された一連のメモリである。この文脈ではオブジェクトと言ってもいい。
変数の型が決まれば、バイト数が決まる。オブジェクトの正体は、構造体かもしれないし、ポインタかもしれない。
「概念としては」と書いたのは、コンパイルの結果その変数自体が消滅したり、いろいろあり得るから。
C言語では、同じ「一連のメモリ」を別の変数が直接指すということはできない。そうしたければポインタを使う。
あるいは `union` を使えば異なるメンバが同じ「一連のメモリ」を指すことが出来る。Pascal なんかも同じだと思う。
“`C:C
a=b;
“`という代入文は、暗黙の型変換が入らない場合「b が指す一連のメモリを a が指す一連のメモリにコピーする」という意味になる。
つまり、代入が行われても依然として a は b と別のもの(アドレスが異なる)であ
AOP思想、動的プロキシ、Spring AOPの三者の関係
**基本的な概念については繰り返し説明しません。疑問がある方は、以下のリンクをご参照ください**:https://yo1000.gitbooks.io/self-study-spring/content/chapter7.html
## 1.AOP思想、動的プロキシ、Spring AOPの三者の関係
![未命名文件 (8).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3809422/6c9e2a0b-4d32-7139-8f4d-df56c23189a9.jpeg):::note info
Spring AOP の実装は、主に動的プロキシを使用してアスペクト指向プログラミングを実現します。インターフェースに基づく場合、Spring AOP は JDK の動的プロキシを使用してプロキシオブジェクトを作成します。一方、クラスに基づく場合には、CGLIB 動的プロキシ(コード生成ライブラリ)を使用してプロキシオブジェクトを作成します。具体的には:
JDK 動的プロキシ:対象オブジェクトが1つ以上
Javaで「メソッドのオーバーロード」の動作を確認してみた
# 概要
Javaで「メソッドのオーバーロード」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/method/index8.html
# 実装
以下のファイルを作成しました。
“`JSample8_1.java
class JSample8_1{
public static void main(String args[]){
System.out.println(plus(10, 7));
System.out.println(plus(3.2, 4));
System.out.println(plus(7, 1.223));
System.out.println(plus(5.08, 2.4));
}private static int plus(int n1, int n2){
System.out.println(“int + int”);
return n1 + n2;
}private static double pl
Sliding Window アルゴリズムを利用した問題解決
## LeetCode
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3824062/2916d7f2-414e-ad35-e982-f90b651560e0.png)https://leetcode.com/problems/longest-substring-without-repeating-characters/
#### 目的
与えられた文字列において、重複する文字がない最長部分文字列の長さを求めるアルゴリズムを改善します。このためにスライディングウィンドウ手法を使用します。#### 初期コードの問題点
初期コードでは、重複する文字が見つかるたびに`left`ポインタを重複する文字が位置するインデックスの次の位置に移動させる方式で最長部分文字列を計算しています。しかし、この過程で`left`ポインタが非効率的に移動する可能性があります。#### 改善されたアルゴリズム
改善されたアルゴリズムは、重複する文字が見つかった場合、`left`ポインタを一度にジャンプさ
No.13 定数
◆上書きできない変数のこと◆finalをつける
◆慣例として以下がある
・すべて大文字
・複合文字の場合は区切りをアンダースコア “_” で結合<使用例>
![](https://storage.googleapis.com/zenn-user-upload/9c231c32f9da-20231009.png)—
まとめ
[備忘録 その7] Java Silver ~基本データ型の型変換~
# 基本データ型の型変換(キャスト)
基本データ型の型変換は、プログラム内でのデータ型を変更するための操作です。Javaでは、データ型の変換には2つの主要な方法があります。
1 \. 暗黙的型変換(自動型変換)
2 \. 明示的型変換(キャスト)## 1 \. 暗黙的型変換(自動型変換)
暗黙的型変換は、コンパイラが自動的に行う変換で、変換先の型が変換元の偏りも広い(より大きな範囲を持つ)場合に適用されます。例えば’int’型の値を’long’型の変数に代入する場合などです。“`java
public class Main {
public static void main(String[] args) {
int intValue = 100;
long longValue = intValue; // intからlongへの自動型変換
System.out.println(“Long value: ” + longValue); // Long value: 100
}
}
“`
この例では、intか