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

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

Javaのメソッド

##はじめに
前回の配列の投稿でスパム認定されましたこんにちは。

##メソッド
・メソッドとは部品だったりゲームの技ようなもの(クラスはステータスのような※あくまで私の感覚)。
・**クラスの{}(ブロック)の中に書かないと動かない**。
・メソッドを使うことによって同じ処理などする時なんども同じ処理を書かずに呼ぶだけで済むので楽。
・コードの見通しや管理が楽になる。

“`kane.java
public static void メソッド名() {
実行する処理 ;
}
“`

“`kane.java
class Main{
public static void main(String[]args) {
banana() ; //()は必要。
}

public static void banana() {
System.out.println(“黄色”) ;
}
}
“`
・戻り値とは
呼び出されたメソッドから、呼び出し元のメソッドへ返す値(データ)のことを**戻り値または返り値**という。

##public static v

元記事を表示

言語別Stack処理速度比較

## 1. はじめに
Go言語にはStackが実装されていませんが、

Stackの処理自体は、どの言語でも、
配列や線形リストを使って自作で実装することができます。

Go言語向けに自作で作ったついでに、
Stackが実装されている他言語との処理速度(処理時間)を比較してみました。

実験で使用した言語は、

* C#(.NET Core3.0)
* go1.14.4
* java 13.0.2
* Python 3.8.3

の4言語です。

各言語のソースは、githubでも公開しています。
https://github.com/NobuyukiInoue/StackSpeedTest

* C#
https://github.com/NobuyukiInoue/StackSpeedTest/tree/master/Project_CS

* Go(配列でStackを実装)
https://github.com/NobuyukiInoue/StackSpeedTest/tree/master/Project_Go_Stack_by_Array

* Go(線形リストでStack

元記事を表示

例外処理が必須なクラス

チェック例外とは、開くべきはずのファイルがない等、
プログラムの不具合とは関係なく、 状況によっては発生しうる状況とされるもので、例外処理が必須となります。
####ClassNotFondException

Excptionクラスのサブクラス。
クラスをロード出来ない場合に発生します。
例外処理は必須です。

####IOException
Exceptionクラスのサブクラス。
入出力機能を使用する場合に発生します。
例外処理は必須です。

####FileNotFoundException
Exceptionクラスのサブクラス。
ファイルに対する読み書きを行う際、対象のファイルが存在しない場合に発生します。
例外処理は必須です。

元記事を表示

Android studioに関する質問です。

自作のandroidアプリを作成しているのですが、アプリを起動しても繰り返し停止しています、と表示され、うまく動きませんLogcatを確認したのですが、以下の通り表示されるのですが、よくわかりません。どうやって修正すればいいでしょうか。

2020-07-10 22:39:52.674 17730-17730/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.fumemo, PID: 17730
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.fumemo/com.example.fumemo.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method ‘android.content.pm.ApplicationInfo android.content.Context.get

元記事を表示

Ruby と Java で解く AtCoder ABC129 D 2次元配列

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest D – Lamp](https://atcoder.jp/contests/abc129/tasks/abc129_d)*
Difficulty: 1080

今回のテーマ、2次元配列

やっていることは、単純です。

|…#..#.|元の配列|
|:–:|:–|
|12301201|元の配列を左から右にスキャン|
|33302201|スキャンした配列を右から左にスキャン|
合計2回スキャンして左右方向の光の届く範囲を求めます。
次に、上下に2回スキャンして上下方向の光の届く範囲を求めます。

左右用の配列と上下用の配列の値を合計し、その最大値を求めます。
# Java
“`l

元記事を表示

Javaのequalsで気をつけたい点

##その1 nullチェック

“`java

public static void main(String[] args) {

String str1 = null;
String str2 = “test”;

System.out.println(str1.equals(str2));//実行1
System.out.println(str2.equals(str1));//実行2
}
“`
実行1は、java.lang.NullPointerExceptionが発生します。
例外発生の原因は、str1にnullを入れてしまい、nullのオブジェクトからメソッドを呼び出してしまったことです。
nullでないstr2からメソッドを呼び出すと、例外が発生しなくなりfalseを返すようになります。

実行2の書き方は、str1がnullであっても例外が発生しないというメリットがありますが、異常系としてnullが入ることを想定せずに実装していた場合、コードミスに気づきにくいという短所があると思います。

nullチェックを意識するのであれば、例外処理で捕まえる方が安全かもし

元記事を表示

MySQLのTableをJDBCでconnection.getMetaData().getColumns()したときのカラム名リスト

JDBCを使って、テーブルのスキーマ情報を取得する際の完全個人用備忘録。
index順になっています。
そのうち説明も追加します

|カラム名|説明|値の例|
|:–|:–|:–|
|TABLE_CAT|データベース名|database_name|
|TABLE_SCHEM||null|
|TABLE_NAME|テーブル名|table_name|
|COLUMN_NAME|カラム名|id|
|DATA_TYPE||4|
|TYPE_NAME||INT UNSIGNED|
|COLUMN_SIZE||10|
|BUFFER_LENGTH||65535|
|DECIMAL_DIGITS||null|
|NUM_PREC_RADIX||10|
|NULLABLE||0|
|REMARKS|カラムについたコメント|カラムコメント|
|COLUMN_DEF||null|
|SQL_DATA_TYPE||0|
|SQL_DATETIME_SUB||0|
|CHAR_OCTET_LENGTH||null|
|ORDINAL_POSITION||1|
|IS_NULLABLE||NO|
|SC

元記事を表示

継承とかについて(JavaSilver)

JavaSilverの取得のためにJavaの基礎で理解が浅い部分をまとめてみています。

#継承
継承の概念自体は理解しているつもりです。
継承というより機能を拡張すると表現したほうが個人的には理解しやすいかと思います。
スーパークラスの方が抽象度が高くて機能が少なくて、より具体的な機能が追加されてスーパークラス+α(拡張)になったのがサブクラスというイメージです。

・スーパークラス

“`java:SuperA.java
class SuperA {}
“`
・スーパークラスを継承したサブクラス

“`java:SubA.java
class SubA extends SuperA {}
“`

###できないこと
– extendsのあとに複数のスーパークラスは指定できない。

“`java:SubA.java
class SubA extends SuperA, SuperB {}
“`

– スーパークラスで定義したprivateなメンバはサブクラスで使用できない。

スーパークラスで定義したメンバはサブクラスで使用できるがprivateなメンバは同一クラスのか

元記事を表示

【SpringBoot入門】フォームのバリデーションチェック

#目的

[Spring Quickstart Guide](https://spring.io/quickstart)を取り組み終えた方、SpringBootを学び始めた方、復習をしたい方に向けて、

公式ガイド[Validating Form Input](https://spring.io/guides/gs/validating-form-input/)を実際に取り組み学んだことを共有します。

完成形はこちらになります。

名前と年齢を入力するフォームがあり、
![スクリーンショット 2020-07-09 14.05.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/555244/d0bef22f-dd42-df35-a5e6-04ee1d7b28a2.png)

不正な値が入力したままSubmitボタンが押されるとエラーメッセージを表示して、
![スクリーンショット 2020-07-09 14.05.40.png](https://qiita-image-store.s3.ap-nort

元記事を表示

Javaのラムダ式

##ラムダ式とは
Java8で導入された記述方法です。
同じくJava8で導入されたStream API[^1]はラムダ式を使うことが前提とされているため、ラムダ式を学んでおくとメリットがありそうです。

[^1]: 配列やリストなどのコレクションを扱う為のもので、値の集計やデータを使った処理を分かりやすいコードで実装することができるAPI。

また、ラムダ式を使うと、「匿名クラスを使った関数型インターフェースの記述」を簡潔にできるというメリットもあります。

###ラムダ式の書き方

**引数が複数ある時**

“`
インターフェース名 オブジェクト名 = (引数1, 引数2, …) -> { return 処理内容 };
“`

コンパイラが型推論してくれるので、引数の型は指定する必要はありません。

**引数が1つしかない時**

“`
インターフェース名 オブジェクト名 = 引数 -> 処理;
“`

引数が1つしかない時は、returnや引数を囲む()、処理を書く{}等は要りません。

ラムダ式を読む時はシンプルにこの形式を覚えておいて、書く時は引数の数によって

元記事を表示

SpringBootでapplication.ymlやapplication-[プロファイル名].yml以外のファイル名のプロパティファイルを読みたい

なかなかコレ!というサンプルが見つからなかったのでメモ。

## やりたかったこと

– SpringBoot に `application.yml` 以外のファイル名の yaml のプロパティファイルを読み込ませる
– その際、`application-test.yml` のようにプロファイル名をくっつけたファイルも読み込ませる
– 読み込んだプロパティは Configuration クラスにマッピングする

マルチプロジェクトの構成で、共通の部品を集めたプロジェクト側にもプロパティファイルを置きたかったが、application.yml だと利用側のプロパティファイルとバッティングするため別名にする必要があった。

## 実現方法

### ポイント

– Configuration クラスで `@PropertySource` を使用して読み込むプロパティファイルを指定する
– `@PropertySource` は yaml ファイルの読み込みに対応していないので読み込み用のクラスを作成して読み込めるようにする

### ソースコード

完全なソースコードは[こちら](http

元記事を表示

WindowsでmvnをするとNB: JAVA_HOME should point to a JDK not a JRE でエラーになる

##私の原因
– 環境変数で `M2_HOME` ,`PATH`をユーザー環境変数で設定し、`JAVA_HOME`はシステム環境変数で設定していた。
– また、`NB: JAVA_HOME should point to a JDK not a JRE`のエラーは、パス先がJREだから起こるものではなく、JDKを認識できないときに一般的に表示されるものだった。

##解決方法
– `JAVA_HOME`をユーザー環境変数で設定する。
![environment_variable.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177601/5f87038c-eb7b-c8ed-cae1-c1d7e96a475b.png)

## 動作環境
– Winodws 10
– jdk-13.0.1
– Maven 3.6.3

##経緯
– 普段はMacでAndroid開発をしているが、たまたまWindowsでSpring Bootを触ることになり、Java,MarvenをWindowsにインストールした。

元記事を表示

SpringBoot2.3.0以降で@PropertySourceのvalueに使用しているプレースホルダの解決に失敗する

# 内容

タイトルそのままです。
SpringBoot2.3.0 以降で`@PropertySource` の value の指定に `classpath:/something-config-${spring.profiles.active}.yml` のようにプレースホルダを使っていると、解決できずに例外が発生する。
現在の Boot の最新バージョンは 2.3.1 です。

ソース

“`java:SomethingConfig.java
@Configuration
@ConfigurationProperties(prefix = “something”)
@Component
@PropertySource(value = {“classpath:/something-config.yml”,”classpath:/something-config-${spring.profiles.active}.yml”}, factory = YamlPropertySourceFactory.class)
@Data
public class SomethingConfig {

元記事を表示

電卓プログラム

//キーボード入力インポート
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;

//クラス開始
public class Original {

//メインメソッド開始**************************
public static void main(String[] args) throws IOException {

//キーボード入力準備
BufferedReader br =
new BufferedReader (new InputStreamReader(System.in));

String now = “0”;
String input = “”;
String enzan = “”;
String msg = “数値”;
String data = “”;

//無限ループ
while(true){

元記事を表示

新興のSQLiteクライアント Reasonの開発をしています。

初めまして、hosokawatです。
SQLiteクライアント Reasonの開発をしています。

**ダウンロードは[こちら](https://reason.tokyo)から**

次の投稿からデバッグ&宣伝を兼ねてReasonを使ったSQLite入門の記事を投稿していくことにしました。
その前置として、Reasonの紹介をします。

## Reasonとは?
SQLの作成、検証を効率よく行うことを目的としたSQLiteクライアントです。
ゴテゴテなGUIのツールを使うよりもエディタを使って「手で書く方が早いんだ!!」っていう人をターゲットにしています。

### 百聞は一見に如かずということでスクリーンショットを見てみてください。

スクリーンショット 2020-07-10 7.04.46.png
### 推しの

元記事を表示

new Object() {}で一時的クラスを作成する

# はじめに

Javaの`Object`クラスはすべてのクラスのスーパークラスで非常に重要なクラスですが、それ自体を`new`することはあまりないのではないでしょうか?
この記事では`new Object()`が有意義となる二つのコード例を紹介します。

# メソッド内にメソッドを定義する

以下は「[Javaで数学の組み合わせ(Combination)を実装する – Qiita](https://qiita.com/5zm/items/949bf0721e8324f0ee35#comments)」のコメントに記載されたコード例です。文字列の配列`data`から`k`個取る組み合わせを列挙して返すメソッドです。

“`java
static List combination(String[] data, int k) {
List result = new ArrayList();
combination(data, 0, new String[k], 0, result);

元記事を表示

JavaFX 画面サイズが一定以下の場合はスクロールバーを出し、一定以上の場合は中のnodeをなるべく最大化する

## 今回のゴール
JavaFxをしようしてGUIアプリを作成する際にListViewを使用しましたが、以下のような要望がありました。

1. ListViewはなるべく大きく表示したい
– → windowの大きさに連動して大きさが自動的に変化する
1. windowサイズがある一定を下回った場合は、ListViewの大きさ変更をやめ、かつ、windowのスクロール表示にしたい。

そんな要望を満たすのに、それなりに苦労したので結果のメモ。

最終的に目指した動きはこんな感じ。
青枠部分がListViewで、ボタンのある位置よりも画面サイズが小さくなった場合にスクロールバーが登場し、横に部品があることを示す、といった具合。
![目指す姿fxml.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222220/350adcde-da43-76c4-3f64-ee05f8d8456e.gif)

## 環境
java1.8
JavaFX Scene Builder 2.0

## まずは結果から

元記事を表示

[JAVA]abstractとinterfaceの違いについて

Java言語仕様について、面接で答えられなかったことが恥ずかしかったので再度学び直します。

## interface と abstractの関係について

### 様々な表現方法で表す。

|#|interface|abstract|
|—|—|—|
|仕様面|クラス仕様としての定義をしたいときに利用する|継承関係にあり処理を再利用させたい場合に利用する|
|実装クラスor具体クラスとの関係|実装クラス *CAN* 抽象機能|具体クラス *IS* 抽象クラス|

### コード的な違い
#### interface
“`java
// 抽象
public interface Cashier {
void bill();
}

//実装クラス1
public class CreditCart implements Cashier {
public CreditCart(){
}
@Override
public void bill(){
System.out.println(“billed by cre

元記事を表示

PostgreSQLの時系列データのケース:時系列データの自動圧縮

本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/postgresql-time-series-data-case-automatic-compression-over-time_594813)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。

#背景
時系列データベースの最も重要な特徴の一つは、時間の経過に伴う圧縮です。例えば、最終日のデータは5分程度のポイントに圧縮され、最終週のデータは30分程度のポイントに圧縮されています。

PostgreSQLの圧縮アルゴリズムはカスタマイズ可能です。例えば、単純平均圧縮、最大圧縮、最小圧縮、または回転ドア圧縮アルゴリズムに基づく圧縮などです。

[PostgreSQLにおける回転ドアデータ圧縮アルゴリズムの実装 – IoT、監視、センサーのシナリオにおけるストリーミング圧縮の応用](https://github.com/digoal/blog/blob/master/201608/20160813_01.

元記事を表示

あなたのためのJavaスレッドセーフ

## 問

我々は如何にして Java におけるスレッドセーフを保証すべきか。

## 結論

* synchronized ブロックを使いましょう。
* ロックオブジェクトはprivateインスタンスフィールドで定義しましょう。
* ロックオブジェクトはスレッドセーフの保証対象ごとに定義しましょう。

## 薀蓄

* スレッドセーフとは
* スレッド間で可変データを共有する場合において、同期化が保証される状態。

* 同期化の保証とは
* 「原子性の保証」「可視性の保証」の二点を満たすものと定義する。

* 原子性(atomicity)の保証とは
* ある処理の開始から終了までの間、外部からの干渉を排他できること。

* 可視性(visibility)の保証とは
* 時系列に対して最新の値が参照できること。

## Java言語仕様

Javaにおいては特に以下の制御構文が、これまでに出てきた要素に関連する。

* synchronizedブロック
* 引数に同じオブジェクトを指定したブロック間において、操作を同期化する。
* メソ

元記事を表示

OTHERカテゴリの最新記事