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

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

Javaのインストール(Mac, Homebrew, 複数バージョン管理)

## はじめに

Macで**Javaのインストール方法**、**インストールするバージョン**で悩んでる方向けの記事です。

Javaってバージョンが8と11と14の3つありますよね。

「今は8でいいけど将来14にしたくなるかも〜」

って思うと、どのバージョンをインストールすれば良いか悩みますよね。

調べてみると、[homebrew-cask-versions](https://github.com/Homebrew/homebrew-cask-versions)を使うと複数バージョン管理出来ることが分かりました。

## 私の試した環境
OS: macOS Catalina(バージョン 10.15.4)
ターミナル: [iTerm2](https://www.iterm2.com/)

## Homebrewのインストール

#### Homebrewが入ってるか調べる
“`
$ brew -v
“`
バージョンが表示されなかったらインストールされています。

#### インストールされてたらHomebrewをアップデートする

“`
$ brew update

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ARC 098 C 累積和

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Regular Contets C – Attention](https://atcoder.jp/contests/arc098/tasks/arc098_a)*
Difficulty: 641

今回のテーマ、累積和
# Ruby
入力例 2 の`WEWEWEEEWWWE`を考察しますと、`WEWEWEEiWWWE`となり`i`の左側の`W`の個数と右側の`E`の個数の合計が求める人数となります。
文字列の左`0`から右`n-1`に向かって、`E`は単調減少、`W`は単調増加ですので、計算量を抑える手法として**累積和**を使用します。

“`ruby.rb
n = gets.to_i
s = gets.chomp

元記事を表示

【サンプルコード付き】Blogアプリで覚えるSpringJDBCの基本

書籍のサンプルコードを真似てコードを書いても、JDBCを理解したかどうかがわからなかったため、SpringJDBCを使って実際に超簡単なブログアプリを制作しました。(セキュリティーやトランザクションは実装していません。あくまでもCRUD操作の確認です)

GitHubにリポジトリを公開しています。
[Spring-BlogAppのリポジトリはこちら](https://github.com/megumi-622/Spring-BlogApp)

## 開発環境
– PC: macOS Catalina 10.15.4
– IDE: Eclipse 2020-03(4.15.0)
– SQL: PostgreSQL 12.2
– SQLツール: DBeaver 7.0.3.202004191823

ツールは全て無料で使えます。
ターミナルでSQLを操作できるのであれば、SQLツールはなくても大丈夫です。

## 1.必要なクラスについて
### A.ドメインクラスとは
リポジトリークラスとサービスクラスの間で渡されるオブジェクト
※モデルクラス、DTO(Data Transger Obj

元記事を表示

java(配列)

#配列作業手順
“`java
int[] scores; //①
scores = new int[5]; //②
“`
[5] = 0,1,2,3,4 中身ゼロから数えて[5]

####①と②同時に行う

“`java
int[] scores = new int[5]; //①②
“`

####配列作成省略記法

“`java
int[] scores1 = new int[] {10, 20, 30, 40, 50};
“`
“`java
int[] scores2 = {10, 20, 30, 40, 50};
“`
上下同じ意味

###forループで配列を回す
“`java
int[] scores = {10, 20, 30, 40, 50};
for (int i = 0; i < scores.length; i++) { System.out.println(scores[i]); ``` ループ変数名は任意で指定可能 ###拡張 for 文で配列を回す ```java int[] score

元記事を表示

java(乱数)

##乱数を発生させる
“`java
int a = new java.util.Random().nextInt(①);
“`
①に1以上の整数を指定すると0以上かつ①で指定した数未満のランダム整数がaに代入
`例:10を代入するとaに0〜9のいずれかが代入`

##キーボードから1行の入力を受け取る命令
**`文字列`の入力を受け付ける**

“`java
String a = new java.util.Scanner(System.in).nextLine();
“`

**`整数`の入力を受け付ける**

“`java
int a = new java.util.Scanner(System.in).nextInt();
“`

元記事を表示

【Gradle】規約と異なる構成のJavaプロジェクトをビルドする

# 概要
Gradleは規約の考えを取り入れているため、デフォルトでは想定するフォルダ構成でない
プロジェクトをビルドすることができない。
しかし、Gradleではコンフィグレーション、プロパティを変更することにより
それらの規約を柔軟に変更することが可能である。

# プロパティからのアプローチ
例として、mainソースセットのJavaソースとリソースの配置に関する規約を変更する。

今回は、以下の構成のプロジェクトをビルドする。

“`text:プロジェクト構成 └ src
├ Mapping.xml
├ app.properties
└ examples
└ Dummy.java
“`

Gradleにおいて、Javaソースはsrc/main/javaディレクトリ以下に、
リソースはsrc/main/resourcesディレクトリ以下に配置されることを想定している。

しかし、上記プロジェクトではJavaソースもリソースもsrcディレクトリにまとめられている。
よって、ビルドスクリプトでJavaソースとリソ

元記事を表示

Processingでタイピングゲームを作ろう!

## Processingとは

Javaをベースにした言語で、グラフィックを使ったプログラミングが簡単に作成できます。
私は、Javaのグラフィックを使うのが苦手だったので、Processingに感動を覚えました。

ここでは、私が作成した簡単なタイピングゲームの作り方を説明していきます。

できるだけ細かく説明していくので、プログラミングが苦手な人でも作れると思います。
(if文やfor文など最低限のプログラミングの知識はあるものとして書きました。)

作るものはこれです!
↓ ↓ ↓

【実践‼】SQLステートメントの実行

## 1.事前知識
– [【最新】UbuntuでJavaの環境を構築する方法](https://qiita.com/ryome/items/37c53e9638a9c6ea146a)

– [【初心者でもできる‼】Windows10にJava環境を作る方法(JDK14.0.1)](https://qiita.com/ryome/items/30135570954e36196821)

– [【わかりやすく解説‼】Javaのインスタンスの使い方](https://qiita.com/ryome/items/62ba0d8395af6698053a)

– [【初心者でもできる‼】Windows10にEclipseをインストールする方法(Java環境構築)](https://qiita.com/ryome/items/b47c5acdaa52cffbec58)

– [【初心者でもできる‼】Windows10にMySQLをインストールする方法(MySQL Server 8.0.20)](https://qiita.com/ryome/items/68766f81f0668ff6876b)

元記事を表示

小数点を起点に文字列を分割(index.Of , substring使用)

#背景
小数点の前と後で計算方法を変えたいときに少し躓き、解決したのでメモしておきます。

#環境
Eclipse Neon 4.6.3
Java8

#使用クラス
・文字列に小数点が含まれているかどうか
 int 変数名 = 文字列の変数.indexOf(“調べたい文字”);

・小数点の前後の文字列の取得
 文字列の変数.substring(x , y);
 x = 初めの文字の位置
 y = 終わりの文字の位置(省略可)

#使ってみた
“`
public class strPractice {

public static void main(String[] args) {

String a = “12345.6789”;

//文字列に”.”が含まれているか
//含まれていればその場所(0から始まる)、なければ-1を返す
int b = a.indexOf(“.”);
System.out.println((b + 1) + “番目に含

元記事を表示

JavaでArrayListからStringに文字列格納する方法(個人用)

#背景
小数点以下の数字を二進数に変換するプログラムを作成中、リストに追加していった数字を拡張for文以外で扱いたかったため

#環境
Eclipse Neon 4.6.3
Java8

#方法
“`
String 変数名 = String.join(連結させたい文字, 配列名);
“`

#使ってみた
“`
public class forPractice {

public static void main(String[] args) {

double x = 0.125;
List y = new ArrayList();

while (x > 0) {

x *= 2;

if (x >= 1) {
y.add(“1”);
x -= 1;
} else {
y.add(“0”);
}

元記事を表示

【Gradle】Javaプラグインのタスクについて

# Javaプラグインのタスクの依存関係

Javaプラグインに含まれるタスクは、そのほどんどが単体で実行できず、依存関係を持つ。
よって、先に実行されているべきタスクというものが存在する。

## タスクの実行順序と処理概要

### compileJava/processResourcesタスク
mainソースセットを対象とする。
Javaソースのコンパイルとリソースのbuildファイルへのコピーを行う。

### classesタスク
compileJavaタスクとprocessResourcesタスクを実行する。

### javadocタスク
classesタスクの実行結果である生成物をもとにJavadocを生成する。

### compileTestJava/processTestResourcesタスク
testソースセットを対象とする。
Javaソースのコンパイルとリソースのbuildファイルへのコピーを行う。

### testClassesタスク
compileTestJavaタスクとprocessTestResourcesタスクを実行する。

### testタス

元記事を表示

Java 言語の主要機能

####Javaでできること
スマホアプリや各種Webサービス、ゲームなど。
Javaが使われている代表的なサービスは、

・Twitter
・Evernote
・楽天
・みずほ銀行のシステム

等がある。

####どんな環境でも使える
MacでもWindowsでもLinuxでも動く。Javaは環境を選ばない。

####需要が多い
どんな環境でも使え、あらゆるサービスに使われているので求人数が多い。

####大規模開発に適している
Javaはオブジェクト指向が確立されている言語。機能ごとにパーツ分けし、それを組み合わせることで複数人で1つのシステム作ることができる。

####処理速度が速い
Javaはコンパイラ型の言語である。
コードを変換する必要がなく、そのまま処理することで高速に動く。

####ガベージコレクションを備えている
プログラムが実行される際は下記のプロセスを踏む。
1. プログラム処理に必要な情報をメモリ上に読みこむ
2. 読みこんだ情報をもとに、処理を実行する

読み込まれた情報は処理をした後は不要になる。不要になった情報をそのままにしておくとメモリに溜まっ

元記事を表示

【Gradle】Javaプロジェクトでよく行うビルド操作

# プロパティファイルのエスケープ
リソースのうち、日本語などのマルチバイト文字を含むプロパティファイルは
native2asciiコマンドによってエスケープするのが一般的である。
Gradleでプロパティファイルのエスケープを行うには、
プロパティファイルのエンコーディングがプロジェクトのデフォルト設定と同じかによって
2通りの設定方法がある。

## 事前知識
GradleのJavaプラグインにおいて、リソースに関係する要素は以下のものがある。

– 規約
リソースはsrc/main/resources、srt/test/resourcesディレクトリ以下に配置する
– タスク
processResources、processTestResourcesタスクは上記の規約で設定されたディレクトリに
配置されたリソースファイルをそれぞれ、build/resources/main、build/resources/test
ディレクトリにコピーする。

## プロジェクトのデフォルトエンコーディングと同じ場合
processResourcesタスクなどのCopy型タスクにエ

元記事を表示

Javaテクノロジと機能、開発環境

備忘録です。

#Javaテクノロジ

https://docs.oracle.com/cd/E26537_01/tutorial/getStarted/intro/definition.html

上記のリンクでまとめていただいているのがわかりやすそうなのでそちらを参考にしつつ、私の理解を記載します。

Javaテクノロジとは、Javaというプログラミング言語がどんな物か、Javaを使うことでどうなるのかをまとめた物と思っています。上記リンクの全ては記載せず、私が特に重要だと思っている箇所をこちらに記載します。

#Javaの特徴
オブジェクト指向言語であること

今時点でも主流になっているオブジェクト指向
共通処理でのプログラムの書き換えが楽である
(例 1、2、3で共通の処理を書き換えたいときに、1、2、3の親に記載し、親を書き換えれば共通処理のコード記載の手間を省ける)

移植性の高さ
JavaはインストールさえしてしまえばどんなOSでもほぼ使えるので、環境を写したりするときにすぐに使えること
(例 Linuxで作成し、コンパイルしたが、Windowsで作業したくなったときに、

元記事を表示

Gradleを使ったJavaプロジェクトのビルド

# Javaプラグインとは

GradleでJavaプロジェクトをビルドするには、Javaプラグインが必要となる。
プラグインを適用するには、build.gradleに以下を記述する。

“`gradle:build.gradle
apply plugin: ‘java’
“`

Javaプラグインは「タスク」「規約」「プロパティ」「ソースセット」の4つの要素が
パッケージングされたコンポーネントである。
それぞれの要素について学習することで、Javaプラグインを使ったビルドの動きを理解する。

# ソースセット

ソースセットとは、**同時にコンパイルを行うべき対象**をグループ化した概念である。
Javaプラグインでは、デフォルトで

– main:プロダクションコードおよび本番用のリソースをまとめたソースセット
– test:テストコードおよびテスト用のリソースをまとめたソースセット

上記2つのソースセットを提供している。

ソースコードは次のような特徴を持つ。

– ビルドスクリプトで自由に追加できる
– 一意な名前を持つ
– コンパイル対象となる「Javaソース」と「リ

元記事を表示

Struts における役割整理メモ

#Struts で提供される代表的なコンポーネント紹介

## Controller

### ActionServlt
> javax.servlet.http.HttpServlet を拡張したクラスです。純粋にコントローラとして働き、クライアントからの要求を一元的に受け取り、処理を適切なアクション・クラスに委譲し、結果をビューの役割を果たす JSP などに渡す。

### ActionMapping
> アクション・マッピングは要求された URL パターンに対して、アクション・クラスの完全限定名をマッピングしており、ビジネスロジックをカプセル化したアクション・クラスへのマッピングと、応答先であるJSP へのマッピングを行う。アクション・マッピングを介して、ビューとコントローラは独立性を保つことができる。

### Action
> Action クラスは、要求に対して、対応するビーンなどで実装されたビジネス・ロジックの処理をハンドリングされる。アクション・サーブレットによって、アクション・クラスの execute() メソッドが呼び出され、この中で、認証、バリデーションなどの処理

元記事を表示

Java 表达式注入

## 简介
Java中表达式根据框架分为好多种,其中EL表达式是jsp的内置语音,是为了让jsp写起来更简单而出现的,其设计思想来源自`ECMAScript`和`XPath`。使用EL表达式我们可以在jsp页面中执行运算、获取数据、调用方法、获取对象等操作。其基本语法为`${变量表达式}`。

## 基本语法
大部分的语法都和jsp差不多,说下不太一样的。

### 获取变量

“`jsp
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<% String name = "张三"; request.setAttribute("name",name); request.setAttribute("request", "request_name"); session.setAttribute("session", "session_name"); pageContext.setAttri

元記事を表示

java Calendarクラス(時刻のセット、比較、フォーマット)

#Calendarクラスのインスタンスに任意の時刻をセット

“`java

Calendar tempTime = Calendar.getInstance();

// 時間をセット
tempTime.set(Calendar.HOUR_OF_DAY, trainHour);
tempTime.set(Calendar.MINUTE, trainTime);
“`

#AがBより前の時間かどうか比較

“`java

boolean isBefore = false;
//tempTimeがsafeTimeより前の時間かどうか
isBefore = tempTime.before(safeTime);
“`

#「HH:mm」にフォーマットして出力
“`java
import java.text.SimpleDateFormat;

—————————————

// カレンダークラスのインスタンスを生成
Calendar ansTime = Calendar.getInstance()

元記事を表示

java(条件分岐と繰り返し)

##for文による繰り返し
“`java
for (int i = 0; i < 10; i++) { ``` ①`int i = 0;` 初期化処理 最初に1回だけ実行される文(ループ変数) ②`i < 10; `  繰り返し条件 ループを継続するか否かを判定する条件式 ③`i++`     繰り返し時処理 }まで到達した直後に自動的に実行される文 ##制御構造のネスト ```java if (height > 170) {
if (eyesight > 1.0) {
“`
「分岐の中に分岐」多重構造を`入れ子`や`ネスト`という

元記事を表示

OTHERカテゴリの最新記事