JAVA関連のことを調べてみた2023年01月19日

JAVA関連のことを調べてみた2023年01月19日

JAVA バージョン変更 Mac

## はじめに
今回は、Javanoバージョン変更方法について書いていきます。簡単です。
PCはMacです。今回はJava19.0.1をJava17.0.5に変更します。

## 現在のJavaのバージョンを確認していく

まず、現在のJavaのバージョンを確認していきます。
“`
~ % java -version
java version “19.0.1” 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)
“`

このコマンドで、現在のJavaのバージョンは19.0.1であるとわかります。

## インストールされているJavaのバージョンを確認する
次は、変更するJavaのバージョン17.0.5がインストールされているか確認します。

“`
~ % /usr/libexec/java_home -V
Matching Java Virtual

元記事を表示

Javaで無料のタイムスタンプサービスに接続する

## タイムスタンプサービス

無料でタイムスタンプトークンを発行するサービス、[Free TSA Project](http://eswg.jnsa.org/sandbox/freetsa/) に接続します。

## タイムスタンププロトコル

タイムスタンプに関わる仕様は、[RFC3161](https://datatracker.ietf.org/doc/html/rfc3161)、[RFC5816](https://datatracker.ietf.org/doc/html/rfc5816) で 定義されています。

HTTP通信で行う際の仕様が [RFC3161 の 3.4 Time-Stamp Protocol via HTTP](https://datatracker.ietf.org/doc/html/rfc3161#section-3.4) に記載されています。

## タイムスタンプサービスへの接続

今回は、[HttpClientクラス](https://docs.oracle.com/javase/jp/17/docs/api/java.net.http/jav

元記事を表示

String.formatの使い方まとめ

文字列を実装する中で文字列操作をする際にString.formatで実装する機会があったので備忘録。

String, Int, Doubleをそれぞれ使うように作成。
サンプルのユーザーデータは以下

“`kotlin
data class User(
// ニックネーム
val nickname: String = “”,
// 年齢
val age: Int = 0,
// 身長(cm)
val height: Int = 0,
// 足のサイズ(cm)
val shoeSize: Double = 0.0,
)

“`

実際の表示確認は以下

“`kotlin

fun main(args: Array) {
val jack = User(nickname = “ジャック”, age = 27, height = 172, shoeSize= 26.5)

print(String.format(“ニックネーム:%s”, jack.nickname))

元記事を表示

JavaSilver対策〜3秒で解ける問題〜

「JavaSilver」の対策記事となります。

JavaSilverの問題ですが、実は中には問題文もしくは選択肢を見れば速攻で解くことができる問題があります。

本来であればしっかりと理解した上で解くのが良いのですが、正直いくつかのポイントを暗記さえしていれば考えなくとも簡単に解けてしまうものです。

今回はふ〜んくらいの心づもりでこの記事を見ていただければと思います。
では、実際に一つ一つ見ていきましょう!

目次

[1. varによる変数宣言](#varによる変数宣言)
 - [例題1-1](#例題1_1)
 - [例題1-2](#例題1_2)
 - [例題1-3](#例題1_3)
[2. StringクラスとStringBuilderクラスのメソッド](#stringクラスとstringbuilderクラスのメソッド)
 - [例題2-1](#例題2_1)
 - [例題2-2](#例題2_2)
[3. Switch文](#switch文)
 - [例題3-1](#例題3_1)
 - [例題3-2](#例題3_2)

varによる変数宣言

元記事を表示

JavaSilver対策〜nullを極めよう〜

私自身、紫本・白本・黒本と合計1500ページも色々な問題を解いてきたわけですが、後半は正直かなり傾向がわかってきました。というのも、問題文とか答えの選択肢を見ただけで何を引っ掛けようとしている問題なのか大体わかるようになってきます。「これはオーバーライド問題だな」とか「これは抽象メソッド問題だな」「これはnullの理解を聞いてるな」などです。

そこで当初個人的に苦手だった部分や私と同じようにプログラミング初心者の引っかかりそうなところを抽出して紹介していきます。

今回の内容を理解しておけばもったいないところで点数を落とさなくて済むようになるので点数アップも期待できると思います。

それでは早速本題に入っていきましょう!

目次

[1. フィールドの初期値](#フィールドの初期値)
[2. 配列型の出力](#配列型の出力)
 - [要素指定なし-ハッシュ値の出力-](#要素指定なし-ハッシュ値の出力-)
 - [要素指定あり](#要素指定あり)
 - [要素数の確認](#要素数の確認)
 - [明示的なnullの代入](#明示的なnullの代入)
[3. 最後

元記事を表示

はじめてのMac Java環境構築

目次

[1. 今回使用したもの](#1-今回使用したもの)
2. [Homebrew](#rink2)
3. [JDK](#rink3)
3-1. [環境変数JAVA_HOMEの設定](#rink4)
3-2. [環境変数PATHの設定](#rink5)
4. [Tomcat](#rink6)
5. [MySQL](#rink7)
5-1. [PATHの設定](#rink8)
5-2. [バージョン変更時のエラー](#rink9)
5-3. [エラー解決](#rink10)
6. [Git](#rink11)
7. [エディタ](#rink12)
7-1. [Visual Studio Code](#rink13)
7-2. [Eclipse](#rink14)
7-3. [IntelliJ IDEA](#rink15)

1.今回使用したもの

OS

・MacOS Monterey-バージョン12.4-(M1 Mac)

Java

・openJDK17.0.3

エディタ

・Visual Studi

元記事を表示

java try-catch-finallyのreturnについて

***javaのtry-catch-finallyのreturnについて***

javaのtry-catch-finallyのreturnについて意外と見落としがちな部分について記事にしていきます。
このようなtry-catch-finallyがあったとします。![スクリーンショット 2023-01-18 7.13.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3087483/09cda797-a396-605a-4516-836b1a6c7417.png)
上記のコードは実行結果は***100***になります。
理由としてはtry文の15行目でRuntimeExceptionが発生してそれをcatch文で受け取りnumに100を代入してrerurnでnumを返してからfinallyでnum+=100されているからです。
***この時に24行目のreturn文は処理されずにtry-catch-finallyをそのまま抜けます。***

—-
考え方としては

try
↓例外発生した
catc

元記事を表示

Leetcode 926. Flip String to Monotone Increasing

https://leetcode.com/problems/flip-string-to-monotone-increasing/

## 難易度
### Medium

## アプローチ
### Prefix Sum, Brute-force

“`java
class Solution {
public int minFlipsMonoIncr(String s) {
int count = 0;
int result = 0;
for (char sChar : s.toCharArray()) {
if (sChar == ‘1’) {
count++;
} else if (count > 0 && sChar == ‘0’) {
count–;
result++;
}
}
return result;
}
}

元記事を表示

HashMap,TreeMapのcomputeIfAbsentでConcurrentModificationException

# 事の始まり
とあるプロジェクトでJavaのバージョン更新(8→17)を行っていた時のこと。
`java.util.HashMap`に対して`computeIfAbsent`を呼び出しているところで`ConcurrentModificationException`が発生するようになってしまいました。
この部分は旧バージョンから特にコードをいじっていないところ、かつ複数スレッドから参照されるものではなかったのでJavaのバージョンに起因するものでないかと考えました。

# 原因のコード
調査すると同じHashMapのインスタンスに対してcomputeIfAbsentが入れ子になっていることがわかりました。
簡単に書くと以下のようなコードです。
“`java
Map map = new HashMap<>();
map.computeIfAbsent(“k1”, tk1 -> map.computeIfAbsent(tk1, tk2 -> “value1”));
“`

実際には”k1″というキーに”value1″が入るだけなので入れ子になっている意味

元記事を表示

lombokで@EqualsAndHashCodeのInclude/Excludeが適用されない

# 問題
lombokでEqualsAndHashCodeを使えば自動的にhashCodeとequalsメソッドを実装してくれる。デフォルトでは、staticではなく、transientでないフィールドはすべて評価の対象となる。特定の対象のみを評価したい場合には、メソッドの前に下記のアノテーションを付ける。
“`java:対象コード
@EqualsAndHashCode
public class Data {
@EqualsAndHashCode.Include
String key;

int value;
}
“`
この場合は、keyのみを評価対象とするhashCodeとequalsメソッドができるのを期待する。しかし、これだとkeyもvalueも評価対象のものができてしまう。

下記のコマンドでlombokが生成しているコードを確認できる。
“`dosbatch:lombokの生成コード確認コマンド
java -jar lombok.jar delombok -p {対象のファイル名}.java
“`

先ほどのコードから生成されたコードを確認すると、
“`

元記事を表示

【Java】EclipseでOracle Databaseに接続する方法

# はじめに
今回は、JDBCを利用し、EclipseでOracle Databaseに接続する方法についてまとます。
大まかな手順と処理について記載しており、技術の詳細には触れていません。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
以下内容のアウトプット
– JDBCドライバの追加
– データベースへ接続と切断
– SQLの操作

# 開発環境
– Java 16.0.2
– JDK javac 10.0.1
– JDBC Oracle 12.1.0.1.0 JDBC 4.1 compiled with JDK7
– Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production
– Eclipse

# この記事の内容
1. 前提
2. チートシート
3. JDBCドライバの追加(準備)
4. データベースへ接続と切断(DBManager)
5. SQLの操作(DBへ問い合わせ)

# 1. 前提

元記事を表示

Exception classのgetMessage

getMessage()とprintStackTrace()の違い
ExecutorServiceを使用した場合に発生するExecutionExceptionのgetMessage()について

“`java
public class Outer {
public static void main(String[] args) throws InterruptedException {
SampleException se = new SampleException(“xxxxxx”);
System.out.println(se.getMessage());
method();
Exception ex = new Exception(“eeee”);
System.out.println(ex.getMessage());
Exception ex2 = new ExecutionException(se);
System.out.println(ex2.get

元記事を表示

Future interfaceでexceptionをキャッチする

f.get()したときに、ExecutionExceptionが発生する
ExecutionExceptionがsubmit()で発生したExceptionを保有している

“`java
class SampleException extends Exception {
public SampleException(String message) {
super(message);
}

public SampleException() {
}
}
public class Outer {
public static void main(String[] args) throws InterruptedException {
ExecutorService e = Executors.newSingleThreadExecutor();
Future f = e.submit(() -> {throw new SampleException(“exxxxx”);});
e.shut

元記事を表示

ExecutorService Runnable/Callable

Runnable:no return
Callable:return
Future interface#get methodでreturnを取得する

“`java
public class Outer {
public static void main(String[] args) throws InterruptedException {
ExecutorService e = Executors.newSingleThreadExecutor();
Runnable r = () -> {
System.out.println(“runnable”);
};
Callable c = () -> {
return 1;
};
Future f = e.submit(r);
try {
System.out.println(f.get());
} cat

元記事を表示

newScheduledThreadPool method

fixedthreadpoolでscheduledThread
“`java
public class Outer {
public static void main(String[] args) throws InterruptedException {
ScheduledExecutorService s = Executors.newScheduledThreadPool(2);
s.scheduleWithFixedDelay(() -> {
System.out.print(“a”);
},1,1,TimeUnit.SECONDS);
Thread.sleep(500);
s.scheduleWithFixedDelay(() -> {
System.out.print(“b”);
},1,1,TimeUnit.SECONDS);
Thread.sleep(10000);
s.shu

元記事を表示

CentOSでのjavaのインストール

サーバに「JDK11が必要」と言われて、バージョンを確認してみたら、これは何?
そこからJDK11をインストールして、切り替えてみた手順を記録に残しておきます。

自分が今後別のマシンで作業する時のためのメモですので、「そこ違いますよ」という箇所があれば、コメントいただけると助かります。
javaで開発しているのではなく、「ツールを動かすためにJDKをインストール必要があった」というレベルの作業です。

javaのバージョン一覧は[Oracle Java SE Supportロードマップ](https://www.oracle.com/jp/java/technologies/java-se-support-roadmap.html)で確認しました

### やったこと
* バージョンの確認
* JDK11のインストール
* バージョンの切り替え

### バージョンの確認
“`
$ java -version
openjdk version “1.8.0_312”
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 6

元記事を表示

Spring Thymeleaf(HTML)のFormとSpring(Javaのデータクラス)のつなげ方

・はじめに

 この記事においては、会員情報の送信などユーザーに何かデータを送信してほしいときによく使うHTMLのフォームとそのFormで送られる情報をJavaで受け取る方法を書いていきます。

・HTMLの設定

“`HTML:createAccount.html


~省略~

会員登録




元記事を表示

Java 教材 勉強

https://github.com/kounosu/java

元記事を表示

勉強

https://github.com/kounosu/java_student

元記事を表示

【順次更新】Minecraft Modding(Forge 1.19.2)を頑張ってみた。

こちらにて、順次更新しております。

https://zenn.dev/cyber_hacnosuke/books/minecraft-modding

# 現在更新されている内容
## [はじめに](https://zenn.dev/cyber_hacnosuke/books/minecraft-modding/viewer/intro)

– この本について
– 私について
– 執筆動機
– 本書の対象
– Minecraft Forge について
– MODについて詳しく
– 更新について
– 参考文献など

## [環境構築](https://zenn.dev/cyber_hacnosuke/books/minecraft-modding/viewer/env)

– エディタの準備
– MDKの準備
– Javaの準備
– MOD設定
– Javaをいじる
– 実行してみる

## [Item(基本編)](https://zenn.dev/cyber_hacnosuke/books/minecraft-modding/viewer/basic-item)

– Itemとは

元記事を表示

OTHERカテゴリの最新記事