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

JAVA関連のことを調べてみた2020年10月06日
目次

ラーメンで学ぶJava 【その1】

#Javaをラーメンで学ぼう
なぜならみんなラーメンが好きだから。
Javaの基本をラーメンを通して学びましょう。

#一連の目標

– Javaの基本を理解して書けるようになる

読者のみなさんがこれくらいのレベルに達してくれたら嬉しいなあ。

#出力にチャレンジ
プログラミング学習において、”This is a pen.”にあたる導入は”Hello World!”と出力することです。
しかし、ラーメン大好きなみなさんには「ラーメン大好き」と出力していただきます。

Javaで出力したい時のキーワードは
**System.out.println();**
です。この()の中に入れた内容が出力されます。

「ラーメン大好き」と出力したいならこう。

“`java:Main.java
public class Main {
public static void main(String[] args) {
System.out.println(“ラーメン大好き”);
}
}
“`

今は、
public class Main
public static

元記事を表示

[Android開発]Javaで画像をサーバーから取得してImageViewに設定しよう!!

#説明
画像ファイルをURLで参照して、サーバーから取得する方法です。(非同期処理)

#Java

“`java:GetImagesUrl
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

public class ImageUrl extends AsyncTask {

ImageView bmImage;

public ImageUrl(ImageView bmImage) {
this.bmImage = bmImage;
}

@

元記事を表示

【Java】オーバーロードとオーバーライド

オーバーロードとオーバーライドについてまとめます

#オーバーロード
名前は同じだが**シグニチャ**の**違う**メソッドを複数定義すること。
→名前は同じでも**メソッドとしては別物**

**※シグニチャとは**
・メソッド名
・引数リストの型
・引数の数
・引数の順番

**【オーバーロード時に考慮しないもの】**
・戻り値の違い
・引数の変数名
・アクセス修飾子の違い

例)

“`java
int price(int a, double b){
return a * b;
}
“`

【オーバーロードするパターン】

“`java
double price(int a){ //別メソッド扱いなので戻り値を変えても問題ない。シグニチャが異なっているのでオーバーロード
//処理
}

int price(double a, int b){ //引数の順番が逆→オーバーロード
//処理
}

“`

【**finalがついているメソッド**をオーバーロードすることも**可能**】

“`java
final void price(){
//処

元記事を表示

【Java Silver】クラス変数インスタンス変数・ローカル変数・とは何か

インスタンス変数・ローカル変数・クラス変数の違いについてまとめます。

##static変数(クラス変数)
– **static**で宣言する変数のこと
– クラスの全てのインスタンスに共通する値を持つ。クラスにつく形で値を持つので**クラス変数**ともいう

##インスタンス変数
**クラスの直下**、**メソッドの外**に定義する変数

##ローカル変数
**メソッド内**で宣言する変数のこと
**インスタンス変数、クラス変数と同名**のローカル変数を定義しても問題ない!!!

##コードで確認

“`java
public class Main{
public static void main(String[] args){
Party P1 = new Party();
Party P2 = new Party();
Party.budget = 10000;

P1.participants = 5;
P1.remain(); //budgetは9500として出力

System.out.println(Party.budget);

元記事を表示

[Java silver 勉強用]パッケージについてのまとめ

# パッケージについて
## パッケージとは
クラスを整理するための仕組みのこと。
Java言語には多くのクラスが存在する。そのため、大量のクラスを目的や機能ごとに整理しておくと、目的ごとに使いやすくなり、クラスの管理も容易になる。

## パッケージ宣言の仕方
「package パッケージ名;」で宣言する。
(正)ソースコードの先頭行に記述する

“`java:Hello.java
package jp.co.xxx;
import aaa.*;
public class Hello(){
System.out.println(“hello world!”);
}
“`

(誤)パッケージ宣言よりも前にimportが記述されている

“`java:Hello.java
import aaa.*;
package jp.co.xxx;
public class Hello(){
System.out.println(“hello world!”);
}
“`

必ずソースコードの先頭行に記述しなければならない
パッケージ宣言よりも前に記述できるのはコメントだ

元記事を表示

[WSL] aptでJavaを入れようとしたら404になる現象の解決法(個人的メモ)

#環境
Windows10 Education 2004
WSL Ubuntu18.04 LTS

#現象

WSLのUbuntu18.04にJavaをインストールしようと以下のコマンドを実行したところ…

“`
sudo apt install default-jdk
“`
このような404エラーが発生しインストールに失敗する。

“`
Ign:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 libnss3 amd64 2:3.35-2ubuntu2.11
Err:1 http://security.ubuntu.com/ubuntu bionic-updates/main amd64 libnss3 amd64 2:3.35-2ubuntu2.11
404 Not Found [IP: 91.189.88.152 80]
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.35-2ub

元記事を表示

超初心者がSpring入門の本を完走したので、自分なりにまとめてみる

## はじめに
Springの本完走致しました!!
[本のURL](https://www.amazon.co.jp/dp/B07H6XLXD7/ref=cm_sw_r_tw_dp_x_v9rEFb70ZV0ZC)
私なりに、軽くまとめてみようと思います。
日本語が拙い部分があったり、知識が足りていない部分がありますが、読んでいただけるとありがたいです。

## 環境について
OpenJDK14.0.2
STS4?
Maven3.6?
あと、STSにLombokいれてました。

## DI(依存性の注入)
* インスタンスの生成
* インスタンスのライフサイクル管理

DIが主にこの2つをしてくれている。
DIをすること(利用する?)ことで、newでインスタンス生成して変数に入れ込むという手間が省けたり、
使い終わった変数に`null`を入れ忘れることの防止もできる。

## Autowiredについて
Autowiredをつけておくと、自動でインスタンスを生成してくれます。(DIの対象のアノテーションがついているクラスは自動生成されるらしい。)
シングルトンらしいので、エラーが起きや

元記事を表示

Android11でTextToSpeechが動作しない時の対処法

##はじめに
急に開発で使用しているPixel3でTextToSpeechが動作しなくなった。
他の開発端末Xperia等では普通に動く。
TextToSpeechのonInitListenerで `status = -1`が返却される

##原因及び対処法
###原因: android 11の仕様

###対処法: AndroidManifest.xmlにINTENT_ACTION_TTS_SERVICEを追加
公式に以下のように書かれていました。
> Apps targeting Android 11 that use text-to-speech should declare TextToSpeech.Engine#INTENT_ACTION_TTS_SERVICE in the queries elements of their manifest:

マニフェストに以下のような感じで追加すると動くようになります。

“`xml:AndroidManifest.xml

  ・・・

   ・・・

元記事を表示

Error: A JNI error has occurred, please check your installation and try again

#Error: A JNI error has occurred, please check your installation and try again

指定されたコンパイラー準拠は1.5ですが、JREは〜みたいなエラー

参考
https://qiita.com/ponsuke0531/items/fb59a387cbbd8bb387fd

Javaコンパイラのバージョンが問題だった。

プロジェクトを右クリック→プロパティー→
左側のJavaコンパイラーを選択→コンパイラー準拠レベル:を選択

JREのレベルに合わせる。
(11)など
変更することで今回は対応。

元記事を表示

Lightbend Academyの講座が無償/有償にわかれます

リアクティブシステムを構築するためのツールキット 「[Akka](https://www.lightbend.com)」 の開発元でおなじみの [Lightbend社](https://www.lightbend.com) が提供しているオンライントレーニングサービス [Lightbend Academy](https://academy.lightbend.com) の講座が、無償で提供されるものと有償で提供されるものにわかれるとのメールが来ていました。

“`
The response has been so good, in fact, that we have decided to move to a hybrid free/premium model
starting Oct 15, 2020, instead of reverting back to our original subscription-only offering.
“`

そもそも、Lightbend Academy を受講するにはすべて有償だったのが、2020年5月頃から期間限定で無償で受講できるよ

元記事を表示

Java Lambda で巨大 JSON を扱う

InputStream を Lambda の入力にする記事を書きました。

Java Lambda の入出力型を試してみた〜Stream 編〜
https://qiita.com/kazfuku/items/6f0f55ffa3a88d76cfaa

InputStream を使用した場合のメリットとして、巨大な JSON を扱えると書いてます。そこで、実際のところどうなのかを検証してみました。

## テストデータ
まず、巨大 JSON を用意しました。name と text を持った object が 6000 個含まれるデータで、Lambda の入力サイズ上限 6MB に近い、約 5.9MB です。

“`Json
{
“data”:[
{
“name”:”vrZPwIw3T7″,”text”:”Ku7aQqW3WzUeiRdXnNB26iVElWdOUj8mQhvHksvN1sMmQ2fT3M8navvbTJuspda2q0bY3FWvsDoguE33tTNtoxuiHjdkUIHmylIezYGitmhJ2bbgcHhcHPzGr4eg3Ger9Ei

元記事を表示

JavaFXでtextFieldのフォーカスアウトイベントを実装する

## やりたいこと
– TextField コンポーネントからフォーカスアウトしたときのイベントを実装したい。
– フォーカスアウト時に文字を自動で置き換えたい。

## やったこと
`inintialize()` の中で `focusedProperty()` に対して `addListener()` でイベントを追加することで、フォーカスアウト時のイベントを追加することができました。

“`java
textField1.focusedProperty().addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0, Boolean oldPropertyValue,
Boolean newPropertyValue) {
if (!newPropertyValue) {
textField1.setText(textFiel

元記事を表示

外部URLに接続時HTTPステータスコード302が発生した時の対応

## 概要
例えば外部のサイトにあるファイルをダウンロードして取ってくるようなプログラムを書く場合、サイトによってはブラウザではダウンロード出来るけど、コードからURL接続するとエラーになるということがあります。実際に、ChromeのDevToolsなどでブラウザでどのようにダウンロード出来ているか確認してみると、アクセスしにいったURLではHTTPステータスコード302が返されてます。
今回はこのHTTPステータスコード302についての対応についてメモ書きします。

## HTTPステータスコード302とは
[HTTPステータスコード「302リダイレクト」とは](https://blog.hubspot.jp/http-302)の記事にある通り、302とは「一時的なリダイレクト」が起こっているとされています。302の場合はブラウザに表示されるURLは変わらないので、DevToolsなどを使用しない限りはユーザはリダイレクトされていることに気付きません。

## プログラムでどうやって対応すれば良いのか
302のレスポンスが返ってくる時に、ヘッダーの`Location`にリダイレクト先

元記事を表示

JD-Core を使って WinMerge Plugin 付きの コマンドラインインタフェース 作りました

![01_title.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/105193/207f25a2-5866-0b46-48ae-d3eafc5aa735.jpeg)

# JD-CLIについて
コマンドライン上で叩いて、コマンドライン上に結果が出力される__Java__ __デコンパイラー__です。

## JDについて
Eclipseでも使用されているJava5以降のclassファイルもでコンパイル可能なJava デコンパイラー
[(参照)JD Projectへ](http://java-decompiler.github.io/ “JD Project”)
JD-CLIは、そのJDで使用されているコアライブラリJD-Coreを使用させていただいています。

## 使用方法
[こちら](https://github.com/jd-wrapper/jd-cli/releases “JD-CLI リリースサイトへ”)へ移動して
Assetsにある[“jd-cli-windows-1.0.0.zip”](

元記事を表示

Doma入門 – Criteria APIでサブクエリを使う

## はじめに

[Doma](https://github.com/domaframework/doma) 2.43.0のCriteria APIでSQLのサブクエリをどのように表現できるのかを示します。

DomaやCriteria APIの概要については[Doma入門](https://qiita.com/nakamura-to/items/deaff05ba530317f3cf8)の他の記事もお読みください。

## この記事で使うサンプルコード

ここでは、簡略化したコードで説明します。
完全なサンプルコードをについては下記のプロジェクトを参照してください。

– https://github.com/domaframework/simple-examples/tree/master/dsl-style-java

データベースには部署を表すdepartmentテーブルと従業員を表すemployeeテーブルがあります。

“`sql:schema.sql
create table department (
id integer not null primary ke

元記事を表示

覚書:TribuoでTensorFlowを試そうとしたら動かないから本家を模索する旅に出た結果惨敗した

#まえおき
2020/10/03 執筆時点での感想文です。

TribuoでTensorFlowの話はここでは出てきません。Tribuoだけではなく、いろいろなものが厳しいです。ハマった記録だけです。TribuoからTensorFlowの連携をする以前の問題です。

#結論

TensorFlow Javaは、Mavenセントラルレポジトリの最新版(1.15.0)でもJava 7でビルドする必要があります。新規でJava7採用するプロジェクトはあまりやりたくないです。一応Java11でのビルドまでは動作しましたが、Java12以降では実行時にエラーとなりました。

TensorFlowの最新版(2.3.0)でもCuda11は対応されてませんでした。無理に動かそうと思えば動かせます。

Tribuo忘れてました。気が付いたら朝になっているし、いつの間にかTensorFlowでJavaの話も忘れて、pythonの実装してました・・・。やはりスクリプト系の言語は好きになれないです。

Windos上でTensorFlowからGPUの利用は可能ですが、Windows on WSL2 on ub

元記事を表示

MacのターミナルでJavaを実行してみた

ProgateでJava勉強してるので、自分で作って実行したいなと思ったのでなんとなくやってみました
参考にしたのは次の記事
https://qiita.com/stupid_student2/items/3e8ffeb33a73ef065a40

macOS Mojave 使用
ファイルはAtomで作りました


  1. Atomで「Main.java」ファイルを作る
    ファイルはデスクトップに「java」というフォルダを作ってそこに保存しました
  2. “`ruby:Main.java
    class Main{
    public static void main( String[] args ){
    System.out.println( “Hello World!” );
    }
    }
    “`

  3. ターミナルで実行
  4. “`
    cd desktop/java
    “`

    “`
    javac Main.java
    “`

    →「Main.Class」が生成される

    “`
    java Main
    “`

    →「Hello World!」が出てきた!

元記事を表示

【Java Silver】switch文について気を付けるべきこと

#switch文の文法構造

“`java
switch(変数){
   case 条件: //処理;
break;
case 条件: //処理;
break;
default: //処理;
break;
}

“`
・defaultラベルは慣習的に一番最後に記述しているが、
**一番最後以外に記述しても問題無い**

・**break文を書き忘れる**と、**次の条件の処理に進んでしまう**(フォールスルー)

##case値に書けるもの
※case値とは:分岐するために使う値・条件のこと

**・定数**
**・条件式に記述されている変数の型と同じ型か互換性のある型**

##case値に書けないもの
**・変数**
**・条件式に記述されている変数の型と互換性の無い型**
**・null**
**・long型**
**・boolean型**

元記事を表示

Oracle Java SE 11 Silver の申し込みから受験まで 1 ヶ月かかった

# 要約
– オラクル認定システム CertView を使ったことがない人は、勉強を**始めるのと同時に** CertView に登録しましょう。
– ピアソン VUE のオンライン受験システム OnVUE を利用する場合は、予定の試験時間より **1 時間以上**の余裕を確保し、かつ PC の設定によっては試験が配信されずに**後日**再受験となる可能性を覚悟しましょう。
– 問題が起きたときは**日本語の窓口**を頼りましょう。
– [Java SE 11 Silver の概要](https://www.oracle.com/jp/education/certification/jse11-5570635-ja.html)や[勉強方法](https://www.amazon.co.jp/dp/4295007625)については詳しく書きません。

## 注記
これは 2020 年 10 月時点の `1Z0-815-JPN Java SE 11 Programmer I` 受験者による、個人的な体験記です。この記事の内容は受験者全員に当てはまることではなく、かつ将来的に解消または変更さ

元記事を表示

【Java Silver】equalsメソッドについて

Java Silverを勉強するにあたって、覚えておくべきequalsメソッドにまつわる内容をまとめます。
##equalsメソッドとは

<公式ドキュメント> [equalsメソッド](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Object.html#equals-java.lang.Object-)

equalsメソッドは**java.lang.Objectクラス**に定義されているメソッドである。

##通常の挙動
“`java
a.equals(b);
“`
変数aに格納されているインスタンスと変数bに格納されているインスタンスが**同じ値**を持っているか確認する**(同値性)**

※インスタンスの**同一性(同じ参照を持っているか)**を確認するには**==演算子**を利用する
**internメソッド**を使って、同値だが同一ではないインスタンスを==演算子で比較すると、trueを返す

“`java
String a = “abc”;
String b = new String(“abc”)

元記事を表示

OTHERカテゴリの最新記事