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

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

[備忘録 その17] Java Silver ~モジュールシステム~

# モジュールシステム
コードをモジュールという単位で構成し、管理するための仕組みです。モジュールシステムは、大規模なアプリケーションの開発やライブラリの再利用を容易にし、依存関係の管理を強化することを目的としています。
## 1\.モジュールシステムの基本概念
#### モジュール
モジュールは、クラスやパッケージをグループ化し、明確に定義された境界を持つ単位です。各モジュールは、他のモジュールに対して何を公開するか(エクスポートするか)を指定できるため、アクセス制御が可能です。
__module-info.java__
モジュールシステムの中心にあるのが、__module-info.java__ というモジュール定義ファイルです。このファイルは、モジュールの名前、依存関係、およびエクスポートされるパッケージを定義します。__module-info.java__ はモジュールのルートに配置されます。
## 2\.module-info.javaの構造
module-info.javaの基本構造は次の通りです。
“`java
module com.example.module {

元記事を表示

Java Gold 例題 同期制御2

“`java
class StudentExamination {

private static final int NUM_STUDENTS = 3;
private static final int NUM_QUESTIONS = 5;
private static final int MAX_TIME_PER_QUESTION = 10;

public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(NUM_STUDENTS);

CyclicBarrier barrier = new CyclicBarrier(NUM_STUDENTS, new Runnable() {
private int currentQuestion = 0;
@Override
public void run() {
currentQuestion++;
if(currentQuestion <

元記事を表示

Java Gold 例題 ZonedDateTime

“`java
import java.time.Duration;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Test {
public static void main(String[] args) {

ZoneId tz = ZoneId.of(“Asia/Tokyo”);
ZoneId lz = ZoneId.of(“America/Los_Angeles”);

ZonedDateTime t = ZonedDateTime.of(
2024, 8, 14,12, 0, 0, 0, tz);

Duration d = Duration.ofHours(10).plusMinutes(20);
ZonedDateTime at = t.plus(d).withZoneSameInstant(lz);

System.out.println(t);
System.out.println(at);
}
}
“`
本コードの目的

元記事を表示

Javaで「先読みと後読みを使ったパターンの記述」の動作を確認してみた

# 概要

Javaで「先読みと後読みを使ったパターンの記述」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index15.html

# 実装

以下のファイルを作成しました。
“`JSample15_1.java
import java.util.regex.*;

class JSample15_1{
public static void main(String[] args){
String regex = “smart(?=phone)”;
Pattern p = Pattern.compile(regex);

String[] target = {“smart”, “smartphone”, “smartwatch”};

for (int i = 0; i < target.length ; i++){ Matcher m = p.matcher(target[i]); System.out.print(target[i

元記事を表示

[備忘録 その16] Java Silver ~例外~

# 例外
Javaの例外処理は、プログラムの実行中に発生するエラーや異常な状況を処理するためのメカニズムです。例外が発生すると、通常のプログラムの流れが中断され、その例外を処理するためのコードが実行されます。これにより、プログラムが予期しない動作をすることを防ぎ、適切なエラーハンドリングを行うことができます。

### 1\.例外の基本
例外とは、プログラムの実行中に発生する異常な状態を示すオブジェクトです。Javaの例外はすべて、java.lang.Throwableクラスのサブクラスであり、主に2つのタイプに分類されます。
#### 例外にタイプ
__1\. チェック例外:__
* コンパイル時にチェックされる例外です。チェック例外が発生する可能性のあるコードは、必ず例外を処理するか、メソッドシグネチャにthrowを使って宣言する必要があります。
* 例:IOException, SQLException

__2\. 実行時例外:__
* 実行時に発生する例外で、コンパイル時にチェックされません。プログラムのロジックの問題やバグによって引き起こされることが多く、例外処理は任意です

元記事を表示

[備忘録 その15] Java Silver ~継承とポリモフィズム その4~

# ジェネリックス
ジェネリックスは、Javaにおいてクラスやメソッドに型引数を使用する機能です。ジェネリックスを使用することで、型の安全性を確保しつつ、再利用性の高いコードを記述できます。これにより、コンパイル時に型のチェックが行われ、不適切な型が使用されるのを防ぐことができます。

## ジェネリックスの基本
ジェネリックスを使うと、クラスやメソッドを定義する際に、特定のデータ型に依存しないコードを書くことができます。例えば、リストのようなデータ構造において、ジェネリックスを使うことで、格納される要素の型を指定することができます。
#### ジェネリックスクラス
以下は、ジェネリッククラスの例です。Tは型引数(ジェネリック型)を表しており、任意の型を指定できます。
“`java
public class Box {
private T item;

public void setItem(T item) {
this.item = item;
}

public T getItem() {
return ite

元記事を表示

DbUnitのXMLに指定した値がテーブルに登録されない

DbUnitのFlatXmlDataSetBuilderに渡すXMLで1行目にカラム省略すると2行目設定できなくなる

も~どんな仕様なの。。。
何度も忘れて、何度も困って。。。

こちらの方が詳しく記載してくださっています。

https://qiita.com/opengl-8080/items/c92b6b687c9b5e277995#1%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E7%9B%AE%E3%81%ABnull%E5%80%A4%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E6%B3%A8%E6%84%8F

> 属性を省略した場合、そのカラムには null が設定される

> FlatXmlDataSet では、1行目のレコードが持つカラムでテーブルの定義が決まる
このため、1行目で value を省略して null にすると、 foo_table には id カラムしか存在しない扱いになり、残りのレコードでは value 属性が無視

元記事を表示

Java Gold 例題 nio move

“`java

import java.io.IOException;
import java.nio.*;

public class FileMoveTest {

private static final long MINIMUM_SIZE = 100 * 1024; // 100KB
private static final long MEDIUM_SIZE = 500 * 1024; // 500KB

public static void main(String[] args) throws IOException {

Path sourceDir = Paths.get(“src”, “images”);
Path minimumDir = sourceDir.resolve(“minimum”);
Path mediumDir = sourceDir.resolve(“medium”);
Path largeDir = sourceDir.resolve(“large”);

Files.creat

元記事を表示

解いてみた。「Bランク:名刺バインダー管理」

# 問題
[「Bランク:名刺バインダー管理」](https://paiza.jp/works/mondai/b_rank_skillcheck_archive/name_card)

# コード
Javaで解いてみました。

“` Java
import java.util.*;

public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int nN = sc.nextInt();
int nM = sc.nextInt();

// nM 番目の名刺が何枚目のファイルにあるか?
int nK = (nM + (2 * nN – 1)) / (2 * nN);

// nK 枚目のファイルの名刺番号の表、裏を足すと
// 一定の値になることから。
// mK番目のファイルにある

元記事を表示

Paiza×Qiitaキャンペーン 全問Javaで解説してみた【D 文字の一致編】

# 初めに
私はIT講師をやっています。
Paizaは初心者や、新しく言語を学んだ後の軽いコード練習用に丁度いい難易度の問題が多いサイトです。
せめて生徒には”Rank Bくらいまでは解けた方がいいよ”という形でやらせているのですが、今まで一切プログラミング的思考に触れてきていなかった方には難しいですね。
Rank Bあれば最低限、日本語による指示の理解及び、コードに変換できる能力が保証されますので、有象無象だらけの未経験の中ではマシということになりますので。

というわけで、折角のキャンペーンですので解説を記事にまとめてみました。
一度自力で解いてみてから読む方がいいかとは思います。
対象ランクへ挑戦する方向けの記事ですので、あえて解説していない部分もあることはご了承願います。

# 問題へのリンク

https://paiza.jp/works/mondai/d_rank_skillcheck_sample/diff_str

# 解答コード

~~~
import java.util.Scanner;

public class Main {
public

元記事を表示

Java Gold 例題 nio copy

“`java
public class FileCopyTest {
public static void main(String[] args) {

Path sp = Paths.get(“food.jpg”);
Path dp = Paths.get(“food_copy.jpg”);

try {
if(Files.exists(dp)) {
System.out.println(“file already exists”);
} else {
Files.copy(sp, dp, StandardCopyOption.REPLACE_EXISTING);
System.out.println(“copy sucucess”);
};
} catch(IOException e) {
System.out.println(“IOException”);
}
}
}
“`
food_copy.jpgは存在しない。
このコードを2回実行した時に表示される出力結果はどれでし

元記事を表示

[備忘録 その14] Java Silver ~継承とポリモフィズム その3~

# 参照型の型変換
## 暗黙型変換
暗黙型変換は、コンパイラが自動的に行う型変換です。主にプリミティブ型と参照型の変換で使用されます。暗黙型変換は、型が互換性があり、データの損失がない場合に行われます。

#### プリミティブ型の暗黙型変換
Javaでは、あるプリミティブ型からより大きな範囲を持つプリミティブ型に変換する場合、暗黙的に変換が行われます。

“`java
public class Main {
public static void main(String[] args) {
int i = 10;
double d = i; // intからdoubleへの暗黙型変換
System.out.println(d); // 出力: 10.0
}
}
“`
ここでは、int型からdouble型への暗黙的な変換が行われます。intの値がdoubleに変換されても、データが失われることはありません。

#### 参照型の暗黙型変換
参照型では、サブクラスのインスタンスをスーパークラスの型として扱うことができ

元記事を表示

Java11

for文
for(式1;式2;式3){
処理分;
}

式1は文
int a = 0, b = 0でもよい
a++
a+=1
varでもよい

元記事を表示

解いてみた。「Bランク:長テーブルのうなぎ屋」

# 問題
[「Bランク:長テーブルのうなぎ屋」](https://paiza.jp/works/mondai/b_rank_skillcheck_sample/long-table)

# コード
Javaで解いてみました。

“` Java
import java.util.*;

public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int nN = sc.nextInt();
int nM = sc.nextInt();

// 初期化
boolean[] bSeat = new boolean[nN+1]; // 座席が埋まっているか?
int nCustomer = 0; // 座っているお客の人数

// 来店
for

元記事を表示

解いてみた。「Bランク:みんなでしりとり」

# 問題
[「Bランク:みんなでしりとり」](https://paiza.jp/works/mondai/b_rank_skillcheck_archive/word_chain)

# コード
Javaで解いてみました。

“` Java
import java.util.*;

public class Main {
public static final char FREE = ‘*’;

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int nN = sc.nextInt();
int nK = sc.nextInt();
int nM = sc.nextInt();

// 単語セットの生成
HashSet hsWords = new HashSet();
for (int i = 0; i

元記事を表示

MacへJavaをインストール

書いておかないと何やったか忘れると言うのと、見返すのも面倒と言うことで記事として残すことにしました。

MacへJavaをインストールするところまで、本記事では説明させていただきます。

# JDK 開発キット 17.0.12 をダウンロードします。
※ JDKとはJava Platform, Standard Edition Development Kitのことです。

## Oracleのホームページへアクセスします。
https://www.oracle.com/jp/java/technologies/downloads/#jdk17-mac

### x64 DMGインストーラーをインストール
ARMとか選ぶと、IOTとかモバイル向けのになっちゃうので、選ばないように。

![スクリーンショット 2024-08-14 1.20.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/95052/1478b2dc-8363-8fb8-c525-4c0647e743c1.png)

順に進んでいく

元記事を表示

解いてみた。「Bランク:神経衰弱」

# 問題
[「Bランク:神経衰弱」](https://paiza.jp/works/mondai/b_rank_skillcheck_archive/concentration)

# コード
Javaで解いてみました。

“` Java
import java.util.*;

public class Main {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
int nH = sc.nextInt(); // カード枚数(垂直方向)
int nW = sc.nextInt(); // カード枚数(水平方向)
int nN = sc.nextInt(); // プレイヤー人数

int[][] anT = new int[nH+1][nW+1];

// カード読み込み
for (int h = 1; h <= n

元記事を表示

Javaで「名前付き正規表現グループの使い方」の動作を確認してみた

# 概要

Javaで「名前付き正規表現グループの使い方」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/start/regex/index14.html

# 実装

以下のファイルを作成しました。
“`JSample14_1.java
import java.util.regex.*;

class JSample14_1{
public static void main(String[] args){
String regex = “(?^.*(?:都|道|府|県))(?.*区)”;
Pattern p = Pattern.compile(regex);

Matcher m = p.matcher(“東京都港区赤坂”);
if (m.find()){
System.out.println(m.group());
System.out.println(m.group(“pref”));
System.out.printl

元記事を表示

Java Gold 例題 parallel 2

“`java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class GroupingByConcurrentExample {
public static void main(String[] args) {

Stream numbers = Stream.of(1,3,5,10, -2).parallel();

/* insert code */ nums =
numbers.collect(Collectors.groupingByConcurrent(n -> {
if(n % 2 == 0) return “even”;
else return “odd”;
}));

System.out.println(nums);
}
}
“`

元記事を表示

Java Gold 例題 parallel

“`java
class Product {
private String name;
private double price;

public Product(String name, double price) {
this.name = name;
this.price = price;
}

public String getName() {
return name;
}

public double getPrice() {
return price;
}

@Override
public String toString() {
return “Product{name='” + name + “‘, price=” + price + ‘}’;
}
}
“`

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

元記事を表示

OTHERカテゴリの最新記事