f@ctor
こんにちは、Takeです。 今回は、Javaの文法も一通り終えてターミナル上のみで動くコード作成から、 サーバーやブラウザを利用する、簡易的な「Webアプリケーション」の開発まで出来るようになったJava初学者(私を含む)の方々向けの記事になります。 サーブレットで書いたインスタンスをJSPに渡したい時によく使われるものが「リクエストスコープ」と呼ばれるものです。 見たことがある人も多いと思いますが、「request.setAttribute()」「request.getAttribute()」というやつです。 この「リクエストスコープ」というものについてなのですが、私は以前まで「変数のスコープ」と似た様なものだと認識していました。とはいえ、実際は似た様なものなのですが。 ちょっとだけイメージを変えた方がリクエストスコープについて理解出来やすいのではないか?と思い、この記事を書くことにしました。 まず、変数のスコープと言うのは、例えば public class Example { public static void main(String[] args) {
こんにちは、Takeです。
今回は、Javaの文法も一通り終えてターミナル上のみで動くコード作成から、 サーバーやブラウザを利用する、簡易的な「Webアプリケーション」の開発まで出来るようになったJava初学者(私を含む)の方々向けの記事になります。
サーブレットで書いたインスタンスをJSPに渡したい時によく使われるものが「リクエストスコープ」と呼ばれるものです。
見たことがある人も多いと思いますが、「request.setAttribute()」「request.getAttribute()」というやつです。
この「リクエストスコープ」というものについてなのですが、私は以前まで「変数のスコープ」と似た様なものだと認識していました。とはいえ、実際は似た様なものなのですが。
ちょっとだけイメージを変えた方がリクエストスコープについて理解出来やすいのではないか?と思い、この記事を書くことにしました。
まず、変数のスコープと言うのは、例えば
public class Example { public static void main(String[] args) {
> Map paramMap = new HashMap<>(); csvから番号のリストを読み込んで、その中からユニークなものだけに対して次の処理にすすませたいときにHashMapを使おうとしたが、、 > Map paramMap = null; > while((record = reader.readNext()) != null){ > if(paramMap.get(record[0]) != null { > continue; > } > paramMap.put(record[0],record[0]); > 次の処理 > } とすると、paramMap.getの部分でnullpointer.exceptionでエラーが発生します 対処はわかると簡単で > Map paramMap = null; これではpramMapが初期化できておらず、呼び出すとnull参照が起きてしまうので ここを > Map paramMap = new Has
> Map paramMap = new HashMap<>();
csvから番号のリストを読み込んで、その中からユニークなものだけに対して次の処理にすすませたいときにHashMapを使おうとしたが、、
> Map paramMap = null; > while((record = reader.readNext()) != null){ > if(paramMap.get(record[0]) != null { > continue; > } > paramMap.put(record[0],record[0]); > 次の処理 > }
とすると、paramMap.getの部分でnullpointer.exceptionでエラーが発生します 対処はわかると簡単で
> Map paramMap = null;
これではpramMapが初期化できておらず、呼び出すとnull参照が起きてしまうので ここを > Map paramMap = new Has
この記事は 地震界隈 [Advent Calendar 2020](https://adventar.org/calendars/5903) 20日目の記事です。個人的な事項のために数日遅れています。お詫び申し上げます。 長い記事ですが、喜ばれることを願っています :relaxed: 。 #前書き 強震モニタデータを使用するサードパーティのソフトウェアでは、特定の数の機能がGIF画像から得られた数値の活用に依存しています。 実際、情報は特定のピクセル位置で特定の色にエンコードされるため、ソフトウェアには、ピクセルを観測点に関連付けるための観測点データベースだけでなく、任意の色を数値に変換する方法も必要になります。 適用可能な使用法は、計測震度値の表示、または地震検出アルゴリズムですらあります。 リアルタイム震度、最大加速度、最大速度など、データのいくつかのフィードを見つけることができ、それぞれが異なるスケールを使用しています。 これまで、防災科学技術研究所(NIED)は、値を見つけるための公式の方法や、データチャネルの数値を特徴とするAPI(JSON形式など)を開示していなかったた
この記事は 地震界隈 [Advent Calendar 2020](https://adventar.org/calendars/5903) 20日目の記事です。個人的な事項のために数日遅れています。お詫び申し上げます。 長い記事ですが、喜ばれることを願っています :relaxed: 。
#前書き 強震モニタデータを使用するサードパーティのソフトウェアでは、特定の数の機能がGIF画像から得られた数値の活用に依存しています。 実際、情報は特定のピクセル位置で特定の色にエンコードされるため、ソフトウェアには、ピクセルを観測点に関連付けるための観測点データベースだけでなく、任意の色を数値に変換する方法も必要になります。
適用可能な使用法は、計測震度値の表示、または地震検出アルゴリズムですらあります。 リアルタイム震度、最大加速度、最大速度など、データのいくつかのフィードを見つけることができ、それぞれが異なるスケールを使用しています。 これまで、防災科学技術研究所(NIED)は、値を見つけるための公式の方法や、データチャネルの数値を特徴とするAPI(JSON形式など)を開示していなかったた
##やりたいこと DBからひっぱってきたデータをvueのコンポーネントの中のdataにセットし、それをv-forで表示させているとします。 DBからひっぱってきたデータのいずれかに真偽値を設定するなどしておけばv-forの中で動きの変化はつけることができますが、 「そのコンポーネントの中だけのdataを追加し、v-forの中の特定のコンテンツだけclassをつける」などの変化をつけたい場合にやる方法。 ##記述内容 “`javascript //描写部分 {{task.title}} //例えばこのtask.bodyだけ、条件に応じてis-activeclassをつけたい場合 {{task.body}} 元記事を表示 Java Web Apps 性能系トラブルシューティング入門 ## はじめに __本記事は Microsoft Azure Tech Advent Calendar 2020 の投稿です。__ Web サイトを運用する上でトラブルシューティングは切っても切り離せないものだと思います。そのため、トラブルシューティングが容易なサイトを作ることも、運用を踏まえますと大切になってきます。Web Apps では「高度なツール」ブレードから kudu を起動することによって、Web コンソールからコマンドを入力したり、プロセスエクスプローラを開いたりすることができます。これらを活用することによってトラブルシューティングが容易なサイト運用ができると思っています。 本記事では Java Web Apps を運用するうえで便利なトラブルシューティングの準備や方法を紹介したいと思います。なお、Java Web Apps の Windows 環境をターゲットとさせていただきますが、ここで紹介した方法は Linux 環境でも応用ができますので、ご利用いただけると嬉しいです。 ## サンプルアプリのデプロイ せっかくなので、以下の公式ドキュメントのクイックスタートに 元記事を表示 オブジェクト指向プログラミング とは? 〜 初心者編 〜 「**オブジェクト指向プログラミング**」という言葉はよく聞きますが、いまいち理解できていなかったので調べて見ましたが、あくまでプログラミング初心者の備忘録になるので間違いなどありましたら、どんどんご指摘願います。 またオブジェクト指向について説明している技術書やWebサイトは数多く存在し、どの説明もバラバラ、答えはエンジニアによってもバラける。 明確な答えがないのだから、ざっくり雰囲気を理解しておけばいい100%理解しようとするとよくわからなくなるし、あとは自分の成長と共に、理解が進んでいき、自分の中で定義ができるようになる。 というスタンスなので、現時点では100%理解を求めていないです。 以上宜しくお願いいたします。 * * * ### オブジェクト指向とは まず始めに、オブジェクト指向とは、特定のプログラミング言語や手法の名前ではなく、プログラミングを行う際の考え方。「**概念**」ということである。 ※概念→物事や対象を丸ごとひっくる見たときの大まかな理解のこと。思考において把握される、物事の「何たるか」という部分。 wikipediaで調べると `オブジェクト 元記事を表示 段階的に理解する Dependency Injection # はじめに Dependency Injection (以下 “DI” と略す) とは、コンポーネントの依存関係にまつわる諸問題をいい感じに解決してくれる機構である。「コンポーネントの依存関係」とは、例えば一般的なレイヤードアーキテクチャでの Controller → Service → Repository といった上位層から下位層につながるような関係のことを指す。「いい感じに解決」とは、開発者が手動で頑張らなくてもフレームワークが良きに計らってくれることを意味する。 モダンな Java アプリケーション開発において、DI はほぼ必須の機構である。筆者は主にバックエンドを主戦場としてアプリケーションの開発と運用に携わっているが、Web アプリケーションであろうがコマンドラインから起動するバッチであろうが、Java でアプリケーションを開発するのであれば使い捨てを除くほとんどの場合で DI を活用している。[DI 概念の登場](https://martinfowler.com/articles/injection.html)から 15 年以上が経過した現在、フレームワークは十分に 元記事を表示 [100%] MaxProductOfThree (src & jUnit) > _Painless_ > ### [MaxProductOfThree](https://app.codility.com/programmers/lessons/6-sorting/max_product_of_three/) > 任意のトリプレット(P、Q、R)に対してA [P] * A [Q] * A [R]を最大化します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/196344/4df68f5b-77ca-26d3-b67d-f2b64abc8bb9.png) #### タスク説明 N個の整数で構成される空でない配列Aが与えられます。 トリプレット(P、Q、R)の積は、A [P] * A [Q] * A [R](0≤P 元記事を表示 ArchUnit 実践:集約操作専用のリポジトリ(やDAO)によってのみ、集約が永続化されることを強制する②<汎用 ver.> “` // 実行環境 * AdoptOpenJDK 11.0.9.1+1 * JUnit 5.7.0 * ArchUnit 0.14.1 “` ## アーキテクチャテストのモチベーション 21 日目の [ArchUnit 実践:集約操作専用のリポジトリ(やDAO)によってのみ、集約が永続化されることを強制する①](https://qiita.com/kawanamiyuu/items/62f52b09c74369e95551) は特定の集約とその Dao クラス対して実装ルールを強制するアーキテクチャテストでした。 今回は実現したいことはそのままに、特定の Dao クラス名や AggregateDao クラス名をハードコードせず、汎用的なアーキテクチャテストとして実装します。 ## アーキテクチャテストの実装 “`java package com.example; import com.tngtech.archunit.base.DescribedPredicate; import com.tngtech.archunit.core.domain.JavaClass; 元記事を表示 spring-kafkaで一度に複数メッセージをconsume まず“`BatchMessageListener“`の実装を作成する。 “`java import java.util.List; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.listener.BatchMessageListener; import org.springframework.stereotype.Component; @Component public class SampleBatchMessageListener implements BatchMessageListener { @KafkaListener(topics = “mytopic2”) @Override public void onMessage(List 元記事を表示 Java15の気になる新機能について触れてみた # はじめに こちらは [ゆるWeb勉強会@札幌 Advent Calendar 2020](https://adventar.org/calendars/5068) 23日目の記事です。 Qiita には約1年ぶりの投稿となりました。 今回は、2020年9月15日にリリースされた **Java15** の新機能について少し触れてみたいと思います。 # Java15 の新機能 Java15 での主な変更点は下記URLにまとめられています。 https://openjdk.java.net/projects/jdk/15/ この記事では、以下の3点を取り上げます。 – テキストブロック – レコード – パターンマッチング ## テキストブロック 改行を含む文字列リテラルを定義できるテキストブロック。Java12よりプレビュー機能として実装されていましたが、今回正式版としてリリースされました。 テキストブロックは、ダブルクォーテーション3つ(`”””`)で囲みます。 “`java String htmlText = “”” 元記事を表示 【Java】標準入力で空白で区切られた数値データを受け取る方法 #プログラミング勉強日記 2020年12月22日 昨日に引き続きJavaでの標準入力について扱う。入力された空白で区切られえた数値をデータで受け取る方法を示す。 #ScannerのnextIntメソッドを使う方法 “`java import java.util.*; public class Sample { public static void main(String[] args) { int[] points = new int[5]; Scanner scan = new Scanner(System.in); for(int i = 0; i < points.length; i++) { points[i] = scan.nextInt(); System.out.println(points[i]); } } } ``` #キャストする方法 ```java import java.util.*; public class Sample { public static void main(String[] 元記事を表示 Z Garbage Collector/Shenandoah [Javaの超低レイテンシなGCアルゴリズム、ZGCをコンパイルして動作を試す](https://kurochan-note.hatenablog.jp/entry/2018/03/05/190602) -XX:+UseZGC -XX:+UseShenandoahGC Windows だと Java 14 から -XX:+UseZGC で使用可能な ZGC, 見た感じすばらしくいい性能らしいので今後使っていきたい。 元記事を表示 【Spring Boot】各クラスの役割 ## Model – データモデルを扱う ## Controller – アノテーション: `@Controller` – フロントからのリクエスト、およびフロントへのレスポンスのハンドリングのみを行う ## Service – アノテーション: `@Service` – 業務処理を提供する ## Repository – アノテーション: `@Repository` – DBアクセスを行う 元記事を表示 Spring Boot Mybatis SQLのスネークケースカラムとキャメルケースのマッピング SQLのカラム名はスネークケースでマッピング先のjavaはキャメルケースの場合、 mybatisで自動的にキャメル→スネークに変換してくれる設定。 # 結論 ### 方法1 私はこれを使ってます。 “`yml:application.yml mybatis: configuration: map-underscore-to-camel-case: true “` ### 方法2 “`properties:application.properties mybatis.configuration.map-underscore-to-camel-case=true “` ### 方法3 “`yml:application.yml mybatis: config-location: classpath:/mybatis/mybatis-config.xml “` “`xml:mybatis-config.xml 元記事を表示 【Java・SpringBoot】RESTサービス① – GETメソッド #REST (Representational State Transfer)とは * URLを叩くと各種Webサービスを実行することができます * 例えば、yahoo天気情報などを取得する * AIや天気情報、地図検索、経路検索などを実行する、など * 通常のHTMLリクエストを送ると、HTMLがレスポンスとして返ってきて、ブラウザでは、返ってきたHTMLを画面に表示する * RESTではHTMLリクエストを送ると、**Webサービスの実行結果が返る** * →アプリケーションから**外部サービスを利用することができる**! * 既にあるサービスを使えば、開発効率UPすることができます? * RESTではJSON形式でレスポンスを返すのがメイン #RESTサービス実装の準備 * ユーザ情報を取得、登録、更新、削除するRESTサービスを実装します “`RestService.java package com.example.demo.login.domain.service; import java.util.List; import com.exam 元記事を表示 DI(依存注入)とは何か ## Springでの例 `HogeInterface`とそれを実装した`HogeLocal`を考える。 中身のメソッドはなんでも良い。 Springの場合、以下のように書けばprofileを”local”、”production”にスイッチするだけで簡単に切り替え可能 “` Java // インターフェースの部分 public interface HogeInterface { String hogePrint(); // 返り値は書かない } “` “` Java @Component //このアノテーションをつけとけば必要に応じてDIで注入してくれる @Profile({“local”}) // localの場合 public class HogeLocal implements HogeInterface { @Override public String hogePrint() { return “localだよ”; } } “` “` Java @Component @Profile({“product 元記事を表示 ArchUnit 実践:集約操作専用のリポジトリ(やDAO)によってのみ、集約が永続化されることを強制する①<個別 ver.> “` // 実行環境 * AdoptOpenJDK 11.0.9.1+1 * JUnit 5.7.0 * ArchUnit 0.14.1 “` ## アーキテクチャテストのモチベーション 集約を構成するオブジェクトは、データベース等の永続化層から、個別に参照や更新するのではなく、集約ルートを起点として集約(オブジェクトのまとまり)としての整合性を保ちながら、参照や更新したい。 ## アーキテクチャテストの実装 テスト対象の集約とクラスのサンプルは後述。 “`java package com.example; import com.example.domain.order.DenpyoAggregateDao; import com.example.domain.order.DenpyoDao; import com.example.domain.order.MeisaiDao; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer. 元記事を表示 【Java】標準入力を取得・出力する方法 #プログラミング勉強日記 2020年12月21日 Cでは標準入力を使ったことがあるが、Javaで標準入力を使ったことがなかった。その今日勉強した内容をまとめる。 #標準入力・標準出力とは 簡単に言うとキーボードからの入力のことを標準入力という。JavaではSysytemクラスのinフィールドで標準入力を取得する。 標準出力は、プログラムからデータを表示するための装置のようなもので、ディスプレイに表示されるものをいう。JavaではSysteクラスのoutフィールドを使う。 #Scannerの使い方 java.util.Scannerクラスには以下のようなメソッドが用意されている。 – 1行分の入力を取得するnextLineメソッド – 空白文字までの入力を取得するnextメソッド – 数値の入力を取得するnextIntメソッド ##nextLineメソッドの使い方 nextLineメソッドは、改行までの1行分の入力を取得することができる。 “`java:サンプルコード import java.util.Scanner; public class Sample { 元記事を表示 三項演算子の書き方 # 概要 – 三項演算子の書き方を言語別にわけました。 # Python – 通常 “`Python score = 100 result = “” if score >= 60: result = “合格” else: result = “不合格” print(result) “` – 三項演算子 “`Python score = 100 result = “合格” if score >= 60 else “不合格” print(result) “` # Java – 通常 “`Java Integer score = 100; String result = “”; if(score>=60){ result = “合格”; }else{ result = “不合格”; } System.out.println(result); “` – 三項演算子 “`Java Integer score = 100; String result = (score >= 60)?”合格”:”不合格”; System.out.pr 元記事を表示 OTHERカテゴリの最新記事 2024.09.19 JavaScript関連のことを調べてみた 2024.09.19 JAVA関連のことを調べてみた 2024.09.19 iOS関連のことを調べてみた 2024.09.19 Rails関連のことを調べてみた 2024.09.19 Lambda関連のことを調べてみた 2024.09.19 Python関連のことを調べてみた
##やりたいこと DBからひっぱってきたデータをvueのコンポーネントの中のdataにセットし、それをv-forで表示させているとします。 DBからひっぱってきたデータのいずれかに真偽値を設定するなどしておけばv-forの中で動きの変化はつけることができますが、 「そのコンポーネントの中だけのdataを追加し、v-forの中の特定のコンテンツだけclassをつける」などの変化をつけたい場合にやる方法。
##記述内容 “`javascript
//描写部分
//例えばこのtask.bodyだけ、条件に応じてis-activeclassをつけたい場合
元記事を表示 Java Web Apps 性能系トラブルシューティング入門 ## はじめに __本記事は Microsoft Azure Tech Advent Calendar 2020 の投稿です。__ Web サイトを運用する上でトラブルシューティングは切っても切り離せないものだと思います。そのため、トラブルシューティングが容易なサイトを作ることも、運用を踏まえますと大切になってきます。Web Apps では「高度なツール」ブレードから kudu を起動することによって、Web コンソールからコマンドを入力したり、プロセスエクスプローラを開いたりすることができます。これらを活用することによってトラブルシューティングが容易なサイト運用ができると思っています。 本記事では Java Web Apps を運用するうえで便利なトラブルシューティングの準備や方法を紹介したいと思います。なお、Java Web Apps の Windows 環境をターゲットとさせていただきますが、ここで紹介した方法は Linux 環境でも応用ができますので、ご利用いただけると嬉しいです。 ## サンプルアプリのデプロイ せっかくなので、以下の公式ドキュメントのクイックスタートに 元記事を表示 オブジェクト指向プログラミング とは? 〜 初心者編 〜 「**オブジェクト指向プログラミング**」という言葉はよく聞きますが、いまいち理解できていなかったので調べて見ましたが、あくまでプログラミング初心者の備忘録になるので間違いなどありましたら、どんどんご指摘願います。 またオブジェクト指向について説明している技術書やWebサイトは数多く存在し、どの説明もバラバラ、答えはエンジニアによってもバラける。 明確な答えがないのだから、ざっくり雰囲気を理解しておけばいい100%理解しようとするとよくわからなくなるし、あとは自分の成長と共に、理解が進んでいき、自分の中で定義ができるようになる。 というスタンスなので、現時点では100%理解を求めていないです。 以上宜しくお願いいたします。 * * * ### オブジェクト指向とは まず始めに、オブジェクト指向とは、特定のプログラミング言語や手法の名前ではなく、プログラミングを行う際の考え方。「**概念**」ということである。 ※概念→物事や対象を丸ごとひっくる見たときの大まかな理解のこと。思考において把握される、物事の「何たるか」という部分。 wikipediaで調べると `オブジェクト 元記事を表示 段階的に理解する Dependency Injection # はじめに Dependency Injection (以下 “DI” と略す) とは、コンポーネントの依存関係にまつわる諸問題をいい感じに解決してくれる機構である。「コンポーネントの依存関係」とは、例えば一般的なレイヤードアーキテクチャでの Controller → Service → Repository といった上位層から下位層につながるような関係のことを指す。「いい感じに解決」とは、開発者が手動で頑張らなくてもフレームワークが良きに計らってくれることを意味する。 モダンな Java アプリケーション開発において、DI はほぼ必須の機構である。筆者は主にバックエンドを主戦場としてアプリケーションの開発と運用に携わっているが、Web アプリケーションであろうがコマンドラインから起動するバッチであろうが、Java でアプリケーションを開発するのであれば使い捨てを除くほとんどの場合で DI を活用している。[DI 概念の登場](https://martinfowler.com/articles/injection.html)から 15 年以上が経過した現在、フレームワークは十分に 元記事を表示 [100%] MaxProductOfThree (src & jUnit) > _Painless_ > ### [MaxProductOfThree](https://app.codility.com/programmers/lessons/6-sorting/max_product_of_three/) > 任意のトリプレット(P、Q、R)に対してA [P] * A [Q] * A [R]を最大化します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/196344/4df68f5b-77ca-26d3-b67d-f2b64abc8bb9.png) #### タスク説明 N個の整数で構成される空でない配列Aが与えられます。 トリプレット(P、Q、R)の積は、A [P] * A [Q] * A [R](0≤P 元記事を表示 ArchUnit 実践:集約操作専用のリポジトリ(やDAO)によってのみ、集約が永続化されることを強制する②<汎用 ver.> “` // 実行環境 * AdoptOpenJDK 11.0.9.1+1 * JUnit 5.7.0 * ArchUnit 0.14.1 “` ## アーキテクチャテストのモチベーション 21 日目の [ArchUnit 実践:集約操作専用のリポジトリ(やDAO)によってのみ、集約が永続化されることを強制する①](https://qiita.com/kawanamiyuu/items/62f52b09c74369e95551) は特定の集約とその Dao クラス対して実装ルールを強制するアーキテクチャテストでした。 今回は実現したいことはそのままに、特定の Dao クラス名や AggregateDao クラス名をハードコードせず、汎用的なアーキテクチャテストとして実装します。 ## アーキテクチャテストの実装 “`java package com.example; import com.tngtech.archunit.base.DescribedPredicate; import com.tngtech.archunit.core.domain.JavaClass; 元記事を表示 spring-kafkaで一度に複数メッセージをconsume まず“`BatchMessageListener“`の実装を作成する。 “`java import java.util.List; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.listener.BatchMessageListener; import org.springframework.stereotype.Component; @Component public class SampleBatchMessageListener implements BatchMessageListener { @KafkaListener(topics = “mytopic2”) @Override public void onMessage(List 元記事を表示 Java15の気になる新機能について触れてみた # はじめに こちらは [ゆるWeb勉強会@札幌 Advent Calendar 2020](https://adventar.org/calendars/5068) 23日目の記事です。 Qiita には約1年ぶりの投稿となりました。 今回は、2020年9月15日にリリースされた **Java15** の新機能について少し触れてみたいと思います。 # Java15 の新機能 Java15 での主な変更点は下記URLにまとめられています。 https://openjdk.java.net/projects/jdk/15/ この記事では、以下の3点を取り上げます。 – テキストブロック – レコード – パターンマッチング ## テキストブロック 改行を含む文字列リテラルを定義できるテキストブロック。Java12よりプレビュー機能として実装されていましたが、今回正式版としてリリースされました。 テキストブロックは、ダブルクォーテーション3つ(`”””`)で囲みます。 “`java String htmlText = “”” 元記事を表示 【Java】標準入力で空白で区切られた数値データを受け取る方法 #プログラミング勉強日記 2020年12月22日 昨日に引き続きJavaでの標準入力について扱う。入力された空白で区切られえた数値をデータで受け取る方法を示す。 #ScannerのnextIntメソッドを使う方法 “`java import java.util.*; public class Sample { public static void main(String[] args) { int[] points = new int[5]; Scanner scan = new Scanner(System.in); for(int i = 0; i < points.length; i++) { points[i] = scan.nextInt(); System.out.println(points[i]); } } } ``` #キャストする方法 ```java import java.util.*; public class Sample { public static void main(String[] 元記事を表示 Z Garbage Collector/Shenandoah [Javaの超低レイテンシなGCアルゴリズム、ZGCをコンパイルして動作を試す](https://kurochan-note.hatenablog.jp/entry/2018/03/05/190602) -XX:+UseZGC -XX:+UseShenandoahGC Windows だと Java 14 から -XX:+UseZGC で使用可能な ZGC, 見た感じすばらしくいい性能らしいので今後使っていきたい。 元記事を表示 【Spring Boot】各クラスの役割 ## Model – データモデルを扱う ## Controller – アノテーション: `@Controller` – フロントからのリクエスト、およびフロントへのレスポンスのハンドリングのみを行う ## Service – アノテーション: `@Service` – 業務処理を提供する ## Repository – アノテーション: `@Repository` – DBアクセスを行う 元記事を表示 Spring Boot Mybatis SQLのスネークケースカラムとキャメルケースのマッピング SQLのカラム名はスネークケースでマッピング先のjavaはキャメルケースの場合、 mybatisで自動的にキャメル→スネークに変換してくれる設定。 # 結論 ### 方法1 私はこれを使ってます。 “`yml:application.yml mybatis: configuration: map-underscore-to-camel-case: true “` ### 方法2 “`properties:application.properties mybatis.configuration.map-underscore-to-camel-case=true “` ### 方法3 “`yml:application.yml mybatis: config-location: classpath:/mybatis/mybatis-config.xml “` “`xml:mybatis-config.xml 元記事を表示 【Java・SpringBoot】RESTサービス① – GETメソッド #REST (Representational State Transfer)とは * URLを叩くと各種Webサービスを実行することができます * 例えば、yahoo天気情報などを取得する * AIや天気情報、地図検索、経路検索などを実行する、など * 通常のHTMLリクエストを送ると、HTMLがレスポンスとして返ってきて、ブラウザでは、返ってきたHTMLを画面に表示する * RESTではHTMLリクエストを送ると、**Webサービスの実行結果が返る** * →アプリケーションから**外部サービスを利用することができる**! * 既にあるサービスを使えば、開発効率UPすることができます? * RESTではJSON形式でレスポンスを返すのがメイン #RESTサービス実装の準備 * ユーザ情報を取得、登録、更新、削除するRESTサービスを実装します “`RestService.java package com.example.demo.login.domain.service; import java.util.List; import com.exam 元記事を表示 DI(依存注入)とは何か ## Springでの例 `HogeInterface`とそれを実装した`HogeLocal`を考える。 中身のメソッドはなんでも良い。 Springの場合、以下のように書けばprofileを”local”、”production”にスイッチするだけで簡単に切り替え可能 “` Java // インターフェースの部分 public interface HogeInterface { String hogePrint(); // 返り値は書かない } “` “` Java @Component //このアノテーションをつけとけば必要に応じてDIで注入してくれる @Profile({“local”}) // localの場合 public class HogeLocal implements HogeInterface { @Override public String hogePrint() { return “localだよ”; } } “` “` Java @Component @Profile({“product 元記事を表示 ArchUnit 実践:集約操作専用のリポジトリ(やDAO)によってのみ、集約が永続化されることを強制する①<個別 ver.> “` // 実行環境 * AdoptOpenJDK 11.0.9.1+1 * JUnit 5.7.0 * ArchUnit 0.14.1 “` ## アーキテクチャテストのモチベーション 集約を構成するオブジェクトは、データベース等の永続化層から、個別に参照や更新するのではなく、集約ルートを起点として集約(オブジェクトのまとまり)としての整合性を保ちながら、参照や更新したい。 ## アーキテクチャテストの実装 テスト対象の集約とクラスのサンプルは後述。 “`java package com.example; import com.example.domain.order.DenpyoAggregateDao; import com.example.domain.order.DenpyoDao; import com.example.domain.order.MeisaiDao; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer. 元記事を表示 【Java】標準入力を取得・出力する方法 #プログラミング勉強日記 2020年12月21日 Cでは標準入力を使ったことがあるが、Javaで標準入力を使ったことがなかった。その今日勉強した内容をまとめる。 #標準入力・標準出力とは 簡単に言うとキーボードからの入力のことを標準入力という。JavaではSysytemクラスのinフィールドで標準入力を取得する。 標準出力は、プログラムからデータを表示するための装置のようなもので、ディスプレイに表示されるものをいう。JavaではSysteクラスのoutフィールドを使う。 #Scannerの使い方 java.util.Scannerクラスには以下のようなメソッドが用意されている。 – 1行分の入力を取得するnextLineメソッド – 空白文字までの入力を取得するnextメソッド – 数値の入力を取得するnextIntメソッド ##nextLineメソッドの使い方 nextLineメソッドは、改行までの1行分の入力を取得することができる。 “`java:サンプルコード import java.util.Scanner; public class Sample { 元記事を表示 三項演算子の書き方 # 概要 – 三項演算子の書き方を言語別にわけました。 # Python – 通常 “`Python score = 100 result = “” if score >= 60: result = “合格” else: result = “不合格” print(result) “` – 三項演算子 “`Python score = 100 result = “合格” if score >= 60 else “不合格” print(result) “` # Java – 通常 “`Java Integer score = 100; String result = “”; if(score>=60){ result = “合格”; }else{ result = “不合格”; } System.out.println(result); “` – 三項演算子 “`Java Integer score = 100; String result = (score >= 60)?”合格”:”不合格”; System.out.pr 元記事を表示
## はじめに __本記事は Microsoft Azure Tech Advent Calendar 2020 の投稿です。__ Web サイトを運用する上でトラブルシューティングは切っても切り離せないものだと思います。そのため、トラブルシューティングが容易なサイトを作ることも、運用を踏まえますと大切になってきます。Web Apps では「高度なツール」ブレードから kudu を起動することによって、Web コンソールからコマンドを入力したり、プロセスエクスプローラを開いたりすることができます。これらを活用することによってトラブルシューティングが容易なサイト運用ができると思っています。 本記事では Java Web Apps を運用するうえで便利なトラブルシューティングの準備や方法を紹介したいと思います。なお、Java Web Apps の Windows 環境をターゲットとさせていただきますが、ここで紹介した方法は Linux 環境でも応用ができますので、ご利用いただけると嬉しいです。 ## サンプルアプリのデプロイ せっかくなので、以下の公式ドキュメントのクイックスタートに
## はじめに __本記事は Microsoft Azure Tech Advent Calendar 2020 の投稿です。__
Web サイトを運用する上でトラブルシューティングは切っても切り離せないものだと思います。そのため、トラブルシューティングが容易なサイトを作ることも、運用を踏まえますと大切になってきます。Web Apps では「高度なツール」ブレードから kudu を起動することによって、Web コンソールからコマンドを入力したり、プロセスエクスプローラを開いたりすることができます。これらを活用することによってトラブルシューティングが容易なサイト運用ができると思っています。
本記事では Java Web Apps を運用するうえで便利なトラブルシューティングの準備や方法を紹介したいと思います。なお、Java Web Apps の Windows 環境をターゲットとさせていただきますが、ここで紹介した方法は Linux 環境でも応用ができますので、ご利用いただけると嬉しいです。
## サンプルアプリのデプロイ せっかくなので、以下の公式ドキュメントのクイックスタートに
「**オブジェクト指向プログラミング**」という言葉はよく聞きますが、いまいち理解できていなかったので調べて見ましたが、あくまでプログラミング初心者の備忘録になるので間違いなどありましたら、どんどんご指摘願います。 またオブジェクト指向について説明している技術書やWebサイトは数多く存在し、どの説明もバラバラ、答えはエンジニアによってもバラける。 明確な答えがないのだから、ざっくり雰囲気を理解しておけばいい100%理解しようとするとよくわからなくなるし、あとは自分の成長と共に、理解が進んでいき、自分の中で定義ができるようになる。 というスタンスなので、現時点では100%理解を求めていないです。 以上宜しくお願いいたします。 * * * ### オブジェクト指向とは まず始めに、オブジェクト指向とは、特定のプログラミング言語や手法の名前ではなく、プログラミングを行う際の考え方。「**概念**」ということである。 ※概念→物事や対象を丸ごとひっくる見たときの大まかな理解のこと。思考において把握される、物事の「何たるか」という部分。 wikipediaで調べると `オブジェクト
「**オブジェクト指向プログラミング**」という言葉はよく聞きますが、いまいち理解できていなかったので調べて見ましたが、あくまでプログラミング初心者の備忘録になるので間違いなどありましたら、どんどんご指摘願います。
またオブジェクト指向について説明している技術書やWebサイトは数多く存在し、どの説明もバラバラ、答えはエンジニアによってもバラける。 明確な答えがないのだから、ざっくり雰囲気を理解しておけばいい100%理解しようとするとよくわからなくなるし、あとは自分の成長と共に、理解が進んでいき、自分の中で定義ができるようになる。 というスタンスなので、現時点では100%理解を求めていないです。 以上宜しくお願いいたします。
* * *
### オブジェクト指向とは
まず始めに、オブジェクト指向とは、特定のプログラミング言語や手法の名前ではなく、プログラミングを行う際の考え方。「**概念**」ということである。 ※概念→物事や対象を丸ごとひっくる見たときの大まかな理解のこと。思考において把握される、物事の「何たるか」という部分。
wikipediaで調べると
`オブジェクト
# はじめに Dependency Injection (以下 “DI” と略す) とは、コンポーネントの依存関係にまつわる諸問題をいい感じに解決してくれる機構である。「コンポーネントの依存関係」とは、例えば一般的なレイヤードアーキテクチャでの Controller → Service → Repository といった上位層から下位層につながるような関係のことを指す。「いい感じに解決」とは、開発者が手動で頑張らなくてもフレームワークが良きに計らってくれることを意味する。 モダンな Java アプリケーション開発において、DI はほぼ必須の機構である。筆者は主にバックエンドを主戦場としてアプリケーションの開発と運用に携わっているが、Web アプリケーションであろうがコマンドラインから起動するバッチであろうが、Java でアプリケーションを開発するのであれば使い捨てを除くほとんどの場合で DI を活用している。[DI 概念の登場](https://martinfowler.com/articles/injection.html)から 15 年以上が経過した現在、フレームワークは十分に
# はじめに
Dependency Injection (以下 “DI” と略す) とは、コンポーネントの依存関係にまつわる諸問題をいい感じに解決してくれる機構である。「コンポーネントの依存関係」とは、例えば一般的なレイヤードアーキテクチャでの Controller → Service → Repository といった上位層から下位層につながるような関係のことを指す。「いい感じに解決」とは、開発者が手動で頑張らなくてもフレームワークが良きに計らってくれることを意味する。
モダンな Java アプリケーション開発において、DI はほぼ必須の機構である。筆者は主にバックエンドを主戦場としてアプリケーションの開発と運用に携わっているが、Web アプリケーションであろうがコマンドラインから起動するバッチであろうが、Java でアプリケーションを開発するのであれば使い捨てを除くほとんどの場合で DI を活用している。[DI 概念の登場](https://martinfowler.com/articles/injection.html)から 15 年以上が経過した現在、フレームワークは十分に
> _Painless_ > ### [MaxProductOfThree](https://app.codility.com/programmers/lessons/6-sorting/max_product_of_three/) > 任意のトリプレット(P、Q、R)に対してA [P] * A [Q] * A [R]を最大化します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/196344/4df68f5b-77ca-26d3-b67d-f2b64abc8bb9.png) #### タスク説明 N個の整数で構成される空でない配列Aが与えられます。 トリプレット(P、Q、R)の積は、A [P] * A [Q] * A [R](0≤P
> _Painless_ > ### [MaxProductOfThree](https://app.codility.com/programmers/lessons/6-sorting/max_product_of_three/) > 任意のトリプレット(P、Q、R)に対してA [P] * A [Q] * A [R]を最大化します。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/196344/4df68f5b-77ca-26d3-b67d-f2b64abc8bb9.png)
#### タスク説明
N個の整数で構成される空でない配列Aが与えられます。 トリプレット(P、Q、R)の積は、A [P] * A [Q] * A [R](0≤P
“` // 実行環境 * AdoptOpenJDK 11.0.9.1+1 * JUnit 5.7.0 * ArchUnit 0.14.1 “` ## アーキテクチャテストのモチベーション 21 日目の [ArchUnit 実践:集約操作専用のリポジトリ(やDAO)によってのみ、集約が永続化されることを強制する①](https://qiita.com/kawanamiyuu/items/62f52b09c74369e95551) は特定の集約とその Dao クラス対して実装ルールを強制するアーキテクチャテストでした。 今回は実現したいことはそのままに、特定の Dao クラス名や AggregateDao クラス名をハードコードせず、汎用的なアーキテクチャテストとして実装します。 ## アーキテクチャテストの実装 “`java package com.example; import com.tngtech.archunit.base.DescribedPredicate; import com.tngtech.archunit.core.domain.JavaClass;
“` // 実行環境 * AdoptOpenJDK 11.0.9.1+1 * JUnit 5.7.0 * ArchUnit 0.14.1 “`
## アーキテクチャテストのモチベーション
21 日目の [ArchUnit 実践:集約操作専用のリポジトリ(やDAO)によってのみ、集約が永続化されることを強制する①](https://qiita.com/kawanamiyuu/items/62f52b09c74369e95551) は特定の集約とその Dao クラス対して実装ルールを強制するアーキテクチャテストでした。 今回は実現したいことはそのままに、特定の Dao クラス名や AggregateDao クラス名をハードコードせず、汎用的なアーキテクチャテストとして実装します。
## アーキテクチャテストの実装
“`java package com.example; import com.tngtech.archunit.base.DescribedPredicate; import com.tngtech.archunit.core.domain.JavaClass;
まず“`BatchMessageListener“`の実装を作成する。 “`java import java.util.List; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.listener.BatchMessageListener; import org.springframework.stereotype.Component; @Component public class SampleBatchMessageListener implements BatchMessageListener { @KafkaListener(topics = “mytopic2”) @Override public void onMessage(List
まず“`BatchMessageListener“`の実装を作成する。
“`java import java.util.List;
import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.listener.BatchMessageListener; import org.springframework.stereotype.Component;
@Component public class SampleBatchMessageListener implements BatchMessageListener { @KafkaListener(topics = “mytopic2”) @Override public void onMessage(List
# はじめに こちらは [ゆるWeb勉強会@札幌 Advent Calendar 2020](https://adventar.org/calendars/5068) 23日目の記事です。 Qiita には約1年ぶりの投稿となりました。 今回は、2020年9月15日にリリースされた **Java15** の新機能について少し触れてみたいと思います。 # Java15 の新機能 Java15 での主な変更点は下記URLにまとめられています。 https://openjdk.java.net/projects/jdk/15/ この記事では、以下の3点を取り上げます。 – テキストブロック – レコード – パターンマッチング ## テキストブロック 改行を含む文字列リテラルを定義できるテキストブロック。Java12よりプレビュー機能として実装されていましたが、今回正式版としてリリースされました。 テキストブロックは、ダブルクォーテーション3つ(`”””`)で囲みます。 “`java String htmlText = “””
# はじめに こちらは [ゆるWeb勉強会@札幌 Advent Calendar 2020](https://adventar.org/calendars/5068) 23日目の記事です。 Qiita には約1年ぶりの投稿となりました。
今回は、2020年9月15日にリリースされた **Java15** の新機能について少し触れてみたいと思います。
# Java15 の新機能 Java15 での主な変更点は下記URLにまとめられています。 https://openjdk.java.net/projects/jdk/15/
この記事では、以下の3点を取り上げます。
– テキストブロック – レコード – パターンマッチング
## テキストブロック 改行を含む文字列リテラルを定義できるテキストブロック。Java12よりプレビュー機能として実装されていましたが、今回正式版としてリリースされました。
テキストブロックは、ダブルクォーテーション3つ(`”””`)で囲みます。
“`java String htmlText = “””
#プログラミング勉強日記 2020年12月22日 昨日に引き続きJavaでの標準入力について扱う。入力された空白で区切られえた数値をデータで受け取る方法を示す。 #ScannerのnextIntメソッドを使う方法 “`java import java.util.*; public class Sample { public static void main(String[] args) { int[] points = new int[5]; Scanner scan = new Scanner(System.in); for(int i = 0; i < points.length; i++) { points[i] = scan.nextInt(); System.out.println(points[i]); } } } ``` #キャストする方法 ```java import java.util.*; public class Sample { public static void main(String[]
#プログラミング勉強日記 2020年12月22日 昨日に引き続きJavaでの標準入力について扱う。入力された空白で区切られえた数値をデータで受け取る方法を示す。
#ScannerのnextIntメソッドを使う方法
“`java import java.util.*;
public class Sample { public static void main(String[] args) { int[] points = new int[5]; Scanner scan = new Scanner(System.in);
for(int i = 0; i < points.length; i++) { points[i] = scan.nextInt(); System.out.println(points[i]); } } } ``` #キャストする方法 ```java import java.util.*; public class Sample { public static void main(String[]
[Javaの超低レイテンシなGCアルゴリズム、ZGCをコンパイルして動作を試す](https://kurochan-note.hatenablog.jp/entry/2018/03/05/190602) -XX:+UseZGC -XX:+UseShenandoahGC Windows だと Java 14 から -XX:+UseZGC で使用可能な ZGC, 見た感じすばらしくいい性能らしいので今後使っていきたい。
[Javaの超低レイテンシなGCアルゴリズム、ZGCをコンパイルして動作を試す](https://kurochan-note.hatenablog.jp/entry/2018/03/05/190602)
-XX:+UseZGC -XX:+UseShenandoahGC
Windows だと Java 14 から -XX:+UseZGC で使用可能な ZGC, 見た感じすばらしくいい性能らしいので今後使っていきたい。
## Model – データモデルを扱う ## Controller – アノテーション: `@Controller` – フロントからのリクエスト、およびフロントへのレスポンスのハンドリングのみを行う ## Service – アノテーション: `@Service` – 業務処理を提供する ## Repository – アノテーション: `@Repository` – DBアクセスを行う
## Model – データモデルを扱う
## Controller – アノテーション: `@Controller` – フロントからのリクエスト、およびフロントへのレスポンスのハンドリングのみを行う
## Service – アノテーション: `@Service` – 業務処理を提供する
## Repository – アノテーション: `@Repository` – DBアクセスを行う
SQLのカラム名はスネークケースでマッピング先のjavaはキャメルケースの場合、 mybatisで自動的にキャメル→スネークに変換してくれる設定。 # 結論 ### 方法1 私はこれを使ってます。 “`yml:application.yml mybatis: configuration: map-underscore-to-camel-case: true “` ### 方法2 “`properties:application.properties mybatis.configuration.map-underscore-to-camel-case=true “` ### 方法3 “`yml:application.yml mybatis: config-location: classpath:/mybatis/mybatis-config.xml “` “`xml:mybatis-config.xml
SQLのカラム名はスネークケースでマッピング先のjavaはキャメルケースの場合、 mybatisで自動的にキャメル→スネークに変換してくれる設定。
# 結論
### 方法1
私はこれを使ってます。
“`yml:application.yml mybatis: configuration: map-underscore-to-camel-case: true “`
### 方法2
“`properties:application.properties mybatis.configuration.map-underscore-to-camel-case=true “`
### 方法3
“`yml:application.yml mybatis: config-location: classpath:/mybatis/mybatis-config.xml “`
“`xml:mybatis-config.xml
#REST (Representational State Transfer)とは * URLを叩くと各種Webサービスを実行することができます * 例えば、yahoo天気情報などを取得する * AIや天気情報、地図検索、経路検索などを実行する、など * 通常のHTMLリクエストを送ると、HTMLがレスポンスとして返ってきて、ブラウザでは、返ってきたHTMLを画面に表示する * RESTではHTMLリクエストを送ると、**Webサービスの実行結果が返る** * →アプリケーションから**外部サービスを利用することができる**! * 既にあるサービスを使えば、開発効率UPすることができます? * RESTではJSON形式でレスポンスを返すのがメイン #RESTサービス実装の準備 * ユーザ情報を取得、登録、更新、削除するRESTサービスを実装します “`RestService.java package com.example.demo.login.domain.service; import java.util.List; import com.exam
#REST (Representational State Transfer)とは * URLを叩くと各種Webサービスを実行することができます * 例えば、yahoo天気情報などを取得する * AIや天気情報、地図検索、経路検索などを実行する、など * 通常のHTMLリクエストを送ると、HTMLがレスポンスとして返ってきて、ブラウザでは、返ってきたHTMLを画面に表示する * RESTではHTMLリクエストを送ると、**Webサービスの実行結果が返る** * →アプリケーションから**外部サービスを利用することができる**! * 既にあるサービスを使えば、開発効率UPすることができます? * RESTではJSON形式でレスポンスを返すのがメイン
#RESTサービス実装の準備 * ユーザ情報を取得、登録、更新、削除するRESTサービスを実装します
“`RestService.java package com.example.demo.login.domain.service;
import java.util.List;
import com.exam
## Springでの例 `HogeInterface`とそれを実装した`HogeLocal`を考える。 中身のメソッドはなんでも良い。 Springの場合、以下のように書けばprofileを”local”、”production”にスイッチするだけで簡単に切り替え可能 “` Java // インターフェースの部分 public interface HogeInterface { String hogePrint(); // 返り値は書かない } “` “` Java @Component //このアノテーションをつけとけば必要に応じてDIで注入してくれる @Profile({“local”}) // localの場合 public class HogeLocal implements HogeInterface { @Override public String hogePrint() { return “localだよ”; } } “` “` Java @Component @Profile({“product
## Springでの例
`HogeInterface`とそれを実装した`HogeLocal`を考える。 中身のメソッドはなんでも良い。 Springの場合、以下のように書けばprofileを”local”、”production”にスイッチするだけで簡単に切り替え可能
“` Java // インターフェースの部分 public interface HogeInterface {
String hogePrint(); // 返り値は書かない } “`
“` Java @Component //このアノテーションをつけとけば必要に応じてDIで注入してくれる @Profile({“local”}) // localの場合 public class HogeLocal implements HogeInterface {
@Override public String hogePrint() { return “localだよ”; } } “` “` Java @Component @Profile({“product
“` // 実行環境 * AdoptOpenJDK 11.0.9.1+1 * JUnit 5.7.0 * ArchUnit 0.14.1 “` ## アーキテクチャテストのモチベーション 集約を構成するオブジェクトは、データベース等の永続化層から、個別に参照や更新するのではなく、集約ルートを起点として集約(オブジェクトのまとまり)としての整合性を保ちながら、参照や更新したい。 ## アーキテクチャテストの実装 テスト対象の集約とクラスのサンプルは後述。 “`java package com.example; import com.example.domain.order.DenpyoAggregateDao; import com.example.domain.order.DenpyoDao; import com.example.domain.order.MeisaiDao; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer.
集約を構成するオブジェクトは、データベース等の永続化層から、個別に参照や更新するのではなく、集約ルートを起点として集約(オブジェクトのまとまり)としての整合性を保ちながら、参照や更新したい。
テスト対象の集約とクラスのサンプルは後述。
“`java package com.example; import com.example.domain.order.DenpyoAggregateDao; import com.example.domain.order.DenpyoDao; import com.example.domain.order.MeisaiDao; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer.
#プログラミング勉強日記 2020年12月21日 Cでは標準入力を使ったことがあるが、Javaで標準入力を使ったことがなかった。その今日勉強した内容をまとめる。 #標準入力・標準出力とは 簡単に言うとキーボードからの入力のことを標準入力という。JavaではSysytemクラスのinフィールドで標準入力を取得する。 標準出力は、プログラムからデータを表示するための装置のようなもので、ディスプレイに表示されるものをいう。JavaではSysteクラスのoutフィールドを使う。 #Scannerの使い方 java.util.Scannerクラスには以下のようなメソッドが用意されている。 – 1行分の入力を取得するnextLineメソッド – 空白文字までの入力を取得するnextメソッド – 数値の入力を取得するnextIntメソッド ##nextLineメソッドの使い方 nextLineメソッドは、改行までの1行分の入力を取得することができる。 “`java:サンプルコード import java.util.Scanner; public class Sample {
#プログラミング勉強日記 2020年12月21日 Cでは標準入力を使ったことがあるが、Javaで標準入力を使ったことがなかった。その今日勉強した内容をまとめる。
#標準入力・標準出力とは 簡単に言うとキーボードからの入力のことを標準入力という。JavaではSysytemクラスのinフィールドで標準入力を取得する。
標準出力は、プログラムからデータを表示するための装置のようなもので、ディスプレイに表示されるものをいう。JavaではSysteクラスのoutフィールドを使う。
#Scannerの使い方 java.util.Scannerクラスには以下のようなメソッドが用意されている。
– 1行分の入力を取得するnextLineメソッド – 空白文字までの入力を取得するnextメソッド – 数値の入力を取得するnextIntメソッド
##nextLineメソッドの使い方 nextLineメソッドは、改行までの1行分の入力を取得することができる。
“`java:サンプルコード import java.util.Scanner;
public class Sample {
# 概要 – 三項演算子の書き方を言語別にわけました。 # Python – 通常 “`Python score = 100 result = “” if score >= 60: result = “合格” else: result = “不合格” print(result) “` – 三項演算子 “`Python score = 100 result = “合格” if score >= 60 else “不合格” print(result) “` # Java – 通常 “`Java Integer score = 100; String result = “”; if(score>=60){ result = “合格”; }else{ result = “不合格”; } System.out.println(result); “` – 三項演算子 “`Java Integer score = 100; String result = (score >= 60)?”合格”:”不合格”; System.out.pr
# 概要 – 三項演算子の書き方を言語別にわけました。
# Python
– 通常
“`Python score = 100 result = “” if score >= 60: result = “合格” else: result = “不合格” print(result) “`
– 三項演算子
“`Python score = 100 result = “合格” if score >= 60 else “不合格” print(result) “`
# Java
“`Java Integer score = 100; String result = “”; if(score>=60){ result = “合格”; }else{ result = “不合格”; } System.out.println(result); “`
“`Java Integer score = 100; String result = (score >= 60)?”合格”:”不合格”; System.out.pr