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

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

【Java】あなたはこの事象を説明できるか

あなたのJava力を試してみてください。

以下のコードを見て下さい。
arrayListのすべての値に”D”を代入しようとしています。

“`java:ExtentionForSample.java
ArrayList arrayList = new ArrayList<>();
arrayList.add(“A”);
arrayList.add(“B”);
arrayList.add(“C”);
for(String str : arrayList) {
str = “D”;
System.out.println(str);
}
System.out.println(arrayList);
“`
##結果
“`
D
D
D
[A, B, C]
“`
#なぜこの結果になったのかを説明できるか。
##答え
ローカル変数の参照先を変更していただけだから。。。

##説明しよう
![ローカル変数代入.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621352/de94d1d9-c

元記事を表示

BigDecimalの扱いについて(反省を込めて)

# Java BigDecimalについて
 開発業務でjavaを使う場面は多いと思います。計算ロジックを組む場合はBigDecimalを使うこともあるかと思います。
ふと、通常の整数とは違った型なので戸惑うこともあり記事に残すことにしました。

## BigDecimalとは
 https://docs.oracle.com/javase/jp/8/docs/api/java/math/BigDecimal.html > oracle.docsより
いや、数学的なこと言われてもあんまりよくわからん。。。なので、つまりは・・・
floatやdoubleでは誤差が生じてしまう計算の場合に、意図しない結果を得てしまうことがあります。
例えば

“`double.java
double result = 10d / 6d;
System.out.println(result)
// 出力 1.6666666666666666666666666666666666666666
“`
みたいな感じです。
ご存じの型もいるかと思いますが、「銀行丸め」の計算をしたい場合は上記の例では不規則過

元記事を表示

[初心者向け]JavaでRecyclerViewのミニマムサンプル

# はじめに
Androidで再利用可能なViewをリストで表示する際はRecyclerViewというウィジットが主流です。
けど最初は複数のパーツが出てきてよくわからなかったのでミニマムサンプルを作ってみます。

↓完成イメージ
Screenshot_1588515747.png

# 準備
build.gradleにRecyclerViewを追加します。

“`java

dependencies {
implementation “androidx.recyclerview:recyclerview:1.1.0”
“`

# 登場人物
* Activity
* RecyclerViewを乗っける土台
* RecyclerView
* リストを表示するウィジット
* ViewH

元記事を表示

[java]再帰による多重ループ

javaで多重ループ処理を再帰によって実装する。
先日、[ABC165C Many Requirements](https://atcoder.jp/contests/abc165/tasks/abc165_c)を解いた際に多重ループ処理が必要になり、実装するのに苦労したため、まとめることにした。

## 多重ループ処理

組み合わせの全列挙を行う際、多重ループが必要となる。
具体的に言うと、M個のモノからN個のモノを取り出す場合の全列挙の方法は、N重for文によって表せる。
以下は重複を許してM個のモノから3個のモノを取り出す場合の組み合わせの全列挙である。

“`java
for(int i = 1; i <= M; i++){ for(int j = i; j <= M; j++){ for(int k = j; k <= M; k++){ System.out.println(i + " " + j + " " + k); //[1 1 1]から[M M M]までが出力される } } } ``` 重複を許さない場合は、j=

元記事を表示

Spring Boot+PostgreSQLのエラー解消方法

現在、Springの勉強を行っているので、躓いた箇所等を備忘録として、ここに記載することにしました。

#勉強教材
Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発
※Spring Bootのバージョン1.3の為、そのままでは上手くいきません。

#躓いた箇所:14章
対象ページ:p632~659
アプリ実行後、コンソールに以下のエラーが発生した。

“`
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory’ defined in class path resource
[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]:
Invocation of init method failed; nested exception is javax.persistence.

元記事を表示

Javaでgzipファイルの読み書き

# はじめに

そのままでサイズ大きいファイルを、gzip圧縮したままでやりとりするケースがあります。
javaでのgzipでのファイルの読み書きを整理しました。Java8のときからのものですが、java11でもいけそうです。

# 読み込み

csvファイルをgzip圧縮したものを例にします

ポイントは

0. try-with-resources構文を使う
1. InputSreamをGZIPInputStreamでラップする
2. GZIPInputStreamをInputStreamReaderでラップする
3. InputStreamReaderのときに、エンコーディングを指定できる
4. InputStreamReaderをBufferedReaderでラップする

“`:Java

Path path = Paths.get(“read_test.csv.gz”);
try(
InputStream is = Files.newInputStream(path);
GZIPInputStream gis = new GZIPInputStream(is);

元記事を表示

Androidアプリ:イベントとリスナをまとめてみる

前回
[新人がAndroidのビューってものをまとめてみる(初心者Androidアプリ開発)](https://qiita.com/kkhouse/items/2a8cc36a6c42e06e16cb)

の続き。。。

##はじめに

入社三か月のペーペーです。androidアプリ開発勉強中でまとめてます。

今回は、イベントとリスナについて。鬼超基礎ですので、超初心者用だと思っていただけるとありがたいです。。

##今回でてくる言葉たち

– イベント
youtubeのアプリアイコンをタップしたら、youtubeが開くじゃないですか。
このアプリタップするっていうユーザー操作のことをイベントって呼んでます。

– イベントハンドラ
youtubeのアプリをタップしたら、youtubeが開くじゃないですか。
このアプリタップするっていうのがイベント。
youtubeが開くっていう処理のことをイベントハンドラていいます。

– リスナ
androidさんは、youtubeがいつタッチされてもいいように見張っています。
このじーと見張っていることをリスナという。

前回の言葉たち

元記事を表示

org.immutablesの使い方

Javaのorg.Immutablesの使い方について整理する。

公式サイトは以下。(基本的に本記事の内容は、これを参考にしている)
https://immutables.github.io/

# 事前設定
mavenのpom.xmlにdependencyを設定。

“`xml

org.immutables
value
2.8.2
provided

“`

# 基本的な使い方

データを格納するValueクラスを作成し、それを元に自動生成されたImmutableクラスをbuildすることで、Immutableオブジェクトを生成する。
変更を加えられたくないオブジェクトを生成する場合などに使用。

## Value
– Immutableアノテーションで宣言する。
– interfaceでもclassでもOK。
– コンパイルされるとImmutableクラ

元記事を表示

java Shilberの復習

““

import java.util.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import java.time.*;

import java.time.format.*;

class A{

int A=100;
public void test(){
System.out.println(“testA”);
}

public void test2(){
System.out.println(“test2”);
}
}

class B extends A{
int A=1000;
public void test(){
System.out.println(“testB”);
}

public void test3(){
System.out.println(“test3”);

元記事を表示

昨日までJavaJavaしてた人がScalaを触ることになったときのためのメモ

Scalaを触ってみて調べた点。
今後も追記予定。
ど初心者なので、指摘等頂けると喜びます。

## 検証環境
* Windows10
* IntelliJ IDEA : 2019.1.2
* Scala : 2.12.7
* SBT : 1.3.10

## Scalaとは

>Scala(スカラ、SKAH-lah[2])はオブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語である。名前の「Scala」は英語の「scalable language」に由来するものである(Wikipediaより)

[Scala – Wikipedia](https://ja.wikipedia.org/wiki/Scala)

## 開発環境作成

IntelliJ IDEA を使用する。
以下に導入方法と簡単なチュートリアルがある。

* [Intellij で Scala を始める | Scala Documentation](https://docs.scala-lang.org/ja/getting-started/intellij-track/getting-

元記事を表示

JavaScriptからJavaへの道

ひょんなことからJavaScriptエンジニア(JavaScript経験者)がJavaをやることになった際、ぶつかった問題点・注意点・苦労などを備忘録として残しています。
基本スタンスとしては、JavaScriptとJavaの違いをJavaScript側から記載しています。

#環境構築の違い
##JavaScriptの場合
まず入り口と言いますか敷居が違います。
JavaScript(以下、JSと省略)なら、ブラウザとメモ帳(エディタ)さえあればOKです。
いずれも標準装備で、JSを試すだけならブラウザのコンソール上で叩けばいいので、メモ帳すらいらないです。
これは結局のところJSは、もともとHTMLにアクションを加えたいがためにブラウザ内に処理系を載せた、インタプリタ方式のスクリプト言語であるという特徴に由来するからです。
##Javaの場合
一方のJavaはコンパイラ方式のプログラミング言語であり、標準装備だけでは動かせません。
JVM上で動くのでJRE/JDKを入れます。入れ方はネットでいくらでも見つかります。
注意点としては、「パスを通しておく」ぐらいでしょうか。

#型の違

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ABC 165 D 床関数

# はじめに
AtCoder Beginner Contest 165 が開催されました。
その D問題でちょっとだけ嵌りましたので、~~復讐~~復習したいと思います。
# 今回のお題
*[AtCoder Beginner Contest 165 D – Floor Function](https://atcoder.jp/contests/abc165/tasks/abc165_d)*
Difficulty: 505

今回のテーマ、床関数
# Ruby
入力例1をエクセル先生で確認します。
20200503.png
丁度 **7** で周期していることが分かります。
よくよく考えれば、**7** で割っているのでそうなりますので、n が b – 1 以上の場

元記事を表示

【メモ】Macbook Proにインストールしたもの

# Mac向け開発環境構築メモ

アレなにでいれたっけ?と忘れる事があるので備忘録的に残しておく
今の所Java屋さんな環境構築+Dockerベース
(主にフロントエンド技術関連はDocker)

* Macbook Pro 2018
* i5 2.3GHz
* メモリ16GB

# Java

[Amazon Corretto 8 & 11](https://aws.amazon.com/jp/corretto/)

インストールガイドのページの通りにインストール
(こだわりがなければ後述のbrewでインストールでも可)

予めインストールされたバージョンを確認

“`sh
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
11.0.3, x86_64: “Amazon Corretto 11” /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home
1.8.0_252, x86_64:

元記事を表示

SIerフロントエンド・ディベロッパーのWindows10セットアップ

#はじめに

SIer所属のエンタープライズ系フロントエンド・ディベロッパーがWindows10端末を1からセットアップすることにしたため、SIer仕様の端末を作るために最低限必要なものをメモしておきました。

#ブラウザー
一通り入れましょう

– Firefox
– https://www.mozilla.org/ja/firefox/
– Chrome
– https://www.google.com/intl/ja_jp/chrome/
– Edge

#便利ツール
– Office 365
– 7-zip
– https://sevenzip.osdn.jp/
– Pleiadesが7-zipでないと解凍できない事に、、、
– Sakura Editor
– https://sakura-editor.github.io/
– docker

#ソースコード管理
– git
– https://git-scm.com/
– その後、sshコマンドで公開鍵を作成しましょう

#Java開発
– Java
– O

元記事を表示

Java学習_継承関係にある2つのクラスで同名のフィールドと同名のメソッドがあった時の挙動

# 前置き

JavaSilver11の資格勉強の中で学んだ内容を備忘録として残します。

継承関係にある2つのクラスで同名のフィールドと同名のメソッドがあった時の挙動の理解が難しかったので、検証しながら学習をしてみました。

# 学習の内容

* フィールドはインスタンス化した時の変数の型によって参照先が変わる。
* メソッドの呼び出しはインスタンス化したクラスによって呼び出し先が変わる。

# 検証1:インスタンス化=サブクラス、変数の型=スーパークラス

サブクラスのインスタンスを生成し、それをスーパークラス型の変数にセットして呼び出した際の挙動を検証。

## 検証ソース
“`java:Astudyクラス
class Astudy {
String val = “A”;

void print() {
System.out.println(“Astudyの出力->” + val);
}
}
“`
“`java:Bstudyクラス
class Bstudy extends Astudy {
String val = “B”;

void print() {

元記事を表示

VirtualBox + Ubuntu(Xfce4)でJavaの開発環境構築(個人メモ)

# まえがき
ホストOSではやりたくないアプリの検証や、壊しても良いLinux環境をひとつもっておくと何かといじくり回すのに便利なので用意しておく。
VirtualBoxの良いところは、ovaファイルにエクスポートしておけば、整備済みの開発環境を配ることができる。Xfce4はUbuntuのデスクトップ環境の中で比較的軽いので採用。

# ゴール
UbuntuでJavaでのWebアプリケーション開発ができるような状態を目指します。

# 前提:筆者の環境
– MacBook Pro (Retina, 15-inch, Mid 2015)
– OS:MacOS Catalina 10.15.4
– プロセッサ:2.2 GHz クアッドコアIntel Core i7
– メモリ:16 GB 1600 MHz DDR3
– グラフィックス:Intel Iris Pro 1536 MB

# 環境構築手順
## VirtualBoxのDL
https://www.virtualbox.org/wiki/Downloads
※今回はVirtualBox 6.1.6 を利用

## Ubuntuイメ

元記事を表示

技術面接に使える質問を作ってみた

*質問は(今回使用したJavaに限らずPythonほか)オブジェクト指向言語をベースに考えられています。

#対象読者
エンジニア教育担当者向けの技術面接を行いたいが、良い質問が思い浮かばない技術面接担当者

#対象ポジション
– 開発チームの生産性向上を図るテックリード
– プログラミング教育やコードレビューも担当するソフトウェア開発兼教育担当者

#背景
– インターフェースがもたらす利益を分からずに書かれたインターフェースがその利益をもたらすことはない
– 言語仕様のキモを理解せずに書かれたプログラムにその良さが反映されることはない

#質問の目的
開発効率や保守効率を意識した設計ができるか、コードを前に技術者と設計やコード改善のための議論ができるかの確認

#質問その1
1. クラスを抽象化することによって得られる利益はなんですか?
2. 言語仕様として抽象クラスやインターフェースは何のために存在しますか?
3. クラスが具象ではなく抽象に依存すべきなのはなぜですか?
4. ポリモーフィズムの仕様とその目的について説明してください

#質問その2
1. 以下のコードの問題点と

元記事を表示

Apache FreeMarker 備忘録

# ディレクティブ
## if ディレクティブ
“`
<#if var1 == "a">
a です。
<#elseif var2 >= 100>
100以上
<#else>
c

“`

元記事を表示

[Notepad++] C言語/Java コンパイル&実行環境の構築

## 事前準備
#### コンパイラを用意し、使い方を調べる
– この記事はborlandを使用する

“`
bcc32 -n出力パス inputFile.c
“`
`-n`のうしろに`スペース`を入れないように

#### 文字コード
– プログラムのソースファイルと、これから作成するバッチファイルの文字コードは、こちらではShift-JISに統一している
– もし文字化けが出た場合、文字コードを変えてみてください

## 手順
#### 1. Notepad++プラグインのNppExecをインストール
– 複数行のコマンドを一気に実行できるプラグイン。
– それらのコマンドをスクリプトのように管理できる。
– スクリプトをメニューアイテム/ホットキー候補に作り、Notepad++に提供。
– インストールには、プラグインメニュー>プラグイン管理>チェック>インストール

#### 2. バッチファイルを用意する
– 外部コマンドプロンプトで、コンパイル済みEXEファイルを実行
– 実行終了時に自動的にpauseをかけて、ウィンドウを保持
– 作成フォルダはどこでも良い

“`

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ARC 066 C 繰返し二乗法 ハッシュ

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。

# 今回のお題
*[AtCoder Regular Contest 066 C – Lining Up]()*
Difficulty: 927

今回のテーマ、繰返し二乗法 と ハッシュ
# Ruby
これは左右対称な問題ですので、仮にハッシュに代入した場合、奇数名では`2221222`、偶数名では`22222222`の様なvalues配列になると想定されます。
それ以外の場合は、並び方がないと判断できます。

また、以前投稿しました *[Ruby と Perl と Java と Python で解く AtCoder ATC 002 B](https://qiita.com/superrino130/items/adbb485637e45a024fa1)

元記事を表示

OTHERカテゴリの最新記事