JAVA関連のことを調べてみた2022年08月11日

JAVA関連のことを調べてみた2022年08月11日

ByteBufferの単体試験で末尾の0Byte部分を無視する

## これは何?
* `java.nio.ByteBuffer`を用いてString生成する処理にて、部品化したクラスの単体テストで困ったことの解決

## 困りごと

“`NG.kt
@Test
fun hoge() {
val byteBuffer = ByteBuffer.allocate(5) //Byte範囲割り当て
byteBuffer.put(“あ”.toByteArray()) //ByteArray追加
byteBuffer.flip()
assertEquals(“あ”,String(byteBuffer.array())) //これでいけると思ったのだが…
}
“`

↓を参考に、ByteBuffer->ByteArray->Stringの順で変換すればassertできるのでは?と思って書いたところ、テスト失敗しました。

Java で ByteBuffer を String に変換する

![スクリーンショット 2022-08-11 0.18.32.png](ht

元記事を表示

Javaの学習 ~データ型~

Javaのデータ型には、プリミティブ型と参照型の2つがあります。
データ型・・・データの種類を表すもの。コンピュータにデータの扱い方を指定するために記述する。

### プリミティブ型
数値、真偽値、文字を扱うデータ型です。基本型とも呼ばれます。
| 整数型 | |
| —- | —- |
| byte | 8ビット整数(-128~127) |
| short | 16ビット整数(-32768~32767) |
| int | 32ビット整数(-2147483648~2147483647) |
| long | 64ビット整数(-9223372036854775808~9223372036854775807)

| 論理型 | |
| —- | —- |
| boolean | 真偽値(true/false) |

↑※C言語と違い、「bool」ではなく「boolean」であることに注意!

| 浮動小数点数型 | |
| —- | —- |
| float | 32ビット単精度浮動小数点

元記事を表示

多重ループからの脱出(continueとbreakの違い)

# はじめに
ネストされたfor文の中でcontinueとbreakの挙動の違いを整理しました。
JavaScriptで記載していますが、Javaでも同様に記載できます。

# 目次
[1. サンプル](#1-サンプル)
[2. continue](#2-continue)
[3. break](#3-break)
[4. さらに深いループ](#4-さらに深いループ)
[5. ラベルを使用したcontinue](#5-ラベルを使用したcontinue)
[6. ラベルを使用したbreak](#6-ラベルを使用したbreak)
[7. まとめ](#7-まとめ)

# 1. サンプル
次のような簡単な配列の多重ループを例にします。
“`js
const loopA = [1, 2];
const loopB = [1, 2, 3];

for (const a of loopA) {
for (const b of loopB) {
console.log(`A${a}-B${b}`);
}
}

// 出力結果↓↓
// A1-B1
// A1-B2
/

元記事を表示

マージしたチャートデータからテクニカル指標を計算する(Pivot編)

# はじめに

前記事
1. [auカブコム証券のkabuステーションREST APIをcurlで叩く](https://qiita.com/hiuchida/items/fcdd3d6ff921b386a37e)
2. [auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く](https://qiita.com/hiuchida/items/73b7fc846d4c9501ef2f)
3. [auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く](https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df)
4. [auカブコム証券のkabuステーションREST APIの残高照会から先物OPのdeltaを計算する](https://qiita.com/hiuchida/items/6e0d8d5114192bec1632)
5. [auカブコム証券のkabuステーションREST APIのテスト用モック

元記事を表示

Spring Boot REST Controller でNot Found 404エラーの対処

## 概要
何となくRest Controllerを実装したところ、思わぬところでエラーが発生した。アノテーションでパスの指定方法を誤っていたため、下記に記載するコードの通り修正を行った。

## エラー内容

**Whitelabel Error Page**
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Aug 09 23:41:23 JST 2022
There was an unexpected error (type=Not Found, status=404).
No message available

## エラー発生時
“`java
package com.example.demo.app.api;
import com.example.demo.repository.ZooDao;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.f

元記事を表示

オセロをJavaで簡易的に記述した

## はじめに
超簡易的なので、プレイヤーは先攻のみです。
また、作ったNPCはweb上で無料でできるオセロの初級に負けます。クソ雑魚です。
何か間違っているんでしょうけどちょっと私にはわからなかったので、是非改良してください。

## ざっくりとした説明
まずは、作ったクラスについて説明していきます。

#### Othelloクラス
オセロの盤面の生成やひっくり返すメソッド、指定された場所に置けるか判定するメソッドなどをこのクラスに記述しました。
なお、Othelloクラスのmainメソッドに入力の受け取りなどを記述してあるので`java Othello`で実行ができます。

#### AIクラス
NPC用のクラスです。Othelloクラスから今の状況を表すオブジェクト(Othelloクラス)を渡して、それを元に置く場所を決めてOthelloクラスのメソッドを呼び出します。
今はランダムに選ぶNPC1、今置ける場所で一番ひっくり返せる手を選ぶNPC2、盤面に優先順位を付けてそれを元に選ぶNPC3、相手がNPC3だったときに一番最善手を選ぶNPC4を実装してあります。弱いのは多分盤面

元記事を表示

ReactNativeでスクリーンショットを禁止する

詳細については後ほど記載していく。
先に結論のみ。

## iOS
1)スクリーンショット禁止処理を実装(UIViewやUIWindowのExtention)
2)AppDelegate.mや任意の処理で呼び出し
[参考](https://stackoverflow.com/questions/18680028/prevent-screen-capture-in-an-ios-app)
“`swift
extension UIWindow {
func makeSecure() {
let field = UITextField()
field.isSecureTextEntry = true
self.addSubview(field)
field.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
field.centerXAnchor.constraint(equalTo: self.centerXAnc

元記事を表示

Javaの学習 ~javaコマンド~

### javaコマンドとは
javaプログラムを実行するためのコマンド。
javaコマンドで実行できるものは、

①mainメソッドを持つクラスファイル
②jarファイル内のメインクラス
③モジュールに含まれるメインクラス

の3つです。

※jarファイルとは・・・javaファイルを圧縮した、拡張子が「.jar」のファイルのこと。
※モジュールとは・・・クラスを束ねるパッケージをさらに束ねるもの。

### javaコマンドの構文
クラス名の後に続く引数は、「起動パラメータ」や「コマンドライン引数」と呼ばれます。
“`
//引数は必要な時のみ指定する
$java 完全修飾クラス名 引数
“`
(例)
“`
//下記のPracticeクラスを実行
$java Practice

//結果
練習
“`

“`java
public class Practice {
public static void main(String[] args) {
System.out.println(“練習”);
}
}
“`
### ソースファイルモード
J

元記事を表示

ABC263A~Dの解答[Java]

## はじめに
A~Cはコンテスト中に、Dは解説を見て解きました。Dまで解きたかったな・・・。

では、見ていきましょう。

## A – Full House
問題文は[こちら](https://atcoder.jp/contests/abc263/tasks/abc263_a)

A~Eをそれぞれ見ていっても良いですが、ソートして参照した方がなんとなく楽かなと思いました。
A~Eを配列に入れてソートし、card[0]==card[1]かつcard[3]==card[4]を満たしていて、かつcard[2]がcard[1]かcard[3]と等しければフルハウスになります(全部同じケースは無いと制約にあるのでこれで良い)。

“`A.java
class Main{

static Library System = new Library(java.lang.System.in,java.lang.System.out);

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

//A~Eを格納&ソート
i

元記事を表示

拡張for文ってわかりにくいよね

拡張for文って見た感じ意味が分らない(for文の方がわかりやすい)、謎いからよく分からないまま放置していました。重い腰を上げ、学習したらなんとなく理解できたっぽいです。備忘録として残します。

## 拡張for文とは
配列を取り出すためだけに生まれた、そんな存在。
配列の個体たちを1つずつ取り出したら、自動的に繰り返し処理を終了する。

## 構文
~~~Java
for( データ型 一時変数 : 集合 ){
繰り返し処理
}
~~~

一時変数=繰り返している間だけ使用する変数
集合=値を取り出したい配列

## コード例
~~~Java:拡張for文
public class kakuchoFor {
public static void main(String[] args) {
int[] arry ={10,20,30};
for (int i : arry) {
System.out.println(i);
}
}
~~~
~~~:実行結果
10
20

元記事を表示

とりあえず、JavaからKotlinへの一歩

# 背景
最近Springをやる機会あり、Kotlinをやりました。
Javaよりかなり便利ですと実感しましたので、自分みたいな人にCheatSheetみたいなメモを共有できたらいいかと思います。

# ログ
– Java
“`java
System.out.print(“Hello World!”);
System.out.println(“Hello World!”);
“`
– Kotlin
“`kotlin
print(“Hello World!”)
println(“Hello World!”)
“`
# 変数と定数
– Java
“`java
String name = “これは変数”;
final String name = “これは定数”;
“`
– Kotlin
“`kotlin
var name = “これは変数”
val name = “これは定数”
“`
# 空判定
– Java
“`java
// その他、isNullとかの関数も使える
if (text != null) {
int length = text.length();
}

元記事を表示

ThymeleafからJavaのstaticメソッド等を呼び出す

こんな感じ
“`html
< th:block th:text="#{${T(com.example.Hoge).fuga()}}" />
“`

元記事を表示

SAP Cloud SDKを使った開発

この記事は [chillSAP 夏の自由研究2022](https://note.com/chillsap/n/n62740563aee0) 8/8の記事として執筆しています

# はじめに
SAP BTP上でUI5のApplicationを作成時、DBへの登録処理等でサーバサイドのアプリケーションの開発も必要になることが多いかと思います。特にJavaのアプリケーションを開発する際に便利なSAP Cloud SDK等、Javaのライブラリについて一部紹介させていただきます。

# ログインユーザの情報を取得
IAS(Identity Authentication Service) でユーザ管理をし、IAS上で管理されているユーザID、メールアドレス、従業員番号等を
サーバサイドのJavaアプリケーションで取得する場合に、com.sap.cloud.security.xsuaaのライブラリを使用し、Tokenから情報を取得することができます。

#### pom.xmlへの記載例

“`

com.sap.cloud.security

元記事を表示

Javaの学習 ~エントリーポイント~

### エントリーポイントとは
複数のメソッドが定義されている際に、どのメソッドから処理を始めるべきか決まっていなければいけません。
エントリーポイントとは、その一番最初に処理をするメソッドのことです。

### エントリーポイントのメソッドの定義
定義方法は、よく見かける下記のコードです!
※「args」は変数名の宣言にあたる為、別の名前に変更可能。
“`java
public static void main(String[] args) {

}
“`
### エントリーポイントのルール
・publicであること
・staticであること(インスタンスを作らなくてもよい)
・voidであること(戻り値は戻せない)
・メソッド名がmainであること
・引数はString配列型であること(可変長引数のString型でもよい)

こんなに細かくルールがあるからいつも同じ書き方なんですね…

##### 可変長引数のString型とは
可変長引数とは、引数の数が決まっていない引数のこと。
“`java
public static void main(String… args

元記事を表示

IT未経験で「Java Bronze」合格を目指します!

IT未経験で「Java Bronze」合格を目指します!

【概要】
・まきさん(仮名)と申します。
・30代前半で未経験からシステムエンジニアに転職を目指しています。
・すこしでも有利になればと思い、最初Java Silverを受験しましたが、正解率40%弱で完敗。。。
 →8/7(日)に下位資格であるJava Bronzeを受験しましたが、正解率51%でこちらも完敗。。。
・Java Bronzeは少なくとも受からないとまずいと思い、9月末までに再受験予定。
・毎日、勉強で気づいたことなどを投稿予定です。

——————————————————————————————-

【勉強1日目】
■オーバーライドとオーバーロードの違い

<オーバーライドのルール>
・戻り値、メソッドのシグネチャ(メソッド名、引数の型、数、順番)がすべて同じ。
・アクセスレベルが親クラスと同じか緩い制限であること(例:親クラスがprotectedなら子クラスはpublicかprotecte

元記事を表示

Javaの学習 ~import~

前回に引き続き、Javaの学習まとめです。

### importとは
importを宣言することで、前回学習したようなpackageのクラスを簡単に利用できるようになる他、
Javaに元々用意されているパッケージ(クラスライブラリ)を利用できるようになる。

### importの宣言方法
この宣言をすることで、ソースコードをわざわざ完全修飾クラス名で利用しなくてもよくなる。
“`java
import パッケージ名.クラス名;
“`
クラスライブラリの場合も宣言方法は同じです。
アスタリスクを使うことで、一度に複数のクラスをインポートすることができます。
※サブパッケージであるjava.util.regexパッケージやjava.util.loggingパッケージに属するクラスはインポートできません!

また、頻繁に利用されるjava.langパッケージはインポート宣言を省略することができます。
“`java
import java.util.Scanner;
import java.util.Date;
import java.lang.String; //省略可
impor

元記事を表示

[Apache Hop] ローコードでMQTT送受信してみた

# 紹介したいこと
– ローコードでMQTTを送受信する方法を紹介します。
– HopにはMQTTをPublish, Subscribeする部品がある。
– HopでのETLの定義の雰囲気を伝えたい for Beginner。

# 対象者
– Apache Hop (データ統合プラットフォーム) 、ETLを試してみたい方。
– ローコードでMQTTを送受信してETL処理に連携させたい方。

# 前提
– Dockerを動かすことができる(MQTT Broker)。
– Apache Hopをインストールしている、HOP GUIを操作できる、簡単な変換処理を定義できる。
– MQTT部品は標準部品に含まれてない。EXTERNAL PLUGINSのため、以下のサイトの手順沿ってビルドして配置する必要がある。

https://hop.apache.org/manual/latest/plugins/external-plugins.html#_transforms

# 全体構成
MQTTの送受信の動きを確認するため、以下の全体構成、データの流れを考えて、試してみた。
![image.p

元記事を表示

ABC262A~Dの解答[Java]

## はじめに
Dはコンテスト後に解いたものですが、実行時間的にもメモリ的にもあまりよろしくないのでそのうち追記しようかなと思います(反面教師的な感じで解説はしておく)。

なお、LibraryクラスのBufferedReaderをSimpleScannerにしたのでご注意ください。

では見ていきましょう。

## A – World Cup
問題文は[こちら](https://atcoder.jp/contests/abc262/tasks/abc262_a)

4で割ったあまりが2であることと現在が1月で大会は6月に開催されることを考えると、

・Y%4=0の時、Y/4×4=Yなので、Y+2=Y/4×4+2に開催される。
・Y%4=1の時、Y/4×4=Y-1なので、Y+1=Y/4×4+2に開催される。
・Y%4=2の時、Y/4×4=Y-2なので、Y=Y/4×4+2に開催される。
・Y%4=3の時、Y/4×4=Y-3なので、Y+3=Y/4×4+6に開催される。

の四種類を考える必要があります。ここで、Y%4=3の時だけ6=4+2加算する必要があることに着目すると、事前にYに1を加

元記事を表示

スッキリわかるサーブレット&JSP入門で引っ掛かった点

# 概要
タイトル通り、環境構築などで引っ掛かった点と解消法をまとめます。
環境構築方法等は公式WEBで無料公開されています。非常にありがたい!

Web付録

# パースペクティブにJava EEがでない

pleiades 2022版(最新)ではなく2021版をインストールすれば解決

https://mergedoc.osdn.jp/

最新版は使えないのね(悲しい)

# サーバーに追加または除去できるリソースがありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/405484/5d9310de-28c2-21e5-f6f9-4ddc961e0d1f.png)

サーバーにプロジェクトを追加することができない問題。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

【Java】任意文字列でラブ注入

# はじめに

本記事ではTwitterで見かけた上記の問題を解くプログラムをご紹介します。

ただし、普通にJavaで解く方法については既に先駆者様がいらっしゃる([こちらの記事](https://qiita.com/na0y/items/1f5ed3ce215297d70d3a))ので、今回は任意の文字列を受け取るメソッドを実装し、上記の問題を解いてみました。

# 実装の方針
上記の問題を以下のように変換します。

> 文字列の配列 `wordList` からランダムに要素を標準出力し続け、『その並びが文字列 `text` を `n` 回繰り返したもの』に一致したときに「`lastWord`」と標準出力して終了するプログラムを作成せよ

すなわち、「ドドスコスコスコ」のような具体的な文字列ではなく、任意の文字列を受け取って動作するメソッドを実装し、そこに「ドドスコスコスコ」などのパラメータを渡すことで問題文の動作を実現します。

なお、以下のような入力は考慮しない

元記事を表示

OTHERカテゴリの最新記事