JAVA関連のことを調べてみた2021年09月12日

JAVA関連のことを調べてみた2021年09月12日
目次

(JAVA勉強用メモ)3. 演算子・判定構造

## 数値リテラルの型変換
大きな範囲の値を小さな変数に代入するときは、明示的なキャストが必要。
(数値リテラルはデフォルトで特定の型をもっており、整数は`int`型、小数は`double`型が使用される。)

“`java
int i = 10;
short a = (short)i; //『大』を『小』に代入

long l = 10L;
int b = (int)l; //『大』を『小』に代入

double d = 10.0;
float c = (float)d; //『大』を『小』に代入

long d = 10; //『小』を『大』に代入するのは問題ない
“`

ただし、`byte`型や`short`型に整数リテラルを代入する場合、
その値が型の範囲に収まるのであればエラーは発生しない。

“`java
byte a = 127; //『大』を『小』に代入しているが、127はbyte型の範囲内なのでOK
byte b = 128; // 128はbyte型の範囲外なのでNG(コンパイルエラー)
byte c = (byte)128; // 型の範囲外でも、キャストし

元記事を表示

Spring Boot + Excel Upload + CSV出力

#PostmanでエクセルをPOSTし、Spring側でCSV出力

末尾の参考サイトのソースをもとに、PostmanでExcelをPOSTし、受信側(spring boot)でCSVライブラリの「OrangeSignal CSV」を利用してCSV出力した。
CSVのヘッダに日本語の列名を指定するところで物凄くつまったので、サンプルソースを記載する。

“`java
@Service
public class ExcelService {
@Autowired TutorialRepository repository;
public void save(MultipartFile file) {
try {
List tutorials = ExcelHelper.excelToTutorials(file.getInputStream());
repository.saveAll(tutorials);
// OrangeSignal CSVを利用してCSV出力する。
CsvManager csv

元記事を表示

NDK at /Users/user.name/Library/Android/sdk/ndk/XX.X.XXXXX did not have a source.properties file エラーが発生する

# やりたいこと
Androidアプリをビルドしたい。

“`
./gradlew build
“`

# エラー文
以下のエラーが発生。

“`
❯ ./gradlew build

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ‘:renderscript-toolkit’.
> com.android.builder.errors.EvalIssueException: NDK at /Users/user.name/Library/Android/sdk/ndk/21.3.6528147 did not have a source.properties file

* Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug

元記事を表示

Java Silver 5章 クラス定義とオブジェクトの生成・使用

#クラスとインスタンス
###クラスの宣言
【装飾子】 class クラス名 {}
 コンパイラして作成されるクラスファイルは定義したクラス名が付く
 インスタンス化して初めてメモリ領域が確保される
###メンバの宣言
メンバはクラス、またはオブジェクトが持つ変数、メソッドを指す
![スキャン 2021-09-09 8.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601137/4a2ad372-6e91-ec6e-af4f-97332e896d0c.png)

メンバ変数の種類
・インスタンス変数:オブジェクト毎に存在する変数
・static変数   :クラスに対して存在する変数

**インスタンス変数の宣言**
【装飾子】 データ型 インスタンス変数名;

**メソッドの定義**
【修飾子】戻り値の型 メソッド名(引数リスト){}

###インスタンス化

データ型 変数名 = new クラス名();

左辺で変数を宣言(変数はあくまで参照先を示すだけの参照型データ)
右辺で参照先である

元記事を表示

LINE BOT APIのreplyMessageでたまにInvalid reply tokenが発生する

## 概要
[line-bot-sdk-java](https://github.com/line/line-bot-sdk-java)を使ってLINE BOTを作ったが、たまにInvalid reply tokenが発生し返信できないことがある。

この記事ではJavaの場合の解決方法を書くが、他の言語でも原因は同じである。
ちなみに、Herokuの無料hobbyブランを使っている。

## エラー内容

> ERROR 4 — [io-33152-exec-3] c.l.b.s.b.s.LineMessageHandlerSupport : InvocationTargetException occurred.
Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.linecorp.bot.client.exception.BadRequestException: Invalid reply token : ErrorResponse(requestId=xx

元記事を表示

[Kotlin/Java] KotlinのデータクラスをJava で利用するには

## 記事でわかること
KotlinとJavaが併存するプロジェクトでJavaのクラス内でKotlinのデータクラスを利用する方法を記載します。

## 背景
現在関わっているサーバーサイドのプロジェクトではJavaからKotlinへの移行を行っています。
新規クラスはKotlinで記述することで少しずつKotlinへの移行を進めています。

その際にKotlinのデータクラスをJavaから呼び出す際にどうすればいいのだろうと少し迷ったので、備忘のために記載します。

## JavaでKotlinのデータクラスを利用するには
結論から言うと Kotlinのクラスを利用側のJavaクラスでimportして、普通に`new`することで利用できます。

“`kotlin
data class User(
val id: Int,
val name: String,
val mailAddress: String
)
“`

例えば、上記のKotlinのデータクラスをJavaで利用する場合には下記のように記述します。

“`java
import User;
public User c

元記事を表示

(JAVA勉強用メモ)2. データ型と文字列操作

## リテラル

### 真偽値
– boolean

### 文字
– char

“`java
char a = ‘a’; // 文字は”
String b = “a”; // 文字列は””

char c = ‘\u30A2’; // Unicode(『\u』+『16進数4桁』)
char d = 65; // 0 ~ 65535の数値
“`

### 整数
– byte … 8ビット
– short … 16ビット
– int … 32ビット
– long … 64ビット

“`java
int a = 0b10010; // 2進数
int b = 0320560; // 8進数
int c = 0x10b2c; // 16進数

int d = 123_456_789; // 桁区切りの_(アンダースコア)は、先頭・末尾・記号の前後以外で使用できる
“`

### 小数
– float … 32ビット
– double … 64ビット

## 識別子
変数やメソッド、クラスなどの名前

– 予約語は識別子に使えない
– 使える記号は『_』(ア

元記事を表示

java swingでテトリス作ってみた(外部ライブラリなし)

javaを初めて約半年なので、何か作ってみたいなーと思い作りました。
……テトリスとして最低限の機能しかないけど初心者なので多少はね?
コードも見れなくはないと思いたい。

java version 16
外部ライブラリは使ってないのでそのまま使えると思います。

https://github.com/o7r/Tetris.git

元記事を表示

(JAVA勉強用メモ)1. JAVAの基礎基本

## パッケージ
クラスなどの名称が重複して、予期せぬ不具合が発生することを防ぐための仕組み。使用目的は3つ

– 名前空間を提供して、名前が重複することを防ぐ
– アクセス修飾子と組み合わせてアクセス制御機能を提供する
– クラスを分類する

“`java
package sample; // package宣言はソースコードの先頭行に書く

import aaa.*

public class Test { }
“`

## javaコマンド
javaコマンドで実行できるのは次の3つ

– mainメソッドをもつクラスファイル(.class)
– jarファイル(.jar)内のメインクラス
– モジュールに含まれるメインクラス

“`bash
$ java Main
“`

## ソースファイルモード
javacコマンドでのコンパイルなしでソースファイルを直接実行できる。(Java SE 11以降)
※メモリ上でコンパイル後のコードを扱っており、コンパイル自体を行っていないわけではない。

“`bash
$ java Sample.java
“`

元記事を表示

【JSON】jackson で JSON化したくないプロパティをプログラムで設定

## まえがき
・Jackson を使ってオブジェクトを JSON 形式に変換
・アノテーションを使わない(使えない)場合
・具体的には “beanClass” を除外したかった

## 環境
Java 8
jackson 2.6

## ObjectMapper で設定
“`sample.java
ObjectMapper mapper = new ObjectMapper()
// … 設定
mapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector() {
private static final long serialVersionUID = -1L; // <- 適宜設定 @Override public boolean hasIgnoreMarker(final AnnotatedMember m) { List exclusions = Arrays.asList(“beanClass”);
return exclu

元記事を表示

Springbootでhelloworldを表示(InteliJ利用)

私はプログラミングの勉強を始めてまだ1週間も経ちませんが、メモがわりに投稿します。
少し長い説明になってますが、飛ばしているようなステップは無く、下記の通りにやればできるはずだと思います。

対象読者:

* Javaの超初心者(1ヶ月以内)
* コードの内容は分からないが、とりあえずブラウザ上に「HelloWorld」を表示させてみたい方
* InteliJで下記のYoutubeサイトを見たがよく分からない人

内容に関しては、以下のInteliJが上げているYoutubeサイトの内容ほぼそのままです。

#目次
1.プロジェクトの新規作成
2.Springbootアプリの実行(test)
3.HTTP Responseチェックの作成
4.Spring Controllerの作成
5.ブラウザへのHelloworld表示

#1.プロジェクトの新規作成
##1-1.New Project
InteliJを開き、「New Project」ボタンをクリック
![1.png](https://qiita

元記事を表示

[備忘録]バッチ処理的なものを作成

##目的
初めてバッチ処理のようなものを作ったので備忘録として記述。
挙動は以下の通り。
・CSVファイルからデータを受け取り、DBへインサート。
・DBの内容を受け取り、CSVファイルとして保存。

##用語
Q . バッチ処理とは?
A . 任意のタイミングでデータの処理を自動で行うプログラムのこと。

Q . CSVファイルとは?
A . 「,」で区切られたテキストデータのこと。

##コード
・CSVファイルからデータを受け取り、DBへインサート。

この挙動を実現するコードが以下の通り。

“`InsertItemCSV.java
package com.example.common;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.

元記事を表示

[Java] Long型とlong型の比較メモ

Javaで社内システムを作ってるときに、Long型の値とlong型の値を「==」で一致判定しようとしたら一致しなくて詰まったのでメモ。まだまだ未熟なエンジニアなので許してください\_m(-_-)m\_

#プリミティブ型の数値と参照型の数値をそのまま比較したいときは?
参照型のequalsメソッドを使いましょう。

“`java:compare.java
Long num1 = 1L;
long num2 = 1l;
if(num1==num2) { //1
System.out.println(“true”);
} else {
System.out.println(“false”);
}

if(num1.equals(num2)) { //2
System.out.println(“true”);
} else {
System.out.println(“false”);
}
“`

「1」のような比較を行うと、必ず**false**になりますが、「2」のような比較を行えば

元記事を表示

[paiza]スキルチェック見本問題 Java 一番小さい値 (paizaランク D 相当)

初めに

今回はpaizaラーニングの以下のスキルチェック見本問題に挑戦します。
見本問題なのでコードの公開は自由です。

一番小さい値 (paizaランク D 相当)

https://paiza.jp/works/mondai/skillcheck_sample/min_num

“`
問題:
5 つの正の整数が入力されるので、最も小さい数字を出力して下さい。

入力例1
10
12
4
8
46

出力例1
4
“`

解答コード

以下が、正解のコードですが、なかなかできませんでした。

“`java:
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//100までの数字なので、answerに最大値を設定しておく
int answer = 101;
//数字は5つ与えられるので、iは0-4までの変化をする
for(int i = 0; i < 5; i++){ //

元記事を表示

VCに誰かが入った時に通知してくれるbotを作る【Discord/Java】

## はじめに
身内用に誰かがDiscordのVCに入ったときに通知してくれるbotを作ったので覚え書き。

## 環境
– Java
– Gradle
– Javacord

## Javacordの導入
[Javacord](https://github.com/Javacord/Javacord)はDiscord botをJavaで開発するためのライブラリです。
以下のようにgradleファイルに記述します。

“`gradle:gradle.build
repositories { mavenCentral() }
dependencies { implementation ‘org.javacord:javacord:バージョン’ }
“`

## Discord botアカウントの設定
https://qiita.com/1ntegrale9/items/cb285053f2fa5d0cccdf

こちらとかを参考にしつつbotを作成する。

## ログインする

“`java
DiscordApi api = new DiscordApiBuilde

元記事を表示

「JavaはOSに依存しない」ちゃんと説明できるか俺?

# はじめに

Javaに関することは一通り他人にちゃんと説明できる「つよつよJavaエンジニア」になるための第一歩の記事(そんなこと知らんがなって話ですよねすみません)

当たり前のことなんだけど、改めてOUTPUTして整理しやす

# まず結論

OSに依存しない理由は「**実行環境(JVM)にてバイトコードをOSに合わせた機械語に変換する**」から

# 細かくみていこう

プログラミング言語は2種類に分かれる。

「コンパイラ方式」と「インタプリタ方式」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653955/ebac1a2e-2ebd-9ff7-127a-26c0a3615439.png)

インタプリタ方式は、ソースコードを機械語に変換しつつ実行する。
コンパイラ方式は、ソースコードを事前に機械語に変換してから、一気に実行する。

違いは「事前に機械語に変換するかどうか」だ。

この2つ。事前に機械語に変換するかどうかで↓のような差が生まれる。
![image.png](

元記事を表示

mockmvcでUnparsable JSON stringが発生する & Response Bodyが常に空になる

SpringBoot MockMvcでControllerの単体テストを書いているときに上記のエラーが発生して1時間程度無駄にしたので備忘録です。

# 概要
mockmvcで以下のようにレスポンス値を確認するようなコードを書いていました。
(簡略化しています。)

“`java
Sample sample = new Sample(“sample”);

mvc.perform(get(URI)
.param(“userId”, “1”)
.accept(MediaType.APPLICATION_JSON)
).andExpect(status().isOk())
.andExpect(content().json(JsonOutput.toJson(sample)));
“`
実際にはjson化できているにもかかわらず、以下のエラーが出てしまい頭を抱えてしまいました。

“`
Condition failed with Exception:
org.json.JSONExcep

元記事を表示

Couchbase Server Java SDK解説: エラー処理の基礎

## はじめに

エラーは避けられません。そのため、SDKには、(一時的な)障害が発生した場合でも、アプリケーションを可能な限り最高の状態に保つという1つの目標に焦点を当てた非常に広範なエラー処理および再試行機能があります。
当然ながら、アプリケーションドメインを理解していないため、SDKだけでは、必要なすべての決定を下すことができません。ほとんどの場合、透過的な再試行が最善の選択になり得ますが、場合によっては、すぐに失敗して別のデータソースに切り替える必要があります。

ここでは、エラー処理の基礎について記します。

別の機会に、高度なエラー処理メカニズム、についても整理したいと考えています。

## エラー処理の基礎

次の基本事項は、SDKが再試行の決定を行う方法とエラーがどのように表示されるかを理解するのに役立ちます。

### リクエストのライフサイクル
次の画像は、リクエストライフサイクル中の高レベルのフェーズを示しています。

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

元記事を表示

[Java基礎⑥]配列 複数行を配列に格納/配列をランダム出力 split・hasNextLineメソッド

初めに

前回はJavaの基本的な配列を学習しましたが、
今回は応用編です。
決まった文字で区切って配列に格納する split と、
複数行を読み込むhasNextLineメソッドを学習しました。

split カンマで分割して配列に格納する

“`java:
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String data = sc.nextLine();
String[] array = data.split(“,”);
System.out.println(array[0]);
}
}
“`

標準入力で、「ごはん,おかか,梅干し」と打つと、「ごはん」が出力されます。

以下を追記すると、配列の中身を一つずつ出力できます。

配列の中身を取り出す

元記事を表示

サーブレットとJSPのキホンのキ

# 記事の目的
サーブレットとJSPについて入門書を一通り読みましたが、数ヵ月もして久しぶりに触れると一切思い出すことができず、悲しくなりました。今回はそんな悲しい時にさらっと確認して元気になりたいという思いから、超基本的な内容を記事にまとめてみました。

# 目次
1. はじめに
1. サーブレットとは
1. JSPとは
1. サーブレットとJSPの役割
1. 参考文献

## はじめに
サーバサイドプログラミングの仕組みを実現する技術はいくつかあるが、Javaで開発する場合は、「サーブレット」と「JSP」を使用する。
JavaでWebアプリケーションを開発するには、サーブレットコンテナを持つアプリケーションサーバが必要。
(アプリケーションサーバの機能を提供するソフトウェアのことを「サーブレットコンテナ」、または単に「アプリケーションサーバ」と呼ぶこともある)

## サーブレットとは
サーブレットはJavaを使ってサーバサイドプログラムを作るための技術。
サーブレットクラスというクラスを開発することで、アプリケーションサーバ上でそれらを実行できる。
サーブレットクラスはブラウ

元記事を表示

OTHERカテゴリの最新記事