- 1. JavaとPHPの文法の違い
- 2. [paiza]ポップにプッシュ(ハノイの塔 (paizaランク A 相当)
- 3. [paiza]おりおりおりおー(山折り谷折り (paizaランク A 相当)
- 4. [paiza]プリーズ、プリーズ、交換しましょ(本の整理 (paizaランク A 相当)
- 5. Spring FrameworkのDIコンテナ
- 6. Spring Bootのフォルダ構成を整理整頓で開発効率アップ!
- 7. [paiza]脳筋プレーやめた(【殿堂入りキャンペーン】名刺バインダー管理 (paizaランク B 相当)
- 8. Java Gold 例題 並列処理
- 9. [paiza]toArrayに激ハマり(長テーブルのうなぎ屋 (paizaランク B 相当)
- 10. Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C 宝くじ 編】
- 11. [paiza]シリをもげ!(みんなでしりとり (paizaランク B 相当)
- 12. Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C 野球の審判 編】
- 13. Javaで「UNICODE_CASEフラグ(Unicode準拠の文字でも大文字と小文字を区別しない)」の動作を確認してみた
- 14. Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C みかんの仕分け 編】
- 15. [paiza]めくりめくり(神経衰弱(オリジナル) (paizaランク B 相当)
- 16. JavaのStream APIについて、まとめてみました。
- 17. Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C Fizz Buzz 編】
- 18. NullPointerExceptionについて考えてみる。
- 19. Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C 残り物の量 編】
- 20. 解いてみた。「Sランク:島探し」
JavaとPHPの文法の違い
## はじめに
JavaとPHPは、どちらも広く使われているプログラミング言語ですが、その文法には多くの違いがあります。本記事では、JavaとPHPの基本的な文法の違いを中心に解説します。これから両言語を学ぶ方や、どちらか一方の言語に慣れている方に役立つ内容となっています。## 1. 変数の宣言と型指定
### Java
Javaでは、変数を宣言する際に必ずデータ型を指定します。これは、Javaが静的型付け言語であるためです。“`java
int num = 10;
String text = “Hello, World!”;
“`### PHP
一方、PHPでは変数にデータ型を明示的に指定する必要はありません。PHPは動的型付け言語であり、変数の型は実行時に決定されます。“`php
$num = 10;
$text = “Hello, World!”;
“`## 2. クラスとオブジェクトの定義
### Java
Javaは純粋なオブジェクト指向言語であり、すべてのコードはクラスの中に配置されます。以下は、クラスとオブジェクトの基本的な定義です。`
[paiza]ポップにプッシュ(ハノイの塔 (paizaランク A 相当)
# ア アラララァ ア アァ!
歌う系のヒップポップ好きなんですよねぇ。
SOUL’d OUT(ウェカピポ YO!
Dragon Ash(ファンタジスタ
nobodyknows+(ダンス・ダンス・ダンス R゛E゛A゛D゛Y゛ G゛O゛!# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!開発・実行環境はこんな感じ
– VSCode
– Java 17
– jUnit 5.9
– mavenpom.xmlはこんな感じ
“`xml:pom.xml
[paiza]おりおりおりおー(山折り谷折り (paizaランク A 相当)
# 足りない頭なら知恵を盗みゃいい
二番煎じ、三番煎じで作ればいいってことですね!
世の中の似たようなクソアプリはこういうことなんですね、わかります。https://paiza.jp/works/mondai/real_event/origami
# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!開発・実行環境はこんな感じ
– VSCode
– Java 17
– jUnit 5.9
– mavenpom.xmlはこんな感じ
“`xml:pom.xml
<
[paiza]プリーズ、プリーズ、交換しましょ(本の整理 (paizaランク A 相当)
# 赤・緑から剣・盾もやっとる(第1世代~
Poke Goに関しては、
オー◯ド「そこに3人の社畜がおるじゃろ?」
1. 上司や会社の命令にしたがいます。イエスマン
1. 残業はお客様へのサービスです。サビザン
1. 仕事が趣味です。ワカホリhttps://paiza.jp/works/mondai/real_event/book_sort
# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!開発・実行環境はこんな感じ
– VSCode
– Java 17
– jU
Spring FrameworkのDIコンテナ
## DIコンテナ(依存性の注入)
DIコンテナとは依存性の注入をしてくれるSpring Frameworkの機能## 依存とは
##### クラス依存
クラスAとクラスBがあり、クラスAでクラスBのメソッドを使う場合は以下になる。
“`java
class A {
public void methodA() {
B b = new B();
b.methodB();
}
}
“`
上記のようにクラスA(使う側)でクラスB(使われる側)のインスタンスを作成してメソッドを実行する。
仕様変更などで、使われる側のクラスがクラスCになった場合は以下のように修正することになる。
“`java
class A {
public void methodA() {
C c = new C();
c.methodC();
}
}
“`
このようにインスタンスを作り直してメソッドを実行した。書き換えた箇所を「依存性がある」という。
Bのインスタンを使用している箇所が10箇所や100箇所あった場合、修正にかなり時間がかかってしまう。
Spring
Spring Bootのフォルダ構成を整理整頓で開発効率アップ!
## はじめに
Spring Bootでの開発は楽しいものですが、プロジェクトが大きくなると、まるで引き出しを開けると物が飛び出してくるような状態になりがちです。
「この場合どこのフォルダに配置したほうがいいのかな?」「どこに何があるのか分からない!」なんてことにならないためにも、フォルダ構成はしっかりしておきたいところ。今回は、Spring Bootプロジェクトのフォルダ構成について、整理整頓の大切さと共に、Spring Bootプロジェクトでよく使用されるフォルダ構成について、その目的や役割を解説します。
## 問題
プロジェクトが大きくなればなるほど、コードがゴチャゴチャに。
まるで片付けられない部屋のように、どこに何があるのか分からなくなります。
さらに、「あれ?このクラス、こんなところにいたの?」と予期せぬ出会いを果たすこともしばしば。
こんな状態では、開発効率がガタ落ちしてしまいます。**主な問題点**:
– コードの可読性が低下し、新人開発者がプロジェクトに参加するときに「ここがカオスですか?」と戸惑う。
– バグ修正や機能追加時に、関係ないクラスまで巻き
[paiza]脳筋プレーやめた(【殿堂入りキャンペーン】名刺バインダー管理 (paizaランク B 相当)
# 見つかるまでループするとか脳筋かよ(特大ブーメラン
[JavaScript版](https://qiita.com/AsilHatake/items/547c799b9d2ca752db6e)ではひたすらループして、
特定の数字が見つかるまで帰れまテンみたいな脳筋プレーしてましたが、
よくよく数字を並べて比較してたらソレっぽい関係性的なのが見つかったため、プログラムに落とし込んでみた。https://paiza.jp/works/mondai/b_rank_skillcheck_archive/name_card
# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテスト
Java Gold 例題 並列処理
“`java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class CachedThreadPoolTest {
private static final ExecutorService threadPool = Executors./* insert code */
public static void main(String[] args) {
startServer();
}public static void startServer() {
for(int i = 0; i < 6; i++) { final int requestNumber = i; threadPool.submit(() -> {
handleRequest(requestNumber);
});
}
threadPool.shutdown();
}public static void ha
[paiza]toArrayに激ハマり(長テーブルのうなぎ屋 (paizaランク B 相当)
# Javaってこんな面倒くさい言語だっけ?
ココ最近(直近2~3念ぐらい)、
型定義はあれど比較的制限ユルユルなJavaScriptやTypeScriptばかりやってたお陰で、
Javaで問題解くのにめっちゃ時間かかってしまってる。。。
ほんと、何なんだよこのクソ言語。。。(実力不足https://paiza.jp/works/mondai/b_rank_skillcheck_sample/long-table
# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!開発・実行環境はこんな感
Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C 宝くじ 編】
# 問題へのリンク
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/lottery
# 解答コード
詳細
~~~
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
final int B = scanner.nextInt();
final int N = scanner.nextInt();StringBuilder sb = new StringBuilder();
Lottery lottery = new Lottery(B);
for (int i = 0; i < N; i++) { final int A = scanner.nextInt(); sb.append(lottery.getWi
[paiza]シリをもげ!(みんなでしりとり (paizaランク B 相当)
# 大人になれない僕らの
無敵フォルゴレと強力わかもとビクトリームがめっちゃ好き。
キャッチマイハート、ベリーメロン(ベリーメロン
ぶるぁあぁあぁあ~っ!!https://paiza.jp/works/mondai/b_rank_skillcheck_archive/word_chain
# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!開発・実行環境はこんな感じ
– VSCode
– Java 17
– jUnit 5.9
– mavenpom.xmlはこん
Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C 野球の審判 編】
# 問題へのリンク
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire
# 解答コード
詳細
~~~
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
final int N = scanner.nextInt();StringBuilder sb = new StringBuilder();
Umpire umpire = new Umpire();
for (int i = 0; i < N; i++) { final String S = scanner.next(); sb.append(umpire.call(S)).append("\n"); } System.out.print
Javaで「UNICODE_CASEフラグ(Unicode準拠の文字でも大文字と小文字を区別しない)」の動作を確認してみた
# 概要
Javaで「UNICODE_CASEフラグ(Unicode準拠の文字でも大文字と小文字を区別しない)」の動作を確認してみました。
以下のページを参考にしました。https://www.javadrive.jp/start/regex/index22.html
# 実装
以下のファイルを作成しました。
“`JSample22_1.java
import java.util.regex.*;class JSample22_1{
public static void main(String[] args){
String target1 = “book”;
String target2 = “BOOK”;String regex = “book”;
Pattern p1 = Pattern.compile(regex);Matcher m1_1 = p1.matcher(target1);
System.out.println(target1 + “:” + m1_1.find());
Matche
Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C みかんの仕分け 編】
# 問題へのリンク
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/mikan
# 解答コード
詳細
~~~
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);final int N = scanner.nextInt();
final int M = scanner.nextInt();StringBuilder sb = new StringBuilder();
for (int i = 0; i < M; i++) { final int W = scanner.nextInt(); int quotinent = W / N; int remainder = W % N; if (quo
[paiza]めくりめくり(神経衰弱(オリジナル) (paizaランク B 相当)
# 一人での限界
いつもふざけたことばかり書いていますが、
一応、会社の一業務としてQiitaへの投稿をしてます。
完全に人選ミスですねw
最近paizaのコラボがあるお陰でネタに困らないですが、ほぼ一人で会社の顔として何かを発信するってなかなかしんどみの極み。
そろそろ書く人を増やしてもらって、[QiitaのOrganization](https://qiita.com/organizations)で1位取ってみたいところです。
※やるからには1番取ってみたいよね(頂上獲るっショhttps://paiza.jp/works/mondai/b_rank_skillcheck_archive/concentration
# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なん
JavaのStream APIについて、まとめてみました。
## はじめに
Java 8から導入されたStream APIは、コレクションや配列などのデータの処理をより簡潔かつ関数的に記述するためのAPIです。従来のfor文を使ったループ処理と比較して、より直感的で、かつ並列処理にも対応できるという特徴があります。コレクションや配列などのデータソースに対して、宣言的な方法でデータ処理を行うことができます。ストリームAPIを使用すると、データのフィルタリング、マッピング、集計などの操作を簡潔に記述できます。
今回は、この「JavaのStream APIについて」まとめてみました。### Stream APIの主な特徴
**宣言型** 何をしたいかを記述するだけで、具体的な処理の仕方はコンパイラが決定。
**遅延評価** 終端操作が実行されるまで、実際には処理が実行されない。
**並列処理** 並列ストリームを利用することで、マルチコアプロセッサの性能を最大限に引き出すことができる。
**関数型** ラムダ式やメソッド参照を用いて、処理を関数として表現する。### Stream APIのパイプライン
Stream APIは、中間操作と
Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C Fizz Buzz 編】
# 問題へのリンク
https://paiza.jp/works/mondai/c_rank_skillcheck_sample/fizz-buzz
# 解答コード
詳細
~~~
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);final int N = scanner.nextInt();
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= N; i++) { if (i % 15 == 0) { sb.append("Fizz Buzz"); } else if (i % 3 == 0) { sb.append("Fizz"); } else if (i % 5 == 0) {
NullPointerExceptionについて考えてみる。
# Nullとは
Javaにおけるnullポインターエクセプションとは、プリミティブ型にnullが設定されている状態でnull処理をされていない呼び出しが行われたときに発生する例外のことである。
例えば、
“`
import java.util.*;public class Main {
public static void main(String[] args) throws Exception {
// Your code here!
String i=null;
System.out.println(i.length());
}
}
“`上記のソースコードをコンパイルするとコンパイルは正常完了するが、実行の際に、実行時エラーとしてnullポインターエクセプションを出してしまう。
# 実務におけるnullポインターエクセプション例外の処理
実務では基本的にJavaとデータベースなどを組み合わせて使う場合が多い。データベースでnullが設定されている場合にはJava側に関してもnullが設定されてしまうこ
Paiza×Qiitaキャンペーン 全問Javaで解説してみた【C 残り物の量 編】
# 問題へのリンク
https://paiza.jp/works/mondai/c_rank_skillcheck_archive/leftover
# 解答コード
詳細
~~~
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);final int M = scanner.nextInt();
final int P = scanner.nextInt();
final int Q = scanner.nextInt();double numerator = M * (100 – P) * (100 – Q);
double denominator = 100 * 100;double answer = numerator / denominator;
Sy
解いてみた。「Sランク:島探し」
# 問題
[「Sランク:島探し」](https://paiza.jp/works/mondai/s_rank_skillcheck_sample/search-island)# コード
Javaで解いてみました。“` Java
import java.util.*;class Pair {
public int x;
public int y;
public Pair(int x, int y) {
this.x = x;
this.y = y;
}
}class Map {
public static final boolean EMPTY = false;
public static final boolean LAND = true;public int nN;
public int nM;
public boolean[][] bMap;public Map(int x, int y) {
nN = x;