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

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

ネストクラス(メモ)

#ネストクラスとは
クラス定義の中にさらにクラスを定義でき、その名称がネストクラスという。
##特徴
シンプルで可読性に優れており、使用場所も限定されるため、その存在を外部から隠したいクラスに適用することが一般的。

##ネストクラスの種類
ネストクラスは以下の種類に分けられる。

– ネストクラス
– [インナークラス(非staticクラス)](#インナークラス)
– [ローカルクラス](#ローカルクラス)
– [匿名クラス](#匿名クラス)
– [staticクラス](#staticクラス)

##ネストクラスのルール
| static/非static共通 | ・外部クラスと同じクラス名は使用できない
・アクセス修飾子を使用できる。
・abstract/final 修飾子を使用できる。 |
|:-:|:-:|
| staticクラスのみ | ・非static/static メンバをもつことができる
・外部クラスで定義したインスタンス変数にアクセスできない |
| 非staticクラスのみ | ・staticメンバをもつ

元記事を表示

Java入門時のリンク集&メモ(超自分用)

Javaの学習をしたときに参考にしたサイト(超個人的な備忘メモです。。。)

## Samurai Blog様
– [【一通り理解しよう】UMLのクラス図の描き方を解説](https://www.sejuku.net/blog/86582)
– [【Java入門】コンストラクタの使い方総まとめ(クラス/インスタンス)](https://www.sejuku.net/blog/24681)
– [【Java入門】thisとは? 意味や使い方のキホンを解説します!](https://www.sejuku.net/blog/19815)
– [【Java】superとは?意味や使い方について詳しく解説](https://www.sejuku.net/blog/20081)
– [【Java入門】継承とコンストラクタの呼び出し(super/this)](https://www.sejuku.net/blog/20896)

## デザインパターン(TECHSCORE様)
– [デザインパターン INDEX](https://www.techscore.com/tech/DesignPat

元記事を表示

Basic Java OOps concepts

OOP concepts allow us to create specific interactions between Java objects. They make it possible to reuse code without creating security risks or making a Java program less readable.
Here are the four main principles in more detail.
Abstraction
Abstraction aims to hide complexity from the users and show them only the relevant information. For example, if you want to drive a car, you don’t need to know about its internal workings. The same is true of Java classes. You can hide internal implement

元記事を表示

JasperReportでの日本語フォント、外字の利用

JasperReportsでのPDF出力で、日本語フォントや外字を利用する方法を紹介します。
# 前提条件
* JasperReport 6.x.x

# やりたいこと
* PDFを開く環境によって、使用されるフォントが変わるとレイアウト崩れや異なる字形で表示される等の問題が起きるので、PDFにフォントを埋め込みたい
* 今回使用するフォントは[IPAフォント](https://ipafont.ipa.go.jp/)
* ipaexg.ttf (IPAexゴシック)
* ipaexm.ttf (IPAex明朝)
* ただし、フォントが埋め込まれたPDFファイルのサイズは、そうでないものに比べ大きくなる
* 外字もPDFに出力したい
* 外字がインストールされていない端末やプリンターでも表示できるよう、外字もPDFに埋め込む。

# 準備
Mavenプロジェクトを作成し、dependencyにjasperreportsを追加します。

“`xml

net.sf.jasperreports

元記事を表示

Sourcetrail(macOS版)をJavaコードで使ってみる

Sourcetrail

Sourcetrailがオープンソース化されました。
ソースコードの全体像と詳細を提供する検索エンジンです。
Home Page
Git

対象言語

– C
– C++
– Java
– Python

他の言語は「SourcetrailDB」ツールで拡張出来るようです。

インストール

Download Page

– 使用したいOS・形式をダウンロードする
今回はmacOSのzip形式
「Sourcetrail_2019_4_61_macOS_64bit.zip」(2019/11/20時点最新)
– ファイルを解凍する
![alt](http://www.cloudsqua

元記事を表示

2020年ソフトウェア開発の7つのトレンド

以下はTiara Brown Neilさん ( [hackernoon](https://hackernoon.com/@theneil248) )による記事、[7 Software Development Trends 2020 Revealed](https://hackernoon.com/software-development-trends-2020-revealed-spi305m)の日本語訳です。

# 7 Software Development Trends 2020 Revealed

![表紙](https://hackernoon.com/drafts/6i17k30ki.png)

知ってますか? ITプロジェクトの半分以上が失敗しています。
ソフトウェア開発業界の複雑さと動的な性質を認識している私たちの多くにとっては、それほど衝撃的な事実ではありません。

絶え間ない革新と進歩が伴うこの予測不可能な業界で生き残るためには、そのペースに合わせることが必須です。
賢い者は、ソフトウェア開発のサービスを利用するだけでなく、すべてのテクノロジーの長所と短所を比較し検

元記事を表示

Spring FrameworkのResourceインターフェースのおさらいメモ

# 概要

Spring FrameworkのResourceインターフェースと実装クラスをを使ったリソースファイルのアクセス方法をおさらいしたときのメモです。

**環境**

* Windows 10 Professional 1909
* OpenJDK 13
* Spring Boot 2.2.1

**参考**

* [Core Technologies – 2. Resources] (https://docs.spring.io/spring/docs/5.2.1.RELEASE/spring-framework-reference/core.html#resources)
* [Package org.springframework.core.io] (https://docs.spring.io/spring/docs/5.2.1.RELEASE/javadoc-api/)

# [Resource] (https://docs.spring.io/spring/docs/5.2.1.RELEASE/javadoc-api/org/springframework/c

元記事を表示

用語解説:メンバ変数 / ローカル変数

# メンバ変数とは

* クラスの中にある変数
* オブジェクトの属性を定義したもの
* データを受け取るための変数
* オブジェクトが持つパラメータ

## 例

### 概念イメージ

オブジェクト:うちのうさぎ ・・・モノ
メンバ変数 :可愛い、怖がり、ドジ ・・・どんなものか
メソッド  :寝る、食べる、跳ねる、走る ・・・どう動けるか

### コードのイメージ

“`java

public class Rabbit{

Int age; //メンバ変数 年齢を格納
String personality; //メンバ変数 性格を格納

void setAge(int newAge){
age = newAge;
}

Int getAge(){
return age;
}
}
“`

# ローカル変数とは

* プログラム内の限定された範囲でしか参照できない変数
* メソッド内で宣言した変数はそのメソッドの外では参照不可
* if文、for文内で宣言した変数はその文節の外では利用不可
※文節:文を実際の言語として不自然でない程度に

元記事を表示

新しいソートアルゴリズム作ってみたけど、本当に新しいのか知識ないからわからない

#新しいソートアルゴリズム作ってみたよ!
ふとした瞬間に、ソートアルゴリズムを思いつきました。
「なんか、うまくいくんじゃね?」と思い、その辺の紙切れに少し流れを書いてみたところ、特におかしな点はなさそう。「じゃあ、実装するか!w」のノリで実装しました。

最近ネタ不足で、過去プログラムの紹介ばかりしていますが、これもその一つで、javaでの実装です。
これは大体1年前のものだった気がします。

#アルゴリズムの名前は”ハノイソート”
この命名の理由は、二つのスタックを使ってソートを実現するその動きがハノイの塔を解く様に似ていたからです。

ハノイの塔.png

以下に、ハノイソートでソートを行う様子を示します。

![hanoi.gif](https://qiita-image-store.s3.ap-north

元記事を表示

Javaプログラミング (クラスの構成)

#クラスの概念
Javaでは避けては通れないクラスについて概要について紹介します。変数と簡単な計算を知っていれば読めます。逆に深いことはこの記事では紹介しません。多分、こういう構成で書くのは珍しいんじゃないかしら?
##クラスとは
厳密なクラスの定義はほかの記事や書籍に譲るとして、クラスとはJavaを作るものです。実際にJavaのいろいろな機能はクラスで定義されています。そして、クラスを自分で作ることで、自分の思う機能を創ることが出来ます。

##クラスの構成
それではクラスを実際に構成してみましょう。ここではTestクラスを作ってみます。
クラスには変数とメソッドといわれる処理があります。Testクラスを日本語で作ってみましょう。

“`java
public class Test(){
/*
*クラスの変数をここらへんで宣言
*/
/*
*ここで、クラスのなかで実現したい処理’メソッド’を定義
*/
}

“`

###クラスの変数
クラスの変数は次のように書きます。

“`java
private int a = 4;
“`
ここでは、aという整数型の変数に4を

元記事を表示

Spring Data JDBCでInsertできなかった件のメモ

なんとなく復習してたSpring Data JDBCでハマったのでメモ。
(ベースにしたSpring bootがちょっと古いけど・・。)

##環境
* Spring boot 2.1.2
* Spring Data JDBC 1.0.4
* PostgreSQL 10.5

##やろうとしたこと
単に、Spring Data JDBCでテーブルにオブジェクトを保存(レコードをInsert)しようとしただけ

##ハマった原因
どうも、Spring Data JDBCは@IDをつけたフィールドがオブジェクト型の時はnullのときはInsert、nullじゃないときはupdateでSQLを発行するらしい。
テーブルのPKがAuto Generatedじゃないとだめよってことね。

参考
https://stackoverflow.com/questions/50371775/why-does-spring-data-jdbc-not-save-my-car-object

##サンプルコードで動かしてみる
オブジェクト

“`Users.java
public class User

元記事を表示

JavaにおけるString型の等価比較に関して

#概要
プログラミング言語の「Java」において等価を表す比較演算子は「==」がサポートされていますが、String型といった**プリミティブ型**ではない**参照型**の比較を行う際に使用すると思わぬ処理結果になります。結論から書きますと、**参照型の値が等しいかどうかを比較する際に等価演算子「==」を使用してはいけません。**

当記事では、なぜString型の比較を行う際に等価演算子を使用してはいけないのか、また使用した場合にどうなってしまうのかに関して書いていきます。但し、今回はString型のみにフォーカスした記事になりますが、これは参照型全般の話でもあります。

#基礎知識
##プリミティブ型(基本データ型)
プリミティブ型は、それ自体でデータそのものを表し、データを操作するための振る舞いを持っていない型になります。
プリミティブ型にnullを代入することができません。
※この場における「**振る舞い**」とは、データを操作するための**メソッドや処理**と解釈していただいて構いません。

例えば以下の型があります。

– byte
– short
– int
– long

元記事を表示

AndroidのUDPクライアントに遅延を自分で設定できるようにしてみた

#前回からの変更点
前回のプログラムでは遅延時間を500ミリ秒に設定していましたが、加速度センサの値を計測するにあたり、動作検地をする場合に遅延時間を早めるために遅延を自分で調整できるように改善しました。

#ソースコード
“`xml:AndroidManifest.xml

“`
AndroidManifest.xmlにインターネットを使用できるパーミッションを追加しないと動作できないので気をつけること。(2敗)

“`xml:activity_main.xml

元記事を表示

【Java】JavaでKClassを取得する【Kotlin】

# やること
`Kotlin`では以下のようにして`KClass`を取得できます。

“`kotlin
val myKClass: KClass<*> = MyClass::class
“`

この取得処理を`Java`で行います。

# やりかた
`JvmClassMappingKt.getKotlinClass`でできます。

“`java
final KClass myKClass = JvmClassMappingKt.getKotlinClass(MyClass.class);
“`

元記事を表示

10進数→2進数変換は難しすぎて筆算じゃないとできないよ!!

#2進数変換は高校数学で習った
某国立大学情報学部に通う僕は、最近情報科学系の実験で2進数をよく使うようになってきました。
実験では、FPGAと呼ばれる集積回路を積んだ基板のようなボードのようなものに、設計した論理回路を送り込んで「1たす1ができたぞおおお」みたいな小学生のような大学生のようなことをしています。
意味わからないですよね、符号つき2進数は正の数と正の数を足して負の数になったりするのですから面白い。
しかしながら20年間慣れ親しんできたのは10進数ですし、物事は基本的に10進数で考えます。僕の脳ミソは仮面ライダーゼロワンではありません。(実際の仮面ライダーは見ていないので知りません)
流石に、5〜6桁くらいまでは暗算でも10進数⇔2進数の変換はできますが、それ以上の桁数になると、計算機を使うか手計算をします。
今回の記事では、最近古いパソコンを漁っていたら昔作った10進数→2進数変換プログラムが発掘されたので、ご紹介しようと思います。

#まずはプログラムを
今回はjavaで書きました。
大学1年生の頃はjavaしか触れなかったので、この世には日本語と英語とjavaしか言語

元記事を表示

【Kotlin/Android】Listenerのかきかえ

“`main.java
// idがswitchButtonのSwitchを取得
Switch switchButton = (Switch) findViewById(R.id.switchButton);
// switchButtonのオンオフが切り替わった時の処理を設定
switchButton.setOnCheckedChangeListener(
new CompoundButton.OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton comButton, boolean isChecked){
// オンなら
if(isChecked){
}
// オフなら

元記事を表示

javacとjavaのバージョンを何度試しても合わせられない原因は、謎のJavaにあった

# 環境
購入元: 株式会社マウスコンピューター
ノート/デスクトップ: デスクトップPC
OS: Windows 10 Home 64ビット
CPU: インテル(R) Core(TM) i5-7400 プロセッサー ( 4コア / 4スレッド / 3.00GHz / TB時最大3.50GHz / 6MBキャッシュ )
メモリ: 16 GB (購入時点では8 GB)
HDD: 1TB HDD ( 7200rpm / 6Gbps 対応 )
SSD: 無し
グラフィックス: インテル HD グラフィックス 630
下記内容の実施日:2019年11月12日

# Hello worldで実行エラー
Javaを始めようと思い、環境構築のためEclipseとJDKをインストールし、Eclipseを日本語化した。
早速「Hello world」を出力しようと思い、ほぼコピペのコードをHello.javaに保存し、
`> javac Hello.java`
でコンパイル成功。
`> java Hello`
で実行したが、エラーが発生。

“`
Error: A JNI error has occ

元記事を表示

Androidアプリを初めてPlay Storeへリリースした話。

#概要
## 自己紹介
どうも、関東圏のWeb業界で活動しているフリーランスエンジニア(26歳)です。
正直に申しますと、Androidアプリ自体を今回初めて作ったので、Android業界における常識的な営みはまったくわかりません。

##何の記事?
先に言っておきますが、開発時に感じたことや技術ノウハウ等は当記事では触れません。
あくまでも、こういうアプリを作ってリリースする時にこういうことをしたよ、というようなことを簡単に書いていきます。

#なんのアプリを作ったの?
Duolingoに登録されているユーザのアカウントと同期化し、Duolingoで学習した全ての単語から探したい単語を簡単に検索することができるAndroidアプリです。さらに、単語リストから参照したい単語をタップすると、翻訳や品詞といったその単語の詳細情報も確認することができます。

https://play.google.com/store/apps/details?id=dev.app.ks.thinkit.duovoc

要点をまとめると以下のような感じです。

– Duolingoで学習した単語を管理できる。

元記事を表示

Long型配列の降順ソート(Java)

# Long型配列のソートはTLEする

以下問題で、Long型の降順ソートが必要になり、**TLE**してしまいました。
https://atcoder.jp/contests/abc123/tasks/abc123_d

long型配列のソートの計算量は、$O(NlogN)$なのに、
**Long型配列のソートの計算量は、$O(N^2)$になる**ようです。

| long[]のソート | Long[]のソート |
|—————–|—————–|
| $O(NlogN)$ | $O(N^2)$ |

じゃあlong型配列だけ使えばいいかと思いきや、
**long型は降順ソートできない**という問題がありました。
(compareToメソッドがLong型配列でないと使えない)

“`java:昇順ソートはlong型で実行可能。
long a[] = {略};
Arrays.sort(a); //long型なのでO(NlogN)
“`

“`java:降順ソートはLong型でないと出来ず、

元記事を表示

Spring Boot エラーページの最低限のカスタマイズ (ErrorController インターフェースの実装)

## 概要
– Spring Boot のデフォルト設定では 404 Not Found や 500 Internal Server Error が発生した際に Whitelabel Error Page や JSON が返される
– Web ブラウザからのアクセスには HTML を返すようになっている
– curl などのマシンクライアントからのアクセスには JSON を返すようになっている
– 独自に設置した error.html や error/404.html では JSON が返されるのを止めることができない
– ErrorController インターフェースを実装したクラスを用意してエラー時に返す HTML や JSON をカスタマイズしたほうが良い
– 今回の動作確認環境: Java 11 + Spring Boot 2.2.1

## 最低限のエラーページ実装例

エラー発生時はすべて 404 Not Found として表示する。

### ErrorController インターフェースの最低限の実装クラス

“`java
import org.sprin

元記事を表示

OTHERカテゴリの最新記事