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

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

JavaにおけるfinalとImmutableの違い

#JavaにおけるfinalとImmutableの違いって?

最近GuavaのImmutable Listを使う機会があったのですが、ふとImmutableとfinalの違いってなんだ?と疑問になって調べてみました。

##Immutableの特徴
・オブジェクトの値そのものを変更することを禁止
・参照先を変更することは可能

##finalの特長
・参照先の変更をすることを禁止
・変数の値そのものを変更することは可能

では、JavaではImmutableで代表的なStringとMutableなStringBuilderを使って検証してみます。

“`Java
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
final String str = “apple”;
final StringBuilder sb= new StringBuilder(“ringo”);

str = str + “ringo”; //コンパイルエラー。Strin

元記事を表示

Java開発リンクまとめ

#Java

Java sample
http://java2s.com/

http://www.tohoho-web.com/

socket
http://manabu.quu.cc/up/6/e62tcpjava.htm

Listener
https://docs.oracle.com/javase/tutorial/essential/io/notification.html#try
https://www.javaworld.com/article/2077351/java-se/events-and-listeners.html
http://www.vogella.com/tutorials/DesignPatternObserver/article.html

JNI
https://blog.goo.ne.jp/xmldtp/e/75720fd5daebcfd6d6b77292048f6345

DB
https://ts0818.hatenablog.com

元記事を表示

メソッドを解説してみた

## 初めに
– この記事を開いてくれてありがとうございます.
– 教え方が下手な自分がなんとかまとめたものなので,多めに見てください.
– 要望,指摘あればどんどん書いてください.
– それでは,長らくのお付き合いお願いします.

## そもそもメソッドとは
#### 10人のテストの平均点、最高点、最低点を表示してください。
“`java=Question_11.java
package Question_04;

public class Question_11 {
public static void main(String[] args) {
int[] english = {98,80,78,85,65,86,90,94,70,92};
int high = english[0];
int low = english[0];
int avg = 0;
for(int i = 0;i < english.length;i++) { if(high <= english[i]) { high = english[i]; }else i

元記事を表示

【Eclipse】初心者でも最初に覚えた方が良さそうなショートカット厳選5つ【Mac】

###いろいろショートカットはあるけど、まずはめちゃくちゃ頻度が高いものをマスターしてから少しずつ数を増やす

####まずは5つ

ショートカット|説明
:–|:–
command + D|行の削除
option + ↑↓|行ごと移動(複数行可)
command + /|コメントアウト
control + .|単語補完
option + command + R|同じ変数名を同時編集(リファクタリング)

まあこのくらいを慣れて指が勝手に動くようになったら次のショートカットを選んで練習という流れが個人的には良いかと。

**コメントアウト**はだいたいのエディタで同じショートカットキーが割り当てられているっぽいです。

**行の削除**も同じものが多いと思いますが、VSCodeは違ったかと。。。

**行ごとの移動**も他のエディタでも同じだと思います。

**いきなりたくさん練習しても、考えてしまうのでとりあえず片手くらいの数を無意識にできるようになってから次にいこう!**

ショートカットキーは考えて使うものではないですし。

####単語補完でtypoを減らす
個人的には変

元記事を表示

Javaの型変換(StringとかintとかDateとかCalendar他)

普段開発とかやってると、ぽろりと忘れてたりするので忘備用。
思いつき次第、加筆修正。

・[文字列⇔数値](#文字列数値)
・[文字列⇔文字列](#文字列文字列)
・[日付型⇔日付型、文字列](#日付型日付型文字列)

#文字列⇔数値
###String ⇔ int

“`java:qiita.java
//int → String
int num = 0;
String intToString = String.valueOf(num);

//String → int
String number = “123”;
int stringToInt = Integer.parseInt(number);
“`

double型、float型、long型からのString変換も同様に行えます。
とりあえずString.valueOf()に放り込んでおけばいい……はず。

補足:

“`java:qiita.java
String number = “123”;

//String → double
Double double

元記事を表示

SelectItemのListをソートする方法

選択肢を設定するのによく使うSelectItemのList。データベースから取得した値を使ったりすると並べ替えをしたいことがある。そんな時用。

– 環境
– CentOS Linux release 7.8.2003 (Core)
– openjdk version “11.0.7” 2020-04-14 LTS
– JSF 2.3.9

例えばこんなSelectItemのListがある場合のこと

|value|label|
|:-:|:-:|
|1|いぬ|
|3|さる|
|0|くま|
|2|ねこ|

“`java
/** SelectItemのリスト. */
@Getter
private List items;

/** SelectItemのリストを設定する. */
private void setItems() {
this.items = new ArrayList();
this.items.add(new SelectItem(1, “いぬ”));
this.items.

元記事を表示

Javaの変数宣言の文について

# Java 変数宣言
本日からJavaの学習を始めましたので、アウトプットがてら読んでくれた方の参考になれば嬉しいです。

## 先ず変数、及び変数宣言の文とは?
変数とはデータを格納するためにコンピューター内部に準備する箱のような物。
つまり変数宣言とは、コンピューターに対して「新たな変数を用意せよ」と指示する文のこと。

## 変数宣言の文
“`
型 変数名 ;
“`
型とは変数に入れることができるデータの種類のこと。

## よく使われる型の種類(他にもあるよ)

|分類|型名|格納するデータ|
|:—:|:—:|:—:|:—:|
|整数|int|普通の整数|
|少数|double|普通の小数|
|真偽値|boolean|true か false|
|文字|char|1つの文字|
|文字列|String|文字の並び|

## 使用例
今回は私の愛車を紹介がてら、例にしたいと思います。
[twitter](https://twitter.com/akiiiiio_19/status/897790093368320001/photo/2)

|分類|型名|格納す

元記事を表示

Python基礎備忘録その2

#記事概要
Pythonを少しでも読めるようになってみようと思い、[参考書](#参考文献)に沿って学習した備忘録になります。
Javaと比較して自身が気になった点、便利と感じた点をまとめております。
その1は[こちら](https://qiita.com/tk10/items/12a3c09b0c0f9a1499f7)
※かなり基礎的な内容になります。

#関数定義
pythonはメソッドのオーバーロードが出来ない代わりに、デフォルト引数を設定可能。

引数無し
def doFunc():
  関数処理

引数あり
def doFunc(a, b, c, …):
  関数処理

#####例
“`java:java
//引数無し
void doFunc1() {
print(“関数が呼び出されました。”);
}

//引数あり
void doFunc2(a, b) {
print(“a + b = ” + (a + b));
}

//return あり
int

元記事を表示

【Eclipse】Javaの開発環境として導入の流れ(それに際していろいろ調べたこと)

###そもそも知らないことばかり
参考にしたページ。
[Eclipse、はじめの一歩 – インストールから便利な日本語化プラグインの導入まで](ttps://employment.en-japan.com/engineerhub/entry/2020/03/19/103000#IDE%E3%81%A8Eclipse)

ふ〜ん、くらいで読めばいいんでしょうけど、なんかいろいろ気になる用語が出てきたので、しっかり理解したいので自分の言葉でまとめていきたいなと思いました。

###Eclipseとは
IBMがJava開発ように作成。2001年にオープンソース化された。

####**オープンソースってなに?無料ってこと?**
まあそういうことです。無料で使えるようになったということ。そしてそのソフトウェアのソースコードも見れるし、改良も自由にできるということ。
**Wikipedia的**な感じですね。

####IDEのデファクトスタンダードってなに?
de facto standard
`de facto`は`事実上、実際には`というラテン語
つまり**事実上の標準**という意味ですな

元記事を表示

JavaはPowerPointドキュメントの背景色と背景画像を設定します

Powerpointドキュメントを作成する場合、背景が非常に重要です。背景を統一させたら、Powerpointのプレゼンテーションが 美しく見えるようになります。この記事では、JavaアプリケーションでFree Spire.Presentation for Javaを利用して、無地の背景色とグラデーションの背景色を設定や、PowerPointスライドの背景画像を追加する方法を紹介します。

**JARパッケージのインポート**
**方法1:** [Free Spire.Presentation for Java](https://www.e-iceblue.com/Download/presentation-for-java-free.html)をダウンロードして解凍したら、libフォルダーのSpire.Presentation.jarパッケージを依存関係としてJavaアプリケーションにインポートします。

**方法2:**Mavenリポジトリから直接にJARパッケージをインストールしたら、pom.xmlファイルを次のように構成します。

“`java

元記事を表示

複雑なSQLクエリのメンテにうんざりしている君! Sparkの出番です

# まず Spark SQL

Apache Sparkは何かを一言でいうのは難しいのですが、この記事ではSparkの(おそらく最重要機能の)**Spark SQL**について説明します。これがわかってないとSparkの他のパートは理解できないでしょうし、またSpark SQLだけでも実業務のアプリに応用できる範囲はめっちゃ広いです。

# どんなときに使うのか

 Spark SQLの用途は一言でいうとこれです。

“`
 複数の表形式のデータを材料に、加工と集計をして別の表形式のデータを出力する
“`

 たとえば

お店の売り上げデータだったら→
日付ごとや商品ごとに売り上げがどう違うかをグラフにするとか、

 

Webサイトの運営だったら→
訪問者が何の検索キーワードで入って、それぞれがどういうページ遷移をして、購入に至ったのか/至らなかったのか

 

ソフトウェア開発なら→
テストの実行件数と失敗数がどう変化したかを集計するとか、
元記事を表示

【備忘】S3からのダウンロード、S3へのアップロード

1.S3からのファイルダウンロード
今回は、バケットの対象パス下のファイルを全てダウンロードする場合を記述しました。

“`
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion(“リージョン名”).build();

// S3上バケット下のファイル一覧を取得
ObjectListing objListing = s3Client.listObjects(“バケット名”);
List objList = objListing.getObjectSummaries();

try {
// S3上のファイル分処理する
for (S3ObjectSummary obj : objList) {
// objListにはバケット下全てのフォルダ、ファイル情報があるため対象パスで絞り込む必要がある
// 対象パスを含んでいないか、または、サイズが0であればダウンロードしない
if (!StringUtils.

元記事を表示

Javaログをクラウドに移行するための3つの強力なツール: Log4J、LogBack、Producer Lib

この記事では、**Java**のログをクラウドに移行するための強力なツールを3つ紹介します。**Log4J、LogBack、Producer Lib**です。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/3-ways-to-migrate-java-logs-to-the-cloud-log4j-logback-and-producer-lib_594959)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#ログの一元化への道
近年、ステートレスプログラミング、コンテナ、サーバレスプログラミングの登場により、ソフトウェアのデリバリやデプロイの効率が大きく向上しました。アーキテクチャの進化では、以下の2つの変化を見ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/2ab08960-2d07-7ffc-f37

元記事を表示

【java】switch文について基本的なことを整理してみた

####【目的】
「switch文の意味をきちんと理解すること。」

 ?当初switch文は、「if文だと冗長になってしまう場合に、もっと見やすく書く手段」と理解。
 ?しかしこの理解だけで実際にコードを書くと、構文中の「break」でモヤみが発生。
  ?breakなくてもコンパイル、実行できる
  ?でも自分の思ったとおりの処理にならない
  ?とりあえず、書いとけばいい…わけではなさそう

####【switch文とは】
 「条件に一致するcaseラベルまで処理をジャンプさせることができる。」

 ?switch文の正体がわかったので、構文内の「break」使用についてもスッキリ。
 ?正直この一文だけで、モヤみ解決(´-`)

####【switch文に書き換えることができる条件】
? 全ての条件式が、右辺と左辺が一致するかを比較する式になっていること。
  例えば「変数 == 値」「変数 == 変数」のような式になっていればOK( ^ω^ )
  「>」「<」「!=」が使われている式はNG(`ω´) ? 比較する値が整数(byte、short、intのいずれか)であ

元記事を表示

Javaパフォーマンス診断ツールの代表格「JProfiler」の基本原理とベストプラクティス

この記事では、いくつかの一般的な**Java**パフォーマンス診断ツールについて説明し、**JProfiler**の基本的な原則とベストプラクティスを強調しています。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/jprofiler-best-practices-powerful-performance-diagnostic-tool_594958)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#背景
パフォーマンス診断は、ソフトウェアエンジニアが日々の業務の中で頻繁に直面し、解決しなければならない問題です。アプリケーションのパフォーマンスを向上させることで大きなメリットを得ることができます。Javaは最も人気のあるプログラミング言語の一つです。そのパフォーマンス診断は、以前から業界全体で注目を集めています。Javaアプリケーションでは、多くの要因がパフォーマンスの問題を引き起こす可能性があります。そのような要因には、スレッド制御、デ

元記事を表示

Javaの配列・リスト・ストリーム相互変換一覧表

インスタンスメソッドで直接変換できたり、クラスメソッドで用意されていたり、もっと複雑なことが必要だったり、ややこしかったので纏めておく。

| from \ to | `T[]` | `List` | `Stream` |
|:–|:–|:–|:–|
| **`T[] array`** | `Arrays.copyOf(array, array.length)` | `Arrays.asList(array)` (固定長・配列と連動) | `Arrays.stream(array)`

`Stream.of(array)` |
| **`List list`** | `list.toArray(new T[0])` | `new ArrayList<>(list)`

`Collections.unmodifiableList(list)` (変更不可) | `list.stream()`

`list.parallelStream()` (並列) |
| **`Stream stream`** | `stream.t

元記事を表示

JavaのTimerで時間指定の処理を作ろう!!

#JavaTimer
一定間隔の時間を指定して、処理を実行したいときに使える

“`java:JavaTimer
import java.util.Timer;
import java.util.TimerTask;

public class TimeAction {

public static void main(String[] args) {

Timer timer = new Timer();
TimerTask tt = new TimerTask() {
int count = 0;
public void run() {
// 定期的に実行したい処理
count++;
System.out.println(count + “回目のタスクだよん。”);
}
};
//2秒後に、5秒間隔で実行する
timer.sched

元記事を表示

JavaでDBlayerの実装(RDB、MySQL)

#MySQL

###DBConstants
まず、DB接続用の定数を定義しよう!!

“`java:DBConstants
public class Constants {

public static final String DB_SERVER = “localhost”;
public static final String DB_PORT = “0000”;
public static final String DB_DRIVER = “com.mysql.jdbc.Driver”;
public static final String DB_USERNAME = “root”;
public static final String DB_PASSWORD = “root”;
public static final String DB_URL = “jdbc:mysql://localhost:0000/schema?autoReconnect=true&useSSL=false”;
}
“`

###DBConection
つぎに、データベースに接続するため

元記事を表示

vimでJava言語用のポップアップ表示を設定する。

まずはじめに、、、私は派遣社員だ。
そのため、派遣先への面接時に、営業が同席する。
その営業が私の意見を無視して勝手に話を進めるため、あれよあれよでその派遣先が決まることがある。
派遣社員になった以上、人間を捨てているが、ちょっと勘弁して欲しい。

と言うことで、次はJava言語案件になるかもしれない。
と言うことは、Java言語を勉強し直す必要が出てきた。
しかし、Java言語関係の本は、使わないと思い、実家に置いたままだ。
仕方ないため、初学本から買い増しすることにした。
何冊何種類の初学本を買えば済むのか・・・できればKindle本を買うつもりなのだが、見にくいため、どうしても紙の本になる。
何か良い対策はないだろう。

※表題は”Java言語用”としているが、あまりJavaに関係ない。

# 本題
初学向けのプログラミングであれば、仰々しいIDEは絶対にいらない。
そんな環境構築をする暇があるならば、少しでも勉強する時間に充てたい。
如何せん。
Vimを使いこなせないため、未だにIDE並の構築が出来ていないままだった。
これを機に、[Language Server Protoc

元記事を表示

【Elasticsearch×Java】Javaで取得されたクエリの実行結果が想定と異なったので調査→対応した内容まとめ

JavaでElasticsearchを用いた検索を行った際、想定通りの結果が得られなかったので、調査→対応を行いました。
その内容をまとめておきます。
※対応内容と結論だけ知りたい方は、対応内容、結論のみお読みくださいませ!

## 環境
– OS: Windows10
– Java: 11(Amazon Corretto 11)
– IDE: Eclipse 2020-03
– Elasticsearch: 7.4.2
– Kibana: 7.4.2

## 調査

### ソース
– インデックス定義
– Javaソースコード
– Kibanaでの実行クエリ(Javaソースコードと同等の内容)
はそれぞれ以下の通り。

インデックス定義では、以下の通り、mappingsの定義に加え、analyzerの設定も行っています。
フィールド名のポジショニングは以下の通り。

|フィールド名|データタイプ|ポジショニング|
|—|—|—|
|itemId|integer|商品ID(主キーに当たる)|
|itemName|text|商品名|
|itemNameKana|text|商

元記事を表示

OTHERカテゴリの最新記事