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

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

【Android】 TextWatcherを使って、金額入力時にカンマを加える。

## 今回の目的

EditTextで金額を入力する時、月並みだが、動的に入力した数値をカンマ区切りに変換できないか、
色々調べたところ、ある程度制御が出来るようになったので、紹介していこうと思います。

## 使用する環境
– AndroidStudio Ver 3.4.1
– Android 10.0 (Q) API 29

## TextWatcher

[TextWatcher (AndroidDeveloper)](https://developer.android.com/reference/android/text/TextWatcher)

⇨ EditTextの入力を監視するEventListener(編集前の値を取得したり、編集後の値やポジションを取得する等、出来る)

色々詳しいことは、参考サイトや↑のリファレンスを参照してください。

## 実装に当たって

まずはImplements(実装)していきます。

“`MainActivity.java
public class SampleClass1 extends AppCompatActivity impl

元記事を表示

Eclipse+Forgeでマイクラのmod開発~身に着けられる防具(サングラス)を作ってみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191672/0c9d3696-fe6f-fbc7-7c25-dd755ae779ec.png)

最近職場が変わって多忙してました。。なのでかなり久々の記事。忙しいのは変わらないので当分ペースが落ちそうw

## 環境

* OS: Windows10
* Jdk: openjdk version “15.0.2” 2021-01-19 ※16.xでもいいかもだけどgradleやらなにやら色々変わってしまって心配だったので今回は15で。
* IDE: Eclipse IDE for Java Developers (Version 4.19.0)
* Buildship(Eclipseのgradleプラグイン) : 3.0
* Minecraft: Java版 1.16.5
* Forge: 1.16.5
* paint.net V4.2.16

## Javaのコード

前回の記事([Eclipse+Forgeでマイクラのmod開発~単純

元記事を表示

【Java発展学習17日目】SwingによるウィンドウUI制御

# GUIの種類
GUI(Graphical User Interface)の実現方法は、以下の2通り。

| GUI | 用途 | デザイン設計 |
|:–|:–|:–|
| WebUI | Webアプリケーション | HTML |
| ウィンドウUI | OSアプリケーション | プログラム |

# Swing APIにおける3つのウィンドウ
[参考: Swing](https://www.javadrive.jp/tutorial/)
**Swing API**が扱うウィンドウは、以下の3種類に分類される。

| ウィンドウ | 内容 | API |
|:–|:–|:–|
| アプレット | ブラウザへの埋め込みウィンドウ | `JApplet` |
| フレーム | アプリケーション用ウィンドウ | `JFrame` |
| ダイアログ | 対話入力用ウィンドウ | `JDialog` |

また、これらのウィンドウはメインスレッドとは独立した、描画処理を行う**UIスレッド**によって実行される。
`UIスレッド`は複数のスレッドの**総称**であり、中でもイベ

元記事を表示

「ごく普通の文系大学生がIphoneアプリエンジニアになるまで」#1 2021/7/22

###Javaのプログラムが動く過程

– ソースコードファイル(.java)の作成
– コンパイル (バイトコードに変換、クラスファイル(.class)作成)
– インタプリタ内のJVMによって実行 (バイトコードをマシンコードに変換し、CPUに命令)

###プログラミングにおける計算

– 計算は全て「オペランド」と「演算子」によって構成
– 演算子は周囲のオペランドを使って計算をする

#####評価 = Javaが式に従って計算処理をしていくこと
原則

#####1.評価結果への置き換えの原則
演算子が周囲のオペランドを使って計算を行い、オペランドを巻き込んで結果に置き換わること

例) 1 + 5 – 3 の場合

1. 1 + 5 が評価される => +演算子が1と5を使い計算をし、それらとともに6に置き換わる
1. 6 – 3 が評価される => -演算子が6と3を使い計算し、それらとともに3に置き換わる
1. 結果:評価結果に置き換わり続けることにより3となる

#####2.優先順位の原則
規定の優先順位によって演算子が順番に評価されていくこと

#####3.結

元記事を表示

ごく普通の文系大学生がIphoneアプリエンジニアになるまで

##記事の概要
これ以降の記事では、ごく普通の文系大学生がいかにしてIphoneエンジニアになっていくのかと言う過程を記録に残していく。その過程の中での勉強方法、得た知見、経験などを記録していくことで自分の学習の定着と今後のエンジニア志望の文系大学生の参考になるような記事をめざす。

##自己紹介

– 某ど真ん中大学法学部在学中
– 19歳男
– プログラミングは、高校生の時javascriptでブラウザ上で動くゴミみたいなゲームを作った程度のみ(完全な素人)

##経緯
実際のところの1番の理由は、自分が欲しいと思った機能を備えているアプリケーションを自力で作りたいと言うのが理由である。あと、大学生になり特に強い夢などはないため、何か楽しそうなことで仕事にもつながりそうなものに熱中して楽しんだ結果少しでも自分の成長、自信につながれば素晴らしいなと感じたためである。

##目標
1.自力でアプリを0からリリースするまでできるようになる(期限:2021年8月末)
2.IT企業でエンジニアとしてインターン/アルバイトする(期限:2022年4月)
3.Iphoneエンジニアになる

##

元記事を表示

基本データ型

基本データ型

基本データ型ってなに?

変数に格納される値の種類を定義するもので、別名「基底型」「プリミティブなデータ型」ともいいます。
基本データ型には byte,short,int,long,float,double,char,boolean の8種類のデータ型があり、値の種類によって「整数型」「浮動小数点型」「文字型」「ブール型」の4つに分類されます。
また、基本データ型以外にも「参照型」または「複合データ型」と呼ばれるデータ型があります。

基本データ型の説明

整数型

整数データを扱います。
整数型のデータは全て符号付きで、正負どちらの値も保持することができます。

|   データ型    |   サイズ  |              値の範囲              |
|:—————–:|:——————:|:——————:|
| byte | 1

元記事を表示

Java入門 超初心者用 プログラムの基本スタイル

# はじめに
今までRubyしかやってこなかったのですが、サーバーサイドとして働きたくてJavaもかじったほうが良いと聞き、勉強もちょっとずつやっていこうと思いました。
完全に備忘録です。
また本記事は、ゼロからわかるJava 超入門 改定3版にて勉強したものをアウトプットしています。

# 目次

1. [基本プログラム](#項目1)
1. [項目2](#項目2)
1. [参考記事](#reference)



# 基本プログラム
基本中の基本ヌルプログラム

“`sample.java
class クラス名 {
public static void main(String[] args){
}
}
“`
いきなりでてきたヌルプログラム。Rubyしかやってこなかったが、いきなりワケワカメ。
**書籍での説明:ヌルプログラムは、プログラムとして成立しているものの。何も処理は行わない。**
おーなるほど。これをベースに行いたい命令を追加していってプログラムを完成させてくんだね!

元記事を表示

ラッパークラスについて

ラッパークラスについて

ラッパークラスとは

基本型の値をラッピングする種々のクラスの総称です。

ラッパークラスと基本型

|      基本型       |     ラッパークラス     |
|:—————–:|:——————:|
| byte | Byte|
| short | Short |
| int | Integer |
| long | Long |
| float | Float|
| double | Double |
| char | Character|
|boolean | Boolean|

ラッパークラスのメリット

格納している数値を文字列に変更したり

元記事を表示

JavaのSSLSocketを使う(クライアント編2)

#はじめに
次はクライアント証明書を使ってみる。ついでにオレオレのサーバ証明書に対応する。

#概要
サーバの時 ( https://qiita.com/jkomatsu/items/d65ccbc6f8e7d73a9972 ) と同様に keystore, truststore をそれぞれ指定して使用する。
keystore にはクライアント証明書(秘密鍵含む)、truststore にはクライアント証明書のCA局証明書、オレオレサーバ証明書のCA局証明書を入れておく。

クライアント証明書のCA局証明書は、サーバ側のtruststoreに読み込んだもの。

#SSLContext
手順としては標準のtruststoreを使う場合 ( https://qiita.com/jkomatsu/items/40f929894e66b9739a28 ) と同じく SSLContext を取得、SSLSocketFactory を得て Socket を作る。

というわけで SSLContext と SSLSocketFactory を作る部分はこのようになる。大体サーバ側と同じ。

“`

元記事を表示

JavaのSSLSocketを使う(クライアント編1)

#はじめに
クライアント側の第1段階として、標準のtruststoreを使ってSSL通信する。

#概要
サーバ側と同様にSSLContextのインスタンスを取得して、そこからSocketFactoryを得る。
SocketFactoryからSSLSocketが得られて、後は普通のSocketと同じように通信できる。

#標準SSLContext
標準のtruststoreを使うSSLContextの取得は簡単で、getDefault() すれば良い。
コードとしては、これだけになる。

“`
import javax.net.ssl.SSLContext;

.
.
.

SSLContext ctx = SSLContext.getDefault();
“`

#SocketFactory
SSLContextが取得できればこちらも簡単。前述の ctx を使って getSocketFactory() すれば良い。

“`
import javax.net.ssl.SSLSocketFactory;

.
.
.

SSLSocketFact

元記事を表示

【Java/Lombok】@SuperBuilderでバリデーションする

##はじめに

オブジェクト指向プログラミング初心者が考える最適なBuilderパターンを解説します。誤った考え方や改善案等ありましたらコメントいただければと思います。

##Lombokの@SuperBuilderではダメ?
Lombokには予め、スーパークラスからのフィールドにも対応したビルダーを自動で生成する@SuperBuilderアノテーションが用意されています。

“`java:SomeClass
import lombok.experimental.SuperBuilder;

@SuperBuilder
class SomeClass {
// some code…
}
“`

このように、アノテーション1つ頭につけるだけで、自動的に親クラスのブロパティを含むビルダーを生成してくれます。

@SuperBuilderについて詳しくはこちら。

https://projectlombok.org/features/experimental/SuperBuilder

しかし、このアノテーションは**バリデーションに対応していません**。加えて**

元記事を表示

メソッドのJavadocには何を書くべきなのか

Javaで開発しているチームで、Javadocに何を書くべきかわからない、という課題がありました。[エンジニアのためのJavadoc再入門講座](https://www.shoeisha.co.jp/book/detail/9784798119489)の3章を読んで自分なりにまとめた内容となります。

## メソッドのJavadocの構成
メソッドのJavadocの構成の基本形は以下となります。

“` java
/**
* 主説明
* @param 引数の説明
* @return 返却値の説明
* @throws 例外の説明
*/
“`

## 引数の説明に書くべきこと
まず、引数の説明に書くべきことについて。主説明については後回しにします。
引数を取るメソッドのJavadocにはすべての引数についての説明を記載すべきです。引数の説明には`@param`タグを使用します。
引数の定義域が大事なポイントになります。引数に取りうる値の範囲は明確になっているかを最初に確認しましょう。[^1]

### 特別な値を受け取ったときの挙動
nullや0、負数、空文字などの特別な値

元記事を表示

Javaで書くフィボナッチ数列

Javaで書くフィボナッチ数列

Javaを使ってフィボナッチ数列を生成するプログラムを作成しました。

“`java:コード

public class Fibonacci {
public static void main(String[] args)
{
int f0,f1,f2;

f0 = 0;
f1 = 1;

System.out.println(f0);

while(f1 < 100000) { System.out.println(f1); f2 = f0 + f1; f0 = f1; f1 = f2; } } } ``` ```java:結果 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 ```

元記事を表示

【Java発展学習16日目】マルチスレッドプログラミング

# マルチスレッドプログラミング(並列処理; multi-thread programming)
[参考: 発展学習3日目(ラムダ式)](https://qiita.com/b150005/items/6084efe79c1a425f7a30#%E3%83%A9%E3%83%A0%E3%83%80%E5%BC%8Flambda-expression)
全ての処理は特定の**スレッド**上で実行され、`main()`メソッドは**mainスレッド**上で動作する。

ここで、サブスレッド(=スレッドクラス)は「`Thread`クラスのサブクラス」または「`Runnable`インタフェースの実装クラス」で定義され、
`Runnable`インタフェースは**関数インタフェース**であるため、**ラムダ**式を用いた記述が可能。

また、サブスレッドはスレッドクラスで再定義された`run()`メソッドの**実行完了時に自動消滅**され、JVMは全**ユーザスレッド**の実行終了を待機する。
スレッドの実行終了を待機しない場合は、`Thread#setDaemon()`メソッドを用いて**デーモ

元記事を表示

文字の切り取り方

Javaで標準入力で入力した文字をsubstringとcharAtでとる方法です。

substringで1文字ずつとる場合

“`Java
import java.util.Scanner;

public class flora2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“floraの文字を入力してください”);
String ans = sc.nextLine();
int nagasa = ans.length();
for(int i=0;i

元記事を表示

【Java発展学習14-15日目】設計原則とGoFデザインパターン、モジュールシステム

# 6つの設計原則

| 分類 | 設計原則 | 内容 |
|:–|:–|:–|
| コード記述 | DRY(Don’t Repeat Yourself) | 繰り返さない |
| | PIE(Program Intently and Expressively) | 意味・意図の明確化 |
| クラス設計 | SRP(Single Responsibility Principle) | 単一責任原則 |
| | OCP(Open-Closed Principle) | 開放閉鎖原則 |
| クラス間連携 | SDP(Stable Dependencies Principle) | 安定依存原則 |
| | ADP(Acyclic Dependencies Principle) | 非循環依存原則 |

## PIE
`PIE`では、「コメント文を取り除いても可読性の高いコード」を目指す。
具体的には、以下の3つの手法をとる。

> 1. 変数名で**役割・目的**を表す
> 2. **マジックナンバー**をfinal定数で命名
> 3. 制御構造の深い処理への命名

元記事を表示

Couchbase Java SDK解説:分散トランザクション API解説および包括的な利用例

## はじめに

Couchbase SDKを使った、Javaプログラミングにおけるトランザクションの扱いを具体的なAPIコールに即して解説します。

本記事の関連情報として以下をご参照ください。

[Couchbase Java SDK解説:分散トランザクションの内部メカニズム](https://qiita.com/yoshiyuki_kono/items/2d428b16b224b8c01239)

[Couchbase Java SDK解説:分散トランザクション〜エラー処理を理解する](https://qiita.com/yoshiyuki_kono/items/d7eb2b9553d858c7cb93)

[Couchbase Java SDK解説:分散トランザクションプログラミング入門](https://qiita.com/yoshiyuki_kono/items/4efb2f1f5a03051e28c5)

## ドキュメントへのK/Vアクセス

#### ドキュメントの取得
ドキュメントを取得するには、`get`と`getOptional`の2つのメソッドがあります。

元記事を表示

“指定されたコンパイラー準拠は x.y ですが、JRE zz が使用されています”の解消

Eclipse でプロジェクトを作ると
“指定されたコンパイラー準拠は 1.5 ですが、JRE 11 が使用されています“
みたいなWarningが出ることがある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/414729/2adac0fe-e55c-4f48-3bb3-5170e50c6640.png)
これはまんま、このプロジェクトでコンパイル/ビルド用に指定した“javac“のバージョンが“1.5“になっているが、実際に環境にインストールされているJavaのバージョンは“JRE 11“ですよと言っている。
実際問題、Java 1.5 でコンパイルしたコードは Java 11 でも Deprecated になった API さえ利用していなければほとんどの場合動作すると思う。けれど Warning が出たままだと気持ち悪いし、古い API を間違って使ってしまうのも嫌なので、実行環境の JRE のバージョンとビルド用の javac のバージョンを合わせる方法について以

元記事を表示

ArrayListの型に独自のクラスを指定するメリットって何なのさ!

備忘録的な感じです。
Javaの配列って型が固定だったりする。

“`java
int[] num;
//配列の宣言
“`
こういう書き方もできる。

“`java
int num[];
//配列の宣言
“`
型が混在した配列を扱う場合には、通常の配列だと単一の型に指定するため、そのまま通常の配列に代入して扱うことはできない。
例えばSQLでレコード1行分を取得する際、int型の`id`とString型の`name`が混在していたりする。
そうした場合に独自の配列を作る必要がある。
その場合、`ArrayList`を`List`型で宣言する。
`<>`内の型に独自のクラスを指定し、クラス内にSQLのカラムに合わせたフィールドを定義する。
そうすると下記の通り。

“`java
//Introduceクラス(実行ファイル)
package sample;

import java.util.ArrayList; //ArrayListのimport
import java.util.List; //Listのimport

public class Introduce {
p

元記事を表示

Running CICS-Java application – (5) Using JCICSX

This article is translated from the Japanese article below.
https://qiita.com/tomotagwork/items/cac290f6435453c19b7b
([google translate](https://translate.google.com/) was used.)

#Introduction
CICS Transaction Server provides a class library called JCICS for using CICS functions from Java. This is the Java version of EXEC CICS API, which allows you to call other CICS programs with LINK and access CICS management resources such as TSQ/TDQ. By using this, you can write a CICS application in Java.

元記事を表示

OTHERカテゴリの最新記事