- 1. Javaの入門テキスト
- 2. java 回転コマンドの作成
- 3. SpringBoot + Spring JPAでMySQLのJSON型のValue検索
- 4. IntelliJ IDEAでjava 13のswitchをためす
- 5. [ java ] インターフェース
- 6. Javaにおける入力した5個の数字の内、最大値と最小値を求める(修正ver)
- 7. Java Gold SE 8 合格に際して
- 8. 用解説語:インターフェースについて
- 9. 用語解説:アクセサ / アクセサメソッド、カプセル化
- 10. JavalinでWebアプリケーションを構築する
- 11. 用語解説:オーバーロード
- 12. Google App Engine (Java 11) + Spring Boot + Gradle で Hello World
- 13. Javaにおける入力した5個の数字の内、最大値と最小値を求める
- 14. Alfresco CEのトラッキングタグを削除する方法
- 15. javaでOptionalのstreamからempty以外のコレクションを得る
- 16. リクエストパラメータのログ出力サンプル Java & SpringMVC
- 17. IntelliJ gradle2.2→2.6環境移行で躓いたときにやったこと
- 18. ジェネリクスが便利
- 19. 自動読み込み機能のゲームランチャー を作った話[Java]
- 20. java初級編 3
Javaの入門テキスト
[●テキスト本体(PDF形式224ページ:1.71MB)](http://www.k-techlabo.org/www_java_new/JavaText.pdf) 2019/11/16更新
[(→ミラーサイトからDL)](https://ktechlabo.xsrv.jp/www_java_new/JavaText.pdf)
[→テキスト中のサンプルプログラム](http://www.k-techlabo.org/blog2/?page_id=1384)
---------------------
(2019/11/16)
学校でプログラミング教えています.
初心者に教えるためのJavaの入門テキストを作りました.
とりあえず「Javaで一応プログラミングできる」ようになるまでの内容にしています.Java SE 8の文法までの内容にしています.
GUI(Swing,SWT)アプリケーションを作るところまで解説しています.
まだ試作品の段階ですが,教育現場で使いならがテキストも修正・アップデートしてゆきます.
無料で公開しますので,ご意見いただけたら嬉しいです.
(
java 回転コマンドの作成
# まえがき
javaコマンドで回転コマンド作成した。
# 参考文献
https://blog.no42.org/code/docker-java-signals-pid1/
https://qiita.com/munieru_jp/items/02533ebe5c822e6e29bb
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Scanner.html
https://stackoverflow.com/questions/1216172/how-can-i-intercept-ctrlc-in-a-cli-application
# 環境
“`bash
$java –version
openjdk 13 2019-09-17
OpenJDK Runtime Environment (build 13+33)
OpenJDK 64-Bit Server VM (build 13+33, mixed mode, sharing)
$bash –version
GNU bash, バージョン 5.0.
SpringBoot + Spring JPAでMySQLのJSON型のValue検索
## 概要
JPAを使用してのJSON型カラムのValue値検索について調べたので、共有として。
Specificationにて検索するケース。## 結論
MySQLの関数を使用する。### JSON_EXTRACT
“`sql
SELECT * FROM ATABLE WHERE JSON_EXTRACT(“column_name”, “$.key”) = value;
“`なので、Spring JPAのSpecificationを使用する場合、
“`java
public SpecificationjsonSearch(String key, String val) {
return (root, query, cb) -> {
return cb.like(cb.function(“JSON_EXTRACT”, String.class, root.get(“names”), cb.literal(“$.” + key)),
“%” + val + “%”);
};
}
“`## 参考
[Custom expressi
IntelliJ IDEAでjava 13のswitchをためす
※ 2019/11/15 時点です。
IntelliJ IDEAまったくと言っていいほど触ったことが無いので、自分用にメモ。
# 環境
IntelliJ IDEA 2019.2.4 (Community Edition)# 手順
New ProjectでProject SDKに“`13“`を選択する。![intelljeideaswith0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31934/75475708-2b79-9485-86cb-13c5b5f1201b.jpeg)
https://twitter.com/java/status/1193898422849269760 の http://blog.codefx.org/java/switch-expressions/ を参考にサンプルコードを書く。
“`java
import java.io.FileNotFoundException;public class Main {
static enu
[ java ] インターフェース
今回はインターフェースについて記す。
##インターフェースとは
後からメソッドを実装して使用するためのもの。
例えば足し算や引き算というものは計算とくくることができる。この時、計算がインターフェース、足し算や引き算がインターフェースを実装するクラスということである。##インターフェースを使ったプログラム
インターフェースは以下のように定義できる。~~~java
//interface インターフェース名{}
interface Calc{}
~~~インターフェースでは
・フィールド:定数のみ宣言できる(暗黙的にpublic static finalで修飾される)
・メソッド :抽象メソッドのみ定義できる(暗黙的にpublic abstractで修飾される)
と決まっている。~~~java
interface Calc{
int NUM1 = 1; //修飾子はpublic static finalが省略されている
int NUM2 = 10;void calc(); //抽象メソッド
}
~~~インターフェースはimplementsを使
Javaにおける入力した5個の数字の内、最大値と最小値を求める(修正ver)
先日5個の数字から最大値と最小値を求めるプログラムを投稿しましたが、コメントでアドバイスをいただいたので修正したものを再投稿したいと思います。@LouiS0616 さんコメントありがとうございます…!!
ちなみに前回の記事のリンクをここに貼っておきます。https://qiita.com/GARA41679531/items/c81b57a56bfcb28f84a0
#変更した点
前回のコードでは変数 min と max を 0 で初期化していたので、入力された数字がすべて正の数または負の数の時に最大値もしくは最小値のどちらかが 0 で出力されてしまいました。
そこを改善するために、1つ目に入力された数字を変数 min と max に代入し、そこから大小関係を調べるコードに書き直しました!#コードの記述
“`Java
package max_min;
import java.util.*;
import java.math.*;public class Max_Min {
public static void main(String[] args) {
//
Java Gold SE 8 合格に際して
# はじめに
この度、11月某日にJava SE 8 Programmer II(Gold)を受験し、無事合格致しました。
様々な合格体験記がこのQiitaにはございますし、私自身、Gold受験を思い立ったのが5月ごろということでお世辞にも効率よい勉強の仕方が出来たとは思いません。
しかし、時間をかけた分操作のプロセス、思想などを深く掘り下げて理解することが出来たと感じています。実際満点とはいきませんでしたが、問題に対してプロセスを追い、噛み砕きながら解いていくことが出来ました。
資格を取るにあたり、ただ問題集を闇雲に頼らず、己の知識として吸収することが出来たのは良い経験になりました。
本記事では、頻出とかは関係なく面白いと思った内容を辿っていこうと思います。
# Stream Pipeline
Goldを受験する際避けて通れないStream APIですが、操作の流れが一見誤解されそうな仕組みをとっています。しかし、一度理解すればStream関連の問題にしっかり活きてくる内容だと思います。
以下に例を示します。
“`example.java
public cl
用解説語:インターフェースについて
【インターフェース/interface】とは
・境界面、接点、連絡役、橋渡し、などの意味を持つ
・何かと何かが接する部分、もしくはその間
・クラスに含まれるメソッドのひとつ
・メソッドの型と変数のみを定義している
・メソッドの具体的な処理内容は記述していない
・メソッドを利用する直前で処理内容を記述することが可能
・複数のインターフェースを継承し、新しいインターフェースを作ることも可能(多重継承というらしい)(例)インターフェースの宣言/実装
——————————-『宣言』
→ interface インターフェース名 {}『実装』
→ class クラス名 implements インターフェース名{}——————————-
【抽象クラス/abstract】とは
・abstract:抽象、の意
・抽象メソッドを1つ以上持つクラスのこと
・定義のみを宣言するメソッド(メソッド名・引数など)
・具体的な処理内容を記述しないメソッド
・メソッドのオーバーライドが可能
用語解説:アクセサ / アクセサメソッド、カプセル化
アクセサメソッドに入る前の補足
【カプセル化/ encapsulation】とは
・オブジェクト指向言語の特徴の一つ
・関連性のあるデータやプログラムを容器の中に収納すること
・容器 = オブジェクト
(※容器の名前はオブジェクト、と記載していました。修正いたします。)・フィールド、メソッドを収容する
・収容したものは、クラスの外から干渉できない
(※干渉できるものもあるようです。ご指摘ありがとうございます。)・オブジェクトの中に収容したフィールドやメソッドは、外から干渉できないように保護されている
・オブジェクトに入れて他から触れなくすることをカプセル化という(みんな箱入り娘?)
【アクセサ/アクセサメソッド】とは・フィールドのアクセスを仲介する目的で用意されるメソッド
・フィールドの値の更新や取り出しは、そのオブジェクト(容器)のメソッドを経由する
・全てのフィールド値は『set○○』『get○○』というメソッドがないとアクセスできない
・この『set○○』『get○○』のことをアクセサという【フィールド】とは
・clas
JavalinでWebアプリケーションを構築する
[Javalin](https://javalin.io/)というフレームワークを試してみたので投稿します。
このフレームワークは、参考書や日本語のサイトなどの情報が少ないですが、DocsとTutorialがとてもわかりやすく、特にTutorialには、それぞれサンプルプログラムがGitHUBに投稿されているので、Intellijにそのままインポートしてカスタマイズできたりしますので、WEBアプリを作成するのにあまり困らないでしょう。
# 環境
| カテゴリ | 値 |
|:—————–|——————:|
| os |windows 10 home 64bit |
| Java| 1.8 |
| framework| Javalin 3.6|
| 開発環境| IntelliJ IDEA 2019.2|#1. Hello World
Gradleプロジェクトを新規作成して、以下を実装するだけで
用語解説:オーバーロード
オーバーロードとは
・多重定義、overload
・同一クラスの中で行う(?)
・オブジェクト指向プログラミングの技法のひとつ
・引数や戻り値が異なるが名称が同一のメソッドを複数定義すること
・同一名称の関数(メソッド)を複数個定義し、引数の違いで区別する
※メソッドは、クラス内に定義した関数。処理の塊、手法。・引数の型が異なる同名のメソッドを予め複数定義しておく
→ メソッドを呼び出すときに選択肢ができる
→ 引数・戻り値の型に応じて適切なメソッドの呼び出しが可能
→ 呼び出し時のチェック・メソッド内部での条件分岐を減らせる
→ 可読性・保守性が向上する【メリット】
・メソッドの煩雑化防止
・似て非なるメソッドの大量記述の防止【デメリット】
・増えすぎると機能を理解しづらいメソッドを生む可能性あり”オーバーロードの本質は
『引数や戻り値、個々の振る舞いは異なるが、振る舞いの本質は同様』の場合のメソッドかコンストラクタに対して適用するべきであり、
『引数の型が異なるだけで振る舞いは同様』の場合のメソッドをオーバーロードしても混乱のもととなりやすい。”
Google App Engine (Java 11) + Spring Boot + Gradle で Hello World
## 概要
– Google App Engine Java 11 スタンダード環境 + Spring Boot の構成でシンプルな Hello World 表示 Web アプリケーションを作る
– Google App Engine Java 11 スタンダード環境の正式版リリースは2019年10月30日にアナウンスされている
– Java 11 リリースは2018年9月25日にアナウンスされている## 環境
– Google App Engine Java 11 スタンダード環境
– Spring Boot 2.2.0
– Gradle 6.0
– JUnit 5
– Thymeleaf 3## Java 8 スタンダード環境から Java 11 への基本的な箇所の変更点
– インスタンスクラスのメモリが2倍に増えた (例えば F1 は 128MB が 256MB になった)
– アプリケーション設定ファイルが appengine-web.xml から app.yaml に変更された
– war ファイルではなく、実行可能な jar ファイルをデプロイする必要がある#
Javaにおける入力した5個の数字の内、最大値と最小値を求める
初投稿です。文章やコードに読みにくい部分や足りない部分があるかもしれませんが、温かい目で見ていただけると幸いです。
#まえがき
本日は Java において、「自分が入力した5個の数字の中から最大値と最小値を求める」というプログラムを作っていきたいと思います。説明の流れとしては実際に書いたコードの写真をお見せした後に具体的に言葉で説明していきたいと思います。ちなみに開発環境はEclipseを使っています。#実際にプログラムを作る
##コードの記述
“`Java
package max_min;
import java.util.*;public class Max_Min{
public static void main(String[] args){
//TODO 自動生成されたメソッド・スタブ
Scanner scanner=new Scanner(System.in);
double max=0;
double min=0;
int i;
double a;System.out
Alfresco CEのトラッキングタグを削除する方法
# やること
Alfresco Community Edition のshareページに設置されるトラッキングタグを除外する。
自身の備忘録として。# バージョン
Alfresco 6.1.0-RC3
Java 8
Maven 3.6.1# 手順
– [Alfresco/shareのリポジトリ](https://github.com/Alfresco/share)をローカル環境にクローン(稼働中のAlfrescoとは別の環境に)
– share/share/src/main/java/org/alfresco/web/scripts/MessagesWebScript.java内の if isCommunty() {} 部を削除し上書き保存
– ビルドして、生成されたMessagesWebScript.classを稼働中のAlfresco環境に配置し、再起動
javaでOptionalのstreamからempty以外のコレクションを得る
javaで“`Optional“`のstreamから空で無いものを得ようとするのは結構面倒だった。https://www.baeldung.com/java-filter-stream-of-optional にあるように“`filter()“`か“`flatMap()“`で頑張るしかなかった。が、java 9から“`Optional::stream“`が追加されてだいぶ楽になった。
いま、以下のような、もし空文字であれば“`Optional.empty()“`を返す関数がある、とする。これを文字列リストの各要素に適用し、非空文字のリストを得たい、とする。
“`java
static Optionalmap(String s) {
if (s.length() == 0) {
return Optional.empty();
}
return Optional.of(s);
}
“`
filter
で頑張るのはこんな感じ。“`java
List.of(“1”, “2”, ,””, “
リクエストパラメータのログ出力サンプル Java & SpringMVC
# 前書き
SpringMVCを使用していて、
**リクエストURLやリクエストパラメータをログに出したい!**
ということが度々あり、その度に専用のfilterクラスを作っていたので、いっそ自分のために記事に残しておいたら今後幸せになれるのでは?
と思い記載しました。完全に自分用のメモです。
# 環境
* Java 8 (11でも動きます)
* Spring Boot 2.2.1
* Spring MVC (バージョンはBootの規定を使用)
* Lombok (バージョンはBootの規定を使用)※Spring WebFluxでは試していません。
# コードサンプル
“`java
package com.example.demo.filter;import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import
IntelliJ gradle2.2→2.6環境移行で躓いたときにやったこと
#概要
会社でPCの交換を強要されて仕方なくIntelliJのgradle環境を移行したときに盛大に躓いたので、
そのときに解決までにやったことをメモします。知らぬ間にGradleさんのアイコンがぞうさんになってたんですね~
#環境
### 元の環境
– IntelliJ IDEA CE 2017.3
– gradle 2.2### 移行後の環境
– IntelliJ IDEA CE 2019.2
– gradle 2.6#先に結論
とりあえず以下の手順でやったら元の環境と同じように動いてくれました。
1. 元の環境から「.idea」フォルダをコピーしてプロジェクトフォルダ内に置く
2. intelliJから開きたいフォルダを「inport project」で開く
3. build.garadleすると以下のエラーが出るので、そいつに従ってgradleを2.6に引き上げる
4. もう一度build.garadleすると多分通る“`
Support for builds using Gradle versions older than 2.6 was removed
ジェネリクスが便利
##ジェネリクス
を知りました、便利ですねこれ##具体例
“`Test2.java
package test1;import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;public class Test2 {
public static void main(String[] args) {
createList(“e”).forEach(Test2::echo);
createMap(“a”, 1).entrySet().forEach(Test2::echo);
try {
echo(nullToBlank(null));
echo(nullToBlank(“a”));
echo(nullToBlank(1));
} catch (NotStringException e) {
e.printStackTrace();
}
}private static
void
自動読み込み機能のゲームランチャー を作った話[Java]
#1. はじめに
私は大学でゲームなどを製作する部活に所属しています。学園祭で長年ゲームを展示するために使われていたゲームランチャー(以下、ゲームランチャー のことをランチャーということがあります)の仕様を知っている人が少なくなってきたので自分で一から作り直そうとしました。色々、間に合わなかったものもありますが形にはなったのでお話ししたいと思います。
この記事ではランチャーのデザイン面についてはあまり触れません。
**主にどのように自動読み込みをするかどうかについての話や、データのフォルダ構造、苦労した点などをお話しします。**作ろうとしている言語がJavaではなくてもわかりやすく説明できたらなと思います。##インクリメントとデクリメント
プログラムの=は代入なので、自己代入ができます。
僕は(右辺を左辺に代入する。)と覚えてます!“`
int x = 5;
x = x + 1;
//xは6になる“`
++はインクリメント演算子と言います。変数の値に1を追加して代入する命令です。
x++;“`
x = + 1;
//どっちも同じ、 xに1追加される–はデクリメントといい、1引きます。
“`
##真理値
booleanと言う型があります。
booleanは、true(真)またはfalse(偽)を入れられます
。
真理値とも言います。本当の事ならtrue 嘘ならfalseと覚えましょう。
あるいは、スイッチがオンならtrue,オフならfalse“`
boolean a = true;
“`##比較演算子
比較演算子は左辺と右辺を比較して、booleanを返します。
“`
== //等しい(数学の=に近いのはコレ)
!= //等しくない
> //左が右より大きい
< //左が右未満 >= //左が右以上
<= //左が