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

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

Java と C# での違い

## JavaとC#のひっかりやすい違い
C#使用者がJavaを使用するにあたり、ひっかかりやすい違いをまとめる

## Javaのprivate はpublicの内部クラスでしか使えない

“`java.java
public class MyClass {
// このクラスは public なので他のパッケージからもアクセス可能
private class PrivateClass {
}
}

class DefaultClass {
// このクラスはデフォルトアクセスなので同じパッケージ内のみでアクセス可能
}
“`

“`C#.cs
// Program.cs
namespace TestApp
{
public class MyClass
{
}
private class PrivatelClass
{
//C#はprivateで内部クラスが定義できる
}
}
“`

## Javaは名前空間はpackageを利用

“`java.java
package test.p

元記事を表示

JavaServlet

勉強中のため自分用のアプリケーションです。
Eclipseを使用してます:desktop:

## Java Servlet
Javaのプログラムの一種で、主にWebアプリケーションでサーバーサイド処理を行う為の技術。

## 主な役割
**・リクエスト処理**
クライアントから送信されたデータを受け取る 

**・ビジネスロック実行**
サーバーサイドの処理(データベース操作)を行う。

**・レスポンス作成**
処理結果を基にクライアントにデータを返すHTML, JSON, XMLなど)。

## メリット
**・プラットフォームに依存しない**
javaで実装されているため、javaが動作するプラットフォームであればどこでも動かすことができる。Windows、Linux、macOSなど様々な環境で動作できる

**・ライフリサイクル管理が容易**
ライフリサイクル(生成→初期化→リクエスト処理→破棄)は、サーバが自動的に管理。リソース管理やエラーハンドリングがシンプルになる。

**・セキュリティ**
Javaのセキュリティ機能を活用することで、安全なWebアプリケーションを構築

元記事を表示

Eclipseのビューを自分で作る【Eclipse + ChatGPT】

Eclipseのビューを自分で作成する方法を紹介したいと思います。
今回はEclipse2023 + JavaSE17 を使っていきます。
また後半ではEclipseとChatGPTという不思議な組み合わせを実装します。

# PDE (Plug-in Development Environment)のインストール
**「ヘルプ」 > 「新規ソフトウェアのインストール」**
から作業対象に
https://download.eclipse.org/releases/latest
と入力し、「一般用ツール」から「Eclipse プラグイン開発環境」をインストール

![unnamed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3841947/37a1719c-3a2a-4827-8fc3-60779d5ef0de.png)

表示される条項などに同意し、インストール後に再起動する (筆者はpleiades以下の”eclipse.exe -clean.cmd”によりキャッシュを削除して再起動しないと次の

元記事を表示

paizaラーニングレベルアップ問題集をJavaでやってみた

paiza×Qiita記事投稿キャンペーンということで、キャンペーン対象問題25問をJavaで解いてみました。
– – –
###### [文字の一致](https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str)
“`java
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(sc.nextLine().equals(sc.nextLine()) ? “OK” : “NG”);
sc.close();
}
}
“`
– – –
###### [一番小さい値](https://paiza.jp/works/mondai/d_rank_skillcheck_sample/min_num)
“`java
import java.util.*;

public class Main

元記事を表示

MyBatisで複数のDBに接続する

## DB接続設定ファイル(yml)

今回は以下の設定を行う

– application.ymlにdatasource2を追加する

– 一方はSQL Server、もう一方はOracle DBに接続する

“`yaml:application.yml
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://localhost:1433;databaseName=maindb
username: hoge
password: hogehoge
datasource2:
driver-class-name: oracle.jdbc.driver.OracleDriver
url: jdbc:oracle:thin:@//localhost:1521/oracledb
username: hoge2
password: hogehoge2
“`

## Spring

元記事を表示

Eclipse Java でpackageを使用する

## この記事の内容
Eclipseはじめて触る人がPackageを使えるまで

最終的なpackageのフォルダ構成
“`
PackageTest/
└── src/
└── test/
├── another.pg/
│ ├── MathUtils.java
│ └── package-info.java
└── pg/
├── Main.java
└── package-info.java

“`

## やり方 初期設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2294598/ca515094-e07d-1aea-5cab-e08f3cc0bebe.png)
起動時の画面

ファイル>新規>JavaProject
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

JavaでCSVを読み込むサンプル

郵便局が公開している[郵便番号の全国データ](https://www.post.japanpost.jp/zipcode/dl/kogaki-zip.html) (KEN_ALL.CSV)を読み込み、都道府県ごとに郵便番号の数をカウントしてみます。標準入力からcsvを渡すこととします。

“`java: ReadCsv.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class ReadCsv {
public static void main(String[] args) {
Map prefCount = new HashMap<>();
try (BufferedReader br = new BufferedReader(new InputStre

元記事を表示

Template Methodパターンとは?

※最近デザインパターンを勉強し直そうと思って読んだ[この書籍](https://www.hyuki.com/dp/)を自分なりにまとめていっている記事です。
※この記事ではTemplate Methodパターンについて書いています。

ソフトウェア開発において、類似した手順を持つ処理をいくつも抱えている場合、どのようにしてコードの一貫性と再利用性を確保しますか?例えば、複数の種類のレポートを生成するアプリケーションや、異なる種類のデータを処理するウェブアプリケーション。これらのシナリオでは、共通の処理フローを確保しながら、特定の部分でカスタマイズが必要になります。Template Methodパターンは、こうした問題を解決するための有用なデザインパターンです。

## Template Methodパターンとは?

Template Methodパターンは、スーパークラスにアルゴリズムの骨組みを定義し、サブクラスでその具体的なステップを実装するデザインパターンです。これにより、アルゴリズム全体の構造を変えずに、サブクラスで部分的に処理を変更できます。

### よくあるシナリオ

元記事を表示

GradleとTomcatを使ったJava Servletアプリのデプロイ方法

EclipseなどのIDEは使わずCLIのみでHello Worldアプリのデプロイまでおこなった。備忘録。

# 確認済み環境
– Mac OS
– OpenJDK 17.0.12
– Gradle 8.10
– Tomcat 10.1.28

# 手順

1. ディレクトリ作成

“`bash
$ mkdir HelloWorldServlet && cd HelloWorldServlet
“`

2. Terminalで`gradle init`を実行。実行後聞かれる設定は以下。
– Select type of build to generate: 1. Application
– Select implementation language: 1. Java
– target Java version: 17
– Project name: HelloWorldServlet
– Select application structure: 1. Single application project

元記事を表示

カスタムEnumValidアノテーションで有効性検証を実装してみました。

## はじめて

最近の作業中にEnumValidを定義した話をしようと思います。

– 私は韓国人として、日本語の勉強とコンピュータの勉強を同時に行うために、ここに文章を書きます
– 翻訳機の助けを借りて書かれた文章なので、誤りがあるかもしれません

## なぜ作成したのか?

“`java
@Operation(summary = “サブクエスト修正”, description = “サブクエストを修正します。許可された値:ENABLE、DISABLE”)
@PatchMapping(“/{questId}/{subQuestId}”)
@ImageUploader
@AdminOnly
public ResponseEntity updateSubQuest(@PathVariable Long questId,
@PathVariable Long subQuestId,
@RequestBody @Valid SubQuestUpdateRequest subQuestUpdateRequest) {
final SubQuestR

元記事を表示

[Android その1] Androidの基礎

# この記事について
Androidアプリケーション開発について興味があるので、調べつつ、アウトプットとして記載をしたいと思います。
特に、__4. アプリケーションの基本要素__ について記載を進めていこうと思います。
また言語はJavaで書いていこうと思います。ですが、後々にKotlinでの記載も進めていきます。

# Androidについて
Androidは、Googleが開発したオープンソースのモバイルオペレーションシステムです。主にスマートフォンやタブレットで使われており、世界中で非常に広く普及しています。

## 1\. Androidの構成
Android システムは主に以下のコンポーネントで構成されています:
* __Linux カーネル__: Android の基礎は Linux カーネルで、メモリ管理、プロセス管理、ネットワークプロトコルスタックなどの基本的なシステム機能を提供します。
* __ハードウェア抽象化レイヤー (HAL)__: ハードウェアと上位層のソフトウェア間のインターフェースを提供し、Android がさまざまなハードウェアに対応できるようにし

元記事を表示

Java Silver試験対策:初心者エンジニアのための完全ガイド

## はじめに

Javaエンジニアを目指す皆さん、こんにちは!今回は、Java Silver試験の対策について詳しく解説していきます。15章に分けて、重要なポイントと練習問題を紹介します。それでは、さっそく始めましょう!

## 1. Javaプログラミングの基礎

Javaの基本構文や変数の扱い方を学びます。

**練習問題:**
次のコードの出力は何ですか?

“`java
public class HelloWorld {
public static void main(String[] args) {
int x = 5;
System.out.println(x++);
}
}
“`

a) 5
b) 6
c) コンパイルエラー
d) 実行時エラー

**答え: a) 5**
後置インクリメント演算子(x++)は、現在の値を返してから増加させます。

## 2. オブジェクト指向プログラミング

クラスとオブジェクトの概念を理解しましょう。

**練習問題:**
以下のコードで正しいのはどれですか?

“`java
cl

元記事を表示

SpringBoot + Thymeleaf バリデーションエラーの表示

## 記載内容
画面上の入力フォームに馬影デーションエラーを表示させる際の実装方法について記述します。

## 目次
・Formクラス
・Controllerクラス
・Thymeleaf

## Formクラス
“`java:UserForm.java
@Data
public class UserForm {
private String name;
private String email;
private String password;
}
“`

## Controller
“`java:UserController.java

@Controller
public class UserController {

/**
* ユーザー情報 Service
*/
@Autowired
private UserService userService;

@GetMapping(“/form”)
public String form(
@ModelAttribute UserForm user

元記事を表示

【サクッと習得】Java学習教材

# はじめに
**情報処理安全確保支援士の学習にあたってJavaの知識が必要**なので、自己学習しました。
その際に学習した内容をまとめたので、**情報処理安全確保支援士の学習をする方**や**Javaを短時間で学習したい方**の参考になれば良いと思い教材を作成しました。
**専門書を買うほどでもなくサクッと言語を学習したい方**におすすめです。

# 目次

[1.概要](#1概要)
[2.基本的な構文](#2基本的な構文)
[2-1.コメント](#2-1コメント)
[2-2.変数とデータ型](#2-2変数とデータ型)
[2-3.演算子](#2-3演算子)
[2-4.制御文](#2-4制御文)
[2-5.配列](#2-5配列)
[2-6.メソッド](#2-6メソッド)
[2-7.クラスとオブジェクト](#2-7クラスとオブジェクト)
[2-8.継承](#2-8継承)
[2-9.インタフェース](#2-9インタフェース)
[2-10.例外処理](#2-10例外処理)
[2-11.組み込み関数](#2-11組み込み関数)
[3.高度なトピック](#3高度なトピック)
[3-1.パッケー

元記事を表示

AOP(アスペクト指向プログラミング)

## AOP
プログラムを中心的関心事と横断的関心事に分ける考え方のこと。
**中心的関心事:** 実現したいプログラム
**横断的関心事:** 中心的関心事に付随するプログラム

**(例)**
データベースへアクセスしてデータを取得する処理を例に挙げると、データベースへアクセスする処理が「中心的関心事」、例外処理が「横断的関心事」。
Spring Frameworkの「インターセプト」をいう仕組みを使うと、中心的関心事と横断的関心事を分離して、横断的関心事を中心的関心事に挿入しているように見せることができる。
![スクリーンショット 2024-08-24 10.25.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551832/9de1d05a-708e-bf63-efb2-d549e4a425aa.png)
**Advice:** 横断的関心事のメソッド
**Aspect:** Adviceをまとめたクラス
AOPを利用すると、クラスAからクラスBのメソッドXを呼び出しているだけに見える(実際

元記事を表示

Java Gold ストリームAPI 例題集

コードの出力を答えてください

# 例題1

問1

“`java
import java.util.stream.IntStream;

public class StreamExample {
public static void main(String[] args) {
int sum = IntStream.rangeClosed(1, 5)
.map(n -> n * n)
.sum();
System.out.println(sum);
}
}
“`

問1の解答
55

# 例題2

問2

“`java
import java.util.Arrays;
import java.util.List;

public class StreamExample {
publ

元記事を表示

[paiza]全部計算するとか脳筋かよ(mod7占い (paizaランク S 相当)

# すべて計算すればいい、そう思ってた時期もありました
如何に~~楽にするために~~効率よくナニカするということを最大目標としているIT屋が、全パターン計算するとか無駄の極みだろ。
誰だよ、そんなクソみたいな実装してるやつ(超特大ブーメラン
参照:[【脳筋プレー】JavaScript版](https://qiita.com/AsilHatake/items/cd11273833a45d6ff783)

https://paiza.jp/works/mondai/s_rank_skillcheck_sample/mod7

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラ

元記事を表示

Java初学者が印象に残ったこと集

# 前提
– 投稿者は普段、RubyやJSを書いているのでC++やJava等、ルールがきっちりした静的型付け言語に触れていない。
– その視点でJavaの印象的だった点について感想を述べていく記事になります
# 文字列の比較方法
こう書きたいが
“`java
if (str == “hogehoge”)…
“`
こうらしい
“`java
if (str.equals(“hogehoge”))…
“`
### 理由
`equals()`はアドレスが異なっても同じ内容であるかどうか(**等価**)を判定するメソッド。
String型は参照型であり、二つのString型の変数は同じアドレスを指していないから。

# キャスト演算子
– ()をつけると強制的な型変換を行える
“`java
public

元記事を表示

[paiza]こっからここまで買うわ!(文字列収集 (paizaランク S 相当)

# 飽き性なもんで
3ヶ月~半年ぐらいで飽きが来て、
年単位でやろうもんならやる気がほぼほぼ0になって片手間で別のこと始めちゃうくらい、
1つのプロジェクトを長くやるのがシンドく感じてしまう人間なので、
同じプロジェクトを何年も出来る人って凄いなって思う。

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ

– VSCode
– Java 17
– jUnit 5.9
– maven

pom.xmlはこんな感じ

“`xml:pom.xm

元記事を表示

[paiza]いとおかし( 【殿堂入りキャンペーン】お菓子の詰め合わせ (paizaランク A 相当)

# 年に2~3回ぐらい
ありがたいことにお土産で「萩の月」をいただくことがあるんですが、
もうあの甘さとスポンジの食感がシンドくてシンドくて。。。
年に1回あるかないかぐらいのペースで食べたいところです。
※貰ってばかりで言える立場にないですが、他にお土産無いんか?

# チェック処理とかは端折ってる
/** ここから定型文 */
ここで記載したクラスについては、
[こっちの記事](https://qiita.com/AsilHatake/items/40204293bdf59cb9f9d8)に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ

– VSCode
– Java 17
– jUnit 5.9
– maven

pom.xmlはこんな感じ

“`xml:p

元記事を表示

OTHERカテゴリの最新記事