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

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

GradleのArtifactとはなんぞや

毎回忘れるのでメモ。

## Artifactとはなんぞや

該当プロジェクトが、一意に参照できるようにするためのもの。
プロジェクトの名前やライブラリの名前になることが多いと思う。

javaのライブラリ管理はドメイン名と Artifact で行われており、それぞれをつなげたのものファイル名にする。
そのため、_example.com_ というドメインを所持している会社の _foo-library_ というライブラリを配布する場合、

“`shell
com/
└── example
└── foo-library
“`

といった形になる。
また、Gradleの設定ファイルである`build.gradle`には、ドメイン部分の

“`
group = ‘com.example’
“`

が記載される。

## じゃあNameってなんなん

Gradleでは、複数のプロジェクトを1つのプロジェクトファイルにまとめることができる。
その際に使用するalias。
なので、単一プロジェクトではArtifactと同じで良いと思う。

## 参考

### Artifactに

元記事を表示

カウンターアプリ1号

とりあえず、自分の中でまとまった内容から追記していきます。
#Javaファイル

“`Java:MainActivity.java
package com.example.counterapp1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity
implements View.OnClickListener{
int number;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreat

元記事を表示

Javaで直和型を使ってプログラミングする(ネタ)

(Javaよくわかっていないですが)デフォルトで直和型をサポートしていて良いと思いました。直和型を使う勉強を兼ねて、「逆ポーランド記法の式(`1 2 +` = `3` みたいな)を計算するインタープリター」を作ってみました。

## 今回書いたコード

“`java
package neta;

import java.util.Stack;

public class Main {
// 数値型をあらわす型
static class IntType extends Exception {
int v;
IntType(int v) {
this.v = v;
}

@Override
public String toString() {
return Integer.toString(v);
}
}

// プラス演算をあらわす型
static class PlusOperation extends

元記事を表示

null かもしれない配列をストリームに変換する

毎回ちょっと悩むので備忘録として書いておく

# まとめ

orElse で空のストリームを返す、というアイデアだけ覚えておけばOK

“`java:まとめ
Optional.ofNullable(arr)
.map(Arrays::stream).orElse(Stream.empty())
.forEach(System.out::println);
“`

# 詳細

### やりたいこと

null の可能性がある配列に対してストリーム処理をしたい。

### 問題

拡張 for 文や `Arrays#stream`、`Stream#of` は null セーフではない。
でも毎回 null チェックするのは面倒。

“`java:for文を使う場合
String[] arr = null;

for (String s : arr) { // ここで NullPointerException
System.out.println(s);
}
“`

“`java:Arraysを使う場合
String[] arr = null;

Arrays.str

元記事を表示

SPAの文字揃えゲーム作成

# 背景
過去記事:[JavaとJavaScriptでwebブラウザとのソケット通信①
](https://qiita.com/take4eng/items/d0b009c48ee8c3fe420a)
過去に非同期通信を用いてチャットアプリを作成した。
⇒改造してチャットとは異なるアプリケーションを作成。

twitterで見かけた『~揃えゲーム』を作成。
個人制作の備忘録。
![無題.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/634805/1aac4371-8142-8e01-0e3c-9c4e855142df.jpeg)

## 目的
– ソケット通信で送受信されているデータを取得して編集する
– JavaScriptを用いて受信データの表示方法を学ぶ

# 実践内容
1. クライアントから送信されたデータをサーバーサイドプログラムによって編集
2. 編集したデータをクライアントへ送信
3. サーバーから送信されたデータ(文字列)を1文字ずつ順番に表示

# 成果物
1. なんでも揃えゲーム

元記事を表示

2変数、4分岐の if 文について

### 変数 min_value, max_value が存在するとき、それぞれの条件で処理を変えたい

例えば…

|min_value|max_value |処理 |
|:——- |:——– |:——-|
|null |null |なにもしない |
|null |not null |上限より小さいことを検証 |
|not null |null |下限より大きいことを検証 |
|not null |not null |範囲内にあることを検証 |

普通はこんな感じ

“`java:Main.java

class Main {

public static void main(String[] args) {

}

private static String hoge(int value, Integer min_value, Integer max_value) {
if (min_value == null && max_value ==

元記事を表示

AtCoder【ABC086A】技術メモ

#はじめに
第2弾、AtCoderのことをメモしていく

#AtCoderの問題
シカのAtCoDeerくんは二つの正整数 a,bを見つけました。
aと bの積が偶数か奇数か判定してください。

#解説
これまた入力された数字を元に計算を行えばいいので
nextInt()の出番かな。

入力できるように準備して

“`
Scanner scanner = new Scanner(System.in);

int a = scanner.nextInt();
int b = scanner.nextInt();

if((a * b) % 2 == 1) {

System.out.println(“Odd”);

} else {

System.out.println(“Even”);

}
“`

今回の問題は前回使ったScannerとnextInt()を使えたので瞬殺でした。

では、また次回。

元記事を表示

JavaのHttpClientにおける3つのTimeoutの違いに関して

ApacheのHttpClientを使う際に、以下の3つのタイムアウト値(ミリ秒)を設定できるものの、違いをよくわかっていなかったので自分なりにまとめてみた。

“`
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;

RequestConfig config = RequestConfig.custom()
.setConnectTimeout(30000)
.setConnectionRequestTimeout(30000)
.setSocketTimeout(30000)
.build();

HttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(config)
.build();
“`

#ConnetionTimeout
サーバーへの接続要求を送信して、接続が確立されたとレスポンスを受け取

元記事を表示

Image Searchのフィルタを検証してみる

V2から追加された IntAttr、StrAttrの挙動について調べました。

# フィルタを使った絞り込み
フィルタを使い場合は、setFilterにフィルタ条件を設定します。

“`
request.setFilter(“int_attr=10000 AND str_attr=\”あああ\””);
“`

全体のソースは、【検索編】を参照してください。

# IntAttr の検証
int_attr フィールドは、>、>=、<、<=、= の演算子をサポートしています。 ``` request.setFilter("int_attr=10000"); ``` IntAttrの値が10,000の情報がヒットします。 ``` request.setFilter("int_attr<10000"); ``` IntAttrの値が10,000未満の情報がヒットします。 ``` request.setFilter("int_attr>10000″);
“`

IntAttrの値が10,000より大きい情報と、**設定されていない(NULL)**のデータがヒットします。
設定されて

元記事を表示

Java SDKを使ってImage Searchの類似検索を試す【登録編】

# はじめに
前回は、Image Searchのインポート機能を使って画像を登録しました。インポート機能では、V1の時のパラメータしか登録できずV2で新たに追加されたパラメータを登録する事は~~できません~~でした。**できました。すみません。**

ということで、Image Searchにデータを投入するにはAPIを使って登録する方が良いと思います。データを登録する際はいくつか気を付ける点があるので、そのあたりを記述していきたいと思います。

# データの登録方法
今回は、Java SDKを使って登録を行います。環境構築等は【検索編】を参照してください。

“` SimpleAdd.java
package imagesearch.sample;

import java.io.InputStream;
import java.util.Base64;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.imagesearch.model.v201903

元記事を表示

Javaのコンストラクタ

###コンストラクタ
インスタンスフィールドが増えるとコードが冗長になります。
クラスには、コンストラクタというものがあり、newを使ってインスタンスを生成した後に自動で呼び出される特別なメソッドを使います。
コンストラクタは特別なメソッドのため、定義方法が決まっています。
①コンストラクタ名はクラス名と同じにする
②戻り値を書いてはいけない(voidも書かない)
【例】今回は人(Person)にします

“`Person.java
class クラス名 {
クラス名() { //コンストラクタ〜
//インスタンス生成時に行いたい処理を記述
} //〜コンストラクタ
}
“`
【例】

“`Main.java
class Main {
public static void main(String[] args) {
Person person1 = new Person();
Person person2 = new Person();
}
}
“`

“`Person.java
class Person {
Person() {

元記事を表示

Javaのクラス定義とインスタンスの生成

###クラス定義とインスタンスの生成
クラスからインスタンスを生成するには「new クラス名()」を使います。
【例】

“`Mainjava
class Main {
public static void main(String[] args) {
new Person(); //Person(今回は人)クラスのインスタンスを生成します
}
}
“`

“`Person.java
class Person{
}
“`
####変数にインスタンス
変数にインスタンスを代入するには「クラス型 変数名 = new クラス名()」を使います。
インスタンスの代入ではクラス型を指定し、クラス名がそのままクラス型になります。
【例】

“`Mainjava
class Main {
public static void main(String[] args) {
Person person = new Person();
}
}
“`

“`Person.java
class Person{
}
“`
####インスタンスメソッド
インスタンスメソッドは

元記事を表示

processingで作る簡単な障害物レースfor Java

#prossesingはプログラミング初心者におすすめ
prossesingはデザインアートを作ることができる環境です。
言語はJavaベースで作ってありますが、Pythonなど他の言語で書くことも可能です。
また、文の構造なども他のものに比べて見やすいので、まず簡単に動くプログラミングを作りたい!という方にはおすすめです。
ここでは、prossesing初心者の僕が1日で作れた簡単なゲームを紹介していきます。
コードの読みにくさはあるかもしれませんが、ご了承ください(汗

#今回作るゲーム
今回は、向かってくる障害物を避けるゲームを作っていきたいと思います。
機能としては、ジャンプ・衝突判定で作ることができます。
ここでは、コードと簡単な流れをご紹介します。
不明点があれば、コメントして頂けたらお答えします。

#コード紹介
簡単な流れだけご紹介します。
今回は棒人間を走らせるようにします。
まず必要な画像をダウンロードし、繰り返し表示するものはリストに格納していきます。

次に棒人間をジャンプさせるために、yの更新式を工夫します。
クリックした瞬間に上方向に速度を持たせ、重力に見立

元記事を表示

java(インターフェース)

#インターフェースとしてできる条件
**抽象クラスの親玉(一番上の方)**
①すべてのメソッドは抽象メソッド
②基本的にフィールドを持たない

###抽象度の高いHumanクラス

“`java:Human.java
public abstract class Human { //上の①②を満たしている
public abstract void run();
}
“`

###インターフェースとして宣言したHumanクラス

“`java:Human.java
public interface Human {
void run(); //public abstract を省略可能
}
“`

###インターフェースの実装

“`java:Hero.java
public class Hero implements Human {
}
“`

###インターフェースによる多重継承

“`java:Hero.java
public class PrincessHero
implements Hero,

元記事を表示

文字操作の基本(java)

# 文字操作(java)
初投稿です。
今回は文字操作についてまとめました。
基本的なものなので、わすれたときに見返そうと思います。

“`java
public class Main{
public static void main(String[] args){
String s1 = “Javaの勉強”;
String s2 = “Java”;
String s3 = “java”;
String s4 = “Javascript”;
String s5 = “javascript”;
String s6 = “”;
String s7 = “勉強Java”;
String s8 = ” j a v a “;
String s9 = “ j a v a ”;
String s10 = “jjjjjjjjjj”;
String s11 = “jjjjjaaaaavvvvvaaaaa”;

元記事を表示

JavaでintとIntegerの違い

# 読者
* Java覚えたて
* Android開発者
* Javaの復習

# JavaでintとIntegerの違い
**`intとIntegerの違い`**について掘り下げます。

* intとは?
* -2147483648~2147483647の範囲にある整数値を保持するための32ビットの変数型
* nullは利用不可
* プリミティブ型
* Integerとは?
* –2147483648~2147483647の範囲にある整数値を保持する変数型
* nullは利用可能
* オブジェクト型(クラス型)

Integer型はint型のラッパーであり、int型を操作するためのメソッドが用意されている。

# 利用例
たとえば、int型からString型へキャスト(型変換)したい場合などで利用されます。

“`Java
int price = 100;

// int -> Integer
Integer priceRap = price;

// Integer -> String
System.out.println(“pr

元記事を表示

SpringBoot中Property和Message的加载顺序问题

### Spring boot中属性文件加载顺序

– spring.profiles.include=test1,test2 按照test1,test2的顺序进行加载
– 无论key定义在哪个文件中,最终生效的总是最后一次加载的key的值

### Spring boot 中message文件加载顺序
– spring.messages.basename=messages1,messages2按照messages1,messages2的顺序进行文件加载
– 定义在同一个文件中的相同messageId,总是后加载的有效(覆盖)
– 定义在不同文件中的相同messageId,总是先加载的有效(之前property文件已存在则后续相同key不加载)

元記事を表示

【初心者向け】コンパイル時にクラスが見つからない時、どこを見直すべきか

# 記事の対象読者

Javaコマンドを自分でタカタカして、コンパイルとか実行周りの勉強してみようと思った時、
ソースコード書いて、フォルダ階層作って、ソースコードを配置して、と手順を踏み、
いざ、javacコマンドでコンパイルする段になると

「シンボルを見つけられません」

この1行のせいでいつまでたってもクラスファイルの作成ができないなんてことありませんか。
構文エラーって割と細かく情報が出るので、原因箇所の特定がしやすいのですが
ことクラスが見つからないってエラーに関しては実装内容ごとに修正点は違うので、
「ここをこう直せば直るよ!」というものはなかったりします。

ですが、初学者に真に必要なのは
「どう直すか」という個別ケースにしか使えない情報ではなく、
「仕組み上、ここを見れば原因がわかる」という使い回しのきく
デバッグの知識なんじゃないかなと思います。

この度、コンパイル周りの仕組みを勉強したら「シンボルを見つけられません」に対して
どのようにアプローチすればいいのか、というものがそれなりに見えてきたので、
現時点での私のデバッグ手順に関して、紹介したいなと思います。

元記事を表示

[Quarkus]GCP Pub/Subサンプルをそのままコピペしても動かない罠

https://stackoverflow.com/questions/56754174/java-util-concurrent-rejectedexecutionexception-while-shutting-down-speechclient

元記事を表示

Javaのコンソールへの入力

###コンソールへの入力
コンソールに値を入力し、その値をプログラム内で使うことです。
コンソールへの入力を受け取るにはScannerというライブラリを使います。
Scannerは「import java.util.Scanner」を使います。
【例】

“`Main.java
import java.util.Scanner;
class Main {
public static void main(String[]args) {
Scanner scanner = new Scanner(System.in); //Scannerで初期化
String name = scanner.next(); //文字列の入力の受け取り
}
}
“`
new Scanner(System.in);で初期化します。
scanner.next();で文字列の入力を受け取ります。
###Scannerの使い方
まずScannerを初期化しscannerという変数にいれています。
Scannerではこの初期化したものを代入した変数を使ってメソッドを呼び出します。
scanner

元記事を表示

OTHERカテゴリの最新記事