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

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

ゼロからのJava〜アプリケーション作成

手順を記録していく

目標1:まずはHelloWorldをしてみる
・paizaでHelloWorldまで。難しければprogateで。

目標2:paizaかprogateで演算と変数まで

目標3:業務においてJavaで何をするのか大まかに理解する

目標4:環境構築と関係性の理解
環境構築といっても、Pleiadesをぶっこむだけ。
サーバー、サーバーアプリケーションの関係、
コンパイルの仕組みを簡単に理解する。
理解できなくてもOK。

目標5:Eclipse内で学習用に触る部分の機能理解
HelloWorldしてみる。

目標6:Javaの基礎学習に戻る

—記載途中—

元記事を表示

備忘録:thymeleafでのlocaldatetimeの扱い

localdatetimeの入った変数をそのまま使うと

”2021-06-24T20:23:39.987941”

のように表示されてしまうので、

“`
th:text=”*{#temporals.format(date, ‘yyyy/MM/dd HH:mm’)}”
“`

のように埋め込む

第一引数は
*{date}
ではなく中身だけ書く

元記事を表示

97~127までの数値をキャストで文字にする

97~127までの数値(int型)をキャストで文字(char型)にするプログラムです。
この機能は初めて知りました。

“`Java
// 新規作成 2021/6/25
// Aunthor 乃木坂好きのITエンジニア

public class CharTest {
public static void main(String[] args) {
//配列を定義する
int[] moji = {96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127};
//拡張ループ文で数値(int型)を文字(char型)に変換してループ文を回す
for(int i:moji) {
System.out.println((char)i);
}

}
}

元記事を表示

コンテナとコレクション

# これは何?

C++ の vector とかは「コンテナ」。
Java の List とかは「コレクション」。

こういう言葉遣いって他はどうなってるのかなと思って、軽く調べて列挙してみた。

## コンテナ

* C++ の STL コンテナ
* go の heap, list, ring のパッケージ名が container

こうしてみると、コンテナは少数派っぽい。

## コレクション

* Java のコレクションクラス
* .NET Framework のコレクションクラス
* Rust の `std::collections`
* go の [sort](https://golang.org/pkg/sort/) の説明が「Package sort provides primitives for sorting slices and user-defined **collections**.」となっている。
* [Swift Standard Library](https://developer.apple.com/documentation/swift/swift_

元記事を表示

【Java復習1日目】サンプルコードから学び直すJava入門①

# サンプルコード(Hello, World)

“`java:Hello.java
class HelloWorld {
public static void main(String[] args) {
String msg = “Hello, World!”;

// 標準出力ストリームを経由したコンソール表示
System.out.println(msg);
}
}
“`

## System.out
`コンソール画面`と結びつく、`標準出力ストリーム`(=`Standard Output Stream`)。

### ストリーム
`コンソール画面`を含む、**外部とのデータの入出力**を行う仕組み。

***

# サンプルコード1(Scanner)

“`java:InputNotExpected1.java
import java.util.Scanner;

class InputNotExpected1 {
public static void main(String[] args) {

元記事を表示

引数エラー

引数エラーが出ました。bmiメソッドはprintData内で受け取ってるので、代入においては型を指定する必要がありませんでした。

修正前

“`main.java
class Main {
public static void main(String[] args) {
printData(fullName(“Kate”, “Jones”), 27, 1.6, 50.0);
printData(fullName(“John”, “Christopher”, “Smith”), 65, 1.75, 80.0);
}

public static void printData(String name, int age, double height, double weight) {
System.out.println(“私の名前は” + name + “です”);
System.out.println(“年齢は” + age + “歳です”);
System.out.println(“身長は” + height + “mです”)

元記事を表示

CentOS8にJavaをインストールする

本ページではCentOSにJavaをインストールする手順についてまとめていきます。
yumでインストールしました。

#前提条件
ホストOS:Windows10
ゲストOS:CentOS8
今回インストール:Java8 ~~JRE,~~JDK
以下JREをインストールする手順も含んでいますが、JDKにJREが含まれているので、必要ありません。

#インストール手順

###yumリポジトリ対象パッケージ検索(確認)
“`
yum search java-1.8.0-openjdk
“`
実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1620534/8fa66e56-7291-8bb8-f3a8-34233cfd0849.png)
メタデータを取得しているのでしょうか…?必要そうな手順です。(飛ばしてもできそう)

###Java8 JDK開発環境インストール
“`
sudo yum install java-1.8.0-openjdk-devel
“`
こちらも上記同

元記事を表示

Java デベロッパー向けの Angular 入門② – Angular を起動するまでの手順について

こんにちは!

テクニカルコンサルティングチームの古堅です。

本記事は Java デベロッパー向けの Angular 入門をテーマにした連載記事の 2 記事目となります。

## 本記事のゴール

この記事では、Angular サンプルをダウンロードから実行までの流れを解説していきます。

以下、前回の記事です。

## Angular のサンプルをダウンロード

以下のページからダウンロードできます。

https://jp.infragistics.com/products/ignite-ui-angular/download/angular-app-template

サンプルの構成など、詳細については以下の記事をご参照ください。

## zipファイルを解凍

ダウンロードすると “IgniteUI_An

元記事を表示

標準入力・標準出力/エラー出力

本ページでは標準入出力とエラー出力について書いていきます。
Linuxに関してですが、個人的な慣れと共にJavaでの説明も混じっています。

コンピュータも、
何かアクションが無いと何も始まらないのは同じのようで…
やることは決まっていても、材料が無ければ何も作れません:cooking:
 例:身長・体重からBMIを算出→データが無いと計算できない など

>データストリーム:コンピュータの、入力→処理→出力 の一連の流れ

入力は標準入力の1つ、
出力は標準出力と標準エラー出力の2つ

###標準入力 stdin
指定をしていないときはキーボードからの入力。
ファイルを指定することもできる 

前述のBMI算出例だと、できれば大人数のデータから調べたいですよね。
→リダイレクトの項目もご覧ください。

###標準出力 stdout
「出力する」というコマンドの時やコマンド実行の過程で通常処理が問題ない場合に端末に出力。
指定をしていないときはコンソール画面

上記標準入力・出力はまとめて標準入出力(stdio)とも。

###標準エラー出力 stderr
コマンド実行時に通常処

元記事を表示

SpringBootポートフォリオ作成_画面

#SpringBootポートフォリオ作成
##要件
Spring Bootで一通りアプリを書く
・Todo項目追加、一覧取得、完了済みマークメソッド
・lombok ログ validation jQuery
JUnitテストケースで単体テスト作成
Git GitHUb
Docker(-compose)を使用
AWSでデプロイ

##作業手順
・アプリケーションで使用するデータベースを作成する。
・STS で新規プロジェクトを作成する。
・テーブル定義を作成する。
・URL 設計を作成する。
・マイグレーションファイルを作成する。
・機能ごとに…
・マッパーやドメインを作成する。
・コントローラーを作成する。
・テンプレートを作成する。
##新規プロジェクト作成
名前:springtodo
Javaバージョン:11
グループ:dev.itboot
成果物:springtodo
バージョン:1.0.0説明省略
パッケージ:dev.itboot.mb
依存関係で以下を選択して
SpringBootDevTools(開発ツール)
Lombok(開発ツール)
Validation=検証(I/

元記事を表示

[競プロ]いもす法実装【Java】

# いもす法を解きます

## いもす法とは
領域内の加算を効率的に行うアルゴリズムです。多次元でも行えて、便利なアルゴリズムとされています。累積和と関連があります。参考リンクは以下のとおりです。

https://imoz.jp/algorithms/imos_method.html

## 例題に合わせて解説
[ABC035 – C オセロ](https://atcoder.jp/contests/abc035/tasks/abc035_c)
ここでは例題に合わせて解説していきます。
今回、オセロのN個の駒が黒を上にして一列に置かれています。その後、Q回、ある駒からある駒までを裏返すという操作をします。その結果を一列で出力せよ、という問題です。

今回の制約からN,Qは200,000までで、例えばN=Q=200,000であったとし、各QにおいてN個の駒を裏返すという操作をするとすると、愚直に実装した場合、O(NQ)の計算量が必要となり、TLEとなってしまいます。
そこでいもす法の登場です。

今回は例題に合わせt1次元の領域について考えます。いもす法では、領域の両端のみ考え、*

元記事を表示

Java Gold SE 11 合格体験記

本日、Java Gold SE 11を受検し、無事合格しましたので、合格までの経緯を共有させていただきます。

まずは私について。

– WEB系自社開発企業開発職, 新卒一年目(入社3ヶ月目)
– 学位:学士(経済学)
– 情報系資格:基本情報技術者, Java Silver
– Javaの実務経験:なし
– 開発経験:ベンチャー企業でインターンシップを半年間(フロントエンドの開発に従事)

入社前にJavaを使うとは聞いていたので、大学4年のときにJava Silver SE 11を受検し、合格はしていたのですが、早速Java Goldを受検するよう指示が出たので、今回受検の運びとなりました。

Javaの実務経験がない中、Java Goldを受検するのはなかなかレアかもしれないということで、以下合格体験記です。

と、その前に、Java Gold SE 11の試験についての情報はまだまだサーチャブルではないのではないかと思いますので、そちらにも触れていきます。

(Java Gold SE 8の情報はたくさんあるんですがね…)

# 旧試験との範囲比較

Java Gol

元記事を表示

条件分岐を整理する

親記事 : https://qiita.com/Regpon/items/1116679adadd8fb76f3f

https://qiita.com/Regpon/items/1116679adadd8fb76f3f

# 判断や処理のロジックをメソッドへ

顧客の属性に応じて値段を変えるロジックがあるとする。
例として顧客属性が生徒だった場合のロジックを考えてみる。

“`Java
if (customerType.equals(“student”)) {
price = basePrice * 0.7;
}
“`

このようなロジックにすると、学生かどうかの判定、学生だった場合値段がどのようなロジックで生まれるのかがわかりにくいのと、管理がしにくくなる。
このロジックの変更を加える際、果たして本当にこの部分の変更だけで問題ないのか、他に同じようなロジックを持ってしまていないか考えなくてはならない。
そこで、学生かどうかを判断するロジック、学生だった場合の値段を決めるロジックを切り出し、再利用可能なメソッドに置き換えることを検討する。

すると以下のようになる。

“`

元記事を表示

【Java】Listに格納した値の平均値を出力

ちょっと悩んだのでメモとして。

“`Average.java
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Average{
public static void main(String[] args) {

//Listに値を格納(ランダムで)
List list = new ArrayList<>();
for(int i=0; i<5; i++) { Random random = new Random(); int randomNum = random.nextInt(101); //0~100 list.add(randomNum); } System.out.println(list); //値が格納されているか確認(後で消す) -> 例:[62, 73, 43, 35, 58]

//Listに格納した値の合計
double sum = 0;
for(int

元記事を表示

【Java】間違いやすい! オーバーロード と オーバーライド の違い

# はじめに
Java を勉強しているとぶち当たる壁。
そう、**「オーバーロード」と「オーバーライド」の違い**です。

今回は、混同しやすいこの2つの用語について、私が「あ!なんかわかったかも!」と思えたイメージを紹介したいと思います。

# 前提
なるべく本筋である「オーバーロード」と「オーバーライド」の違いが伝わりやすいように、説明がそれすぎないよう心がけています。

なので、これから説明に出てくる用語(例えば「メソッド」「コンストラクタ」「継承」など)については、この記事では1から説明はしていません。

そんな用語まったくわからない!聞いたこともない!という方にとっては混乱を増やしてしまうだけかもしれませんが、そのあたりご理解いただいた上で読んでいただけると幸いです:bow_tone1:

# まず結論から
オーバーロード は「元々あるメソッドが使える**道を増やす**」
オーバーライド は「元々あるメソッドの**上に乗って上書きする**」

これだけでは、え、どういうこと…?と思いますよね。
まず、それぞれどういう意味なのか見ていきましょう。

### 【オーバーロード】

元記事を表示

Oracle Java SE8 Silverに合格するまで

2021年06月にOracle認定のJava SE8 Silverに合格したので、経緯を書き残していく。

概要

* 学習期間
* 1ヶ月余り
* 1日あたりの学習時間
* 2-3時間 (休日は5時間ほど)
* 使用した教材、環境
* 徹底攻略 Java SE8 Silver 問題集 (黒本)
* Paiza io
* 学習前のレベル
* PaizaのスキルチェックでBランクが解ける程度

SE8 Silverを受験した理由

もとはBronzeの勉強をしていたが、

* いきなり Silverを受けられる。
* 試験範囲がほぼ同じ

という2点を知り、試しに Silver の問題集に目を通してみたところ、
「確かに解けそうだな」と感じたのでそのまま Silver の学習にスライド。

SE11 ではなく SE8 を受験したのは、
たまたま書店にSE11の問題集が売っていなかったという程度の理由。

勉強方法

* 1周目
通勤時間に解説文を読んでインプットしてた。
条件分岐や繰り返し処理について

元記事を表示

値オブジェクトを作ってimmutableな実装を心がける

親記事 : https://qiita.com/Regpon/items/1116679adadd8fb76f3f

https://qiita.com/Regpon/items/1116679adadd8fb76f3f

# 値オブジェクト

値を扱うための専用の**小さな**クラスを立てる

| 値オブジェクト | 内容 |
|:-:|:-:|
| Quantity | 数量 |
| Price | 料金 |
| Days | 日数 |
| DateOfRecord | 記録日 |
| Telephone | 電話番号 |

などのように業務アプリケーションで使う関心ごとを扱うオブジェクトをクラス化して、そのオブジェクトの振る舞いを集約させる。
そして重要なのが**Setter**を実装しないことだ。

値を代入できるのはあくまでコンストラクタのみ。

値を更新するということはつまり、別の意味を持つオブジェクトに生まれ変わっているため、新たなインスタンス変数として定義すべきだからである。

以下のような注文に応じて注文の合計金額を返すメソッドについて考えたとすると、

“`Jav

元記事を表示

JsonInclude(Include.NON_NULL)のNULLカラムをObjectMapperで強制出力

本稿は `JsonInclude(Include.NON_NULL)` を指定したclassのオブジェクトに対して、
値がnullでもデシリアライズ時に強制的に表示する方法についてのメモである。

# 背景と動機

ObjectMapperではなく、class定義でメンバごとに表示制御を行う場合、
基本的にObjectMapperに関係なく、nullメンバは表示されなくなる。
オブジェクトで指定してるのだからその動作は当然ではあるのだが、
私は開発環境向けにどうしても強制的に表示したくなった。
しかし、nullメンバを表示しない方法はたくさん見つかるが、
逆は全然情報が見つからなかった。

# nullメンバを非表示

オブジェクトの全メンバに対してnullの場合に表示しないようにするには
以下のようにクラスにJsonIncludeを付与すれば良い。
https://fasterxml.github.io/jackson-annotations/javadoc/2.9/com/fasterxml/jackson/annotation/JsonInclude.Include.html

元記事を表示

SerializableのserialVersionUIDが原因で発生するInvalidClassExceptionの対処方法

# serialVersionUIDとは

serialVersionUIDはSerializableなオブジェクトに定義するバージョン番号のようなものです。データのシリアライズ/デシリアライズする際に、互換性を確認するためにこのserialVersionUIDを使用します。

また、serialVersionUIDを定義しない場合、自動で計算されることになります。

## `InvalidClassException`

これは、Serializableなオブジェクトをデシリアライズする際、serialVersionUIDが異なる場合に発生します。

“`
java.io.InvalidClassException
com.sample.data.SampleSerializableData;
Incompatible class (SUID):
com.sample.data.SampleSerializableData:
static final long serialVersionUID =4092797215335171425L;
but expect

元記事を表示

対策例:startActivityForResult(Intent,int) in Fragment has been deprecated

# 背景
startActivityForResult(Intent,int) での画像選択コードが deprecated と言われるので、修正前後のコード例を残しておく。

# コード

## 修正前

“`java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private final static int RESULT_PICK_IMAGEFILE = 1000;

@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
super.onActivityResult(requestCode, resultCode, resultData);

if (requestCode == RESULT_PICK_IMAGEFILE && resultCode == RESULT

元記事を表示

OTHERカテゴリの最新記事