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

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

Kotlin学習記②


# はじめに
### 今回はKotlinのデータ型についてJavaとの比較を交えながらまとめたいと思います。

# 記事投稿の経緯
### Kotlinのデータ型はIntなどが存在するが、Javaにはint,Integerの2パターンが存在する。(プリミティブ型と参照型)
### そこで、Kotlinのデータ型がJavaのデータ型とどのように対応しているのかについて疑問を持ち、調査することにした。

# 実装
### IntelliJ IDEAを用いてKotlinコードからJavaコードにDecompileして確認してみる。
### Tools > Kotlin > Show Kotlin Bytecode > 「Decompile」ボタンクリック

“`Kotlin
import kotlin.jvm.JvmStatic

class KotlinDecompile {
fun foo(): Int { return 1 }

fun foo2(): Double { return 1.

元記事を表示

【Java】ラムダ式を何となく理解する

#ラムダ式を理解するための前置き
##関数オブジェクト
JavaSE7まででは、変数に代入できるのは第一級オブジェクト(データ、インスタンスなど)のみであるとされていたが、
JavaSE8以降では、***関数***も変数に代入できるようになった。

関数にとって、名前はあってもなくても良いものである。
入力(引数)と出力(返り値)さえあれば関数の役割は果たせる。

例えば…
===============================
職場の上司に、
「この手順書に沿って折り紙折っといて~、午前中に100個作っておくように!」
と指示され、手順書と折り紙100枚を渡された(どんな仕事やねん)

しかし、手順書には折り方が載ってあるだけで、
何が出来上がるのかとか、手順書の名前なんてものはない。
それでも、手順に沿って折り紙をしていった結果、
なにか良くわからないけど100個分完成した
===============================

…みたいな感じである。

プログラミングにおける関数も同様で、
「名前なんか無くても入力・出力さえあれば関数でいいよね~」
って考えでJ

元記事を表示

【Java アルゴリズム修行⑯】文字列探索 ~力まかせ法~

###文字列探索とは

ここまでは数列からの探索や、数列を期待通りにソートするなど、
数字を中心に扱ってきましたが、次に文字列を扱う探索を学んでいきたいと思います!

文字列探索というのがどういうことかという話なんですが、
**ある文字列中とは別の文字列が含まれているかどうかを調べ、含まれていれば、その位置も調べるということ**です。

例えば、`STRING`という文字列から`ING`を探索すれば、それは含まれていることになり、
文字列中の4番目に位置しているということになります。

**探索される側の文字列はテキスト、探索する文字列をパターンと呼ばれることが多いようです。**
今回はその文字列探索の中でも基礎的な力まかせ法について見ていきましょう。

###力まかせ法とは

力まかせ法とは、その名の通り、
**パターンが現れるまで、テキストを頭からひたすら走査していく**という、
効率もへったくれもない筋肉質なアルゴリズムのようです。。笑

テキストが `ABABCDEFG` で、パターンが `ABC`としたら、

最初の `ABA`と比較し、合ってなかったら1文字ずつずらして照合

元記事を表示

MinecraftでMODを開発したい#5

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
MODをjar形式にし、一般の人に配布して使えるように

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
- 設定
- 確認

##設定
build.gradleのversionを1.16.5-1.0.0に変更
IntelliJ IDEAのGradle Tool Windowを開き、Tasks > build > buildをダブルクリックで実行

##確認
IntelliJ IDEAの画面下側に表示される実行ログに「BUILD SUCCESSFUL」と表示され、build/libs/にexamplemod-1.16.5-1.0.0.jarが生成されたことを確認してください。

他のMODを導入する時と同様に、j

元記事を表示

MinecraftでMODを開発したい#4

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
MOD一覧などに表示される情報の登録

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
- リソースパックの情報
- mods.toml
- ロゴ画像
- build.gradle

##リソースパックの情報
“`src/main/resources/pack.mcmeta
{
“pack”: {
“description”: “Example Mod Resources”,
“pack_format”: 6
}
}
“`

##mods.toml
“`src/main/resources/META-INF/mods.toml

modLoader = “j

元記事を表示

MinecraftでMODを開発したい#3

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
特殊な機能を持たないブロックの追加

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
– プログラムの記述
– Block Stateの記述
– ブロックモデルの記述
– アイテムモデルの記述
– テクスチャの配置
– 翻訳設定
– ルートテーブルの記述
– 確認

##プログラムの記述
“`src/main/java/com/ドメイン名/examplemod/ExampleMod.java
package com.tntmodders.examplemod;

import net.minecraft.block.AbstractBlock;
import net.minecraft.block.Block

元記事を表示

Kotlin学習記


# はじめに
### 今回はKotlinのnull安全についてJavaとの比較を交えながらまとめたいと思います。

# null安全とは?
### null安全とは、コードからnull参照の危険性を排除することを目的としたKotlinの機能であり、null参照を使用とするとコンパイルエラーが発生する。
### この機能はJavaで頻出のNullPointerExceptionを避けるために有効であると考えられます。

# Non-Null型とNullable型
### KotlinにはNon-Null型とNullable型が存在しており、以下のように実装する。

“`Kotlin
var str : String = “あいうえお” //Non-Null型
str = null //コンパイルエラー
“`
“`Kotlin
var str2: String? = “かきくけこ” //Nullable型
str2 = null //問題なし
“`
### 上記のように、nullを格納できないNon-N

元記事を表示

【Java】ArrayListの使い方

#ArrayListとは
Javaの通常の配列では、最初から配列の数を決める必要がありました。

“`java
a=new int[10]
“`

これでは、後から配列の数を変更できなかったり、最初から配列の数が決まっていないときなどに不便ですね。
ArrayListは、このような不便を解決してくれる**予め用意されたJavaのクラス**です。

#ArrayListの特徴
下記のような特徴があります。
1. **オブジェクトであればどんな型でも扱える**
2. **配列に値を後から追加することができる**
3. **追加した順に並ぶ**
4. **nullも値として追加できる**
5. **重複した値も追加できる**
6. **スレッドセーフではない**

通常の配列に比べて、各段に使いやすいですよね。
実際の開発では、配列よりもArrayListを使うことが多いようです。

#ArrayListの書き方
ArrayListは、次のように書きます。

“`java
ArrayList<型> リスト名 = new ArrayList<型>();
“`
「型」には、クラス名を指定

元記事を表示

初学者なりにPythonのクラス定義を調べてみた

# Pythonのクラス定義の特徴

自分はJavaからプログラム言語の世界に入ったため、静的型付け言語のJavaやC#の記述方法が好き。
そのため、Pythonの勉強を始めたときも、クラス定義はJavaのように、クラス宣言、フィールド、コンストラクタ、メソッドのように作ったりしていた。

ただ、当然ながらPythonはJavaとは違うので、適当に作るとうまく動かなかったり、ネットに転がっている既存のPythonのクラスを見てもいまいちよく分からない記述があったりで、理解するのになかなか苦労した。

というわけで本記事は、Pythonのクラス定義に関する自分向けもしくは初学者用の備忘録だ。
自分もPythonに触れ始めてまだ間もないため、誤っている点がいくつかあると思う…

## Pythonのクラス定義の基本

Pythonのクラス宣言は以下のようにやるらしい

“`python:python
class TestClass:
pass

tc = TestClass()
“`
passは何もしないとい

元記事を表示

MinecraftでMODを開発したい#2

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
特殊な機能を持たないアイテムの追加

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
– プログラムの記述
– アイテムモデルの記述
– テクスチャの配置
– 翻訳設定
– 確認

##プログラムの記述
“`src/main/java/com/ドメイン名/examplemod/ExampleMod.java
package com.ドメイン名.examplemod;

import net.minecraft.item.Item;
import net.minecraft.item.ItemGroup;
import net.minecraftforge.eventbus.api.IEventBus;
impo

元記事を表示

ざっくり理解するプログラミング入門基礎編(Java)第2回

この記事は、ざっくり理解するプログラミング入門基礎編(Java)第1回の続きです。
読んでない方はぜひそちらを読んでからこの記事を読んでください。

https://qiita.com/tntn70200751/items/e7540f1650d2a64bdf92

今回は前回に引き続き、Javaにおける基本的なプログラムの書き方について、解説していきたいと思います。
この辺は何回もコードを書くうちに必ずわかるようになると思うので、わからなかったらとりあえず、こういうものがあるんだなくらいの感じで進めてもらっても構いません。

##Javaプログラムの書き方2
今回の内容は以下の二つです

* コンピューターに計算をさせる。
* 変数について知る

###コンピューターに計算をさせよう
まずは、プログラムでコンピューターに計算をさせる方法です。計算が使えるようになると一気にプログラミングをしている感が強まると思います。計算といってもそんなに難しくはないので、数学が苦手な方もそんなに身構えずにやっていきましょう。

####四則演算
まず計算の基本の足し算、引き算、割り算、掛け算です。

元記事を表示

How to Update Android Apps

I’ll explain how to update Android Apps. I am using Android Studio.

[Steps]
1. Open “build.gradle” file on the Android Studio.
2. Update Version. We must set the versionCode as an Integer.
(ex.) You must write the versionCode and version name in the file like this.
versionCode 4 to 5
versionName “1.0.4” to “1.0.5”
3. Click “Sync Now” on the upper right.
4. After the sync, Click Build on the menu. And then, choose Generate Signed APK…
5. Choose “Android App Bundle” on another pop-u

元記事を表示

MinecraftでMODを開発したい#1

*MinecraftでMODの開発をします*
*試行錯誤を書いていくだけのものになります*

##概要
環境構築をする

##動作環境 2021/05/12
||Version|
|:-:|:-:|
|Mac OS Big Sur|11.1|
|IntelliJ IDEA|2021.1.1|
|AdoptOpenJDK (HotSpot)|1.8.0_282|
|Minecraft|1.16.5|
|Forge|36.1.0|

##目次
– IntelliJ IDEAのインストール
– Forgeのインストール
– Example Modの削除

##IntelliJ IDEAのインストール
ダウンロードページから「Community」をダウンロード
ダウンロードしたインストーラを実行し、デフォルト設定のまま画面に従ってインストール
IntelliJ IDEAを起動し、タイトル画面で「New Project」を選択
「Project SDK」から「Download JDK」を選択
「Version」に「1.8」、「Vendor」に「AdoptOpenJDK (HotSpot)」を

元記事を表示

JBoss EAP XP( Eclipse MicroProfile準拠の製品 ) 覚え書き

# モチベーション

掲題の製品名を伺う機会あったが、さっぱり存じなかったので
自分向けに備忘するもの。

# JBoss EAP XP とは
JBoss EAPに追加インストールできる、Eclipse MicroProfile仕様のImplementationモジュール。
公式HPにてjarファイル形式で絶賛、配布中。

正式名称は`JBoss Enterprise Application Platform expansion pack`とのこと。

# 公式ガイド辿り方

1. [JBoss EAPの公式HP](https://access.redhat.com/documentation/ja-jp/red_hat_jboss_enterprise_application_platform/)にアクセス
1. 左メニューの`Product Version`から、JBoss EAP製品バージョンを選択。
*:2021年5月時点:JBoss EAP v7.3でしか利用不可の様子
1. 左メニューの`Category`から、`JBoss Enterprise Application

元記事を表示

クラス継承時の処理の順番について

# クラス継承時の処理の順番について

JavaSilverSE11の勉強中、クラスの継承に関する問題の解説を読んで、よく混乱していたので、ここで自分なりにクラス継承時の処理の順番について調べてまとめてみました。


## 継承とは何か?
継承とは新しく機能を実装するときに、以前実装した機能と共通する機能を引き継ぐことです。

継承はJavaを中心とするオブジェクト指向の基本的な概念となります。

## クラスの継承
既存のクラスをもとに、新しい別のクラスを作成し、既存のクラスにある機能を引き継ぐことです。

クラスの継承により、継承先のクラスは同じプログラムを書く手間が省け、新しい機能(差分の機能)を実装するだけで良くなります。
![クラスの継承イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1282434/0385e3fc-81ee-fad4-8843-9f86a0999353.png)

既存

元記事を表示

ざっくり理解するプログラミング入門基礎編(Java)第1回

この記事は、ざっくり理解するプログラミング入門基礎編(Java)第0回の続きです。
読んでない方はぜひそちらを読んでからこの記事を読んでください。

https://qiita.com/tntn70200751/items/6a94413400b0214034d4

##Javaプログラムの書き方 1

### Hello Worldの解説

これは前回の最後で実行してみたコードです。

“`java:Main.java
public class Main { //外側のブロック(クラス)の始まり
public static void main(String[] args){ //内側(メソッド)のブロックの始まり
System.out.println(“Hello World!”);
} //内側のブロックの終わり
} //外側のブロックの終わり
“`

####コメント

`//`の後の文字を見てください。これはコメントと言ってコード内の好きなところにメモのように好きな文字を書くことができます
コメントを記述する方法は以下の二つがあります。

元記事を表示

ざっくり理解するプログラミング入門基礎編(Java) 第0回

 この「ざっくり理解するプログラミング入門」はプログラミング未経験者に向けたプログラミングをイメージ理解し、プログラミングを始める第一歩となるように書いています。プログラミング経験者の方が読むと回りくどくてイライラするかもしれません。
なお、この記事はしっかりとした意味を理解するというよりも、ざっくりとしたイメージでとらえることを目的としたものですので実際の仕組みとは違うことなどもあると思いますのでご了承ください。

###プログラムはなぜ動くの?
 プログラムは0と1でできているという言葉を聞いたことがある人もいるかもしれませんが、プログラムを書くときプログラマが0と1でコードを書かなきゃいけないなんてことはありません。この0と1でできたプログラムは機械だけが理解できる言葉だと思ってください。これを__機械語__といいます。
プログラムを動かすには、人間にもわかる言葉でプログラムを書いて、機械語に翻訳して動かします。この人間が書くプログラムのことを__ソースコード__といいますが、このソースコードには言葉にもいろんな種類があるように、様々な言語があります。これを__プログラミング言

元記事を表示

【Java アルゴリズム修行⑮】マージソート

###マージソートとは

等間隔で単純挿入ソートを繰り返すシェルと、枢軸よりも大きいか少ないかで交換を行うクイックソートは
共に隣り合う値以外の交換も発生するので、不安定なアルゴリズムでしたが、
今回は隣り合う値同士の交換のみのマージソートについて学んでいきたいと思います。

マージなので色々と合わせるのかなと思いましたが、実際は

>配列を前半部と後半部の2つに分け、

それぞれをソートしたものをマージする作業を繰り返すことによってソートを行うアルゴリズム

というものらしいです。。
全体を2つに分けてそれぞれをソートして、最終的に合成することを繰り返せば良いっぽいですね。

実際にイメージで理解していきましょう。
`{4,3,6,7,1,8,6,2}`という数列をマージソートしてみます。

分割自体は要素数が1になるまで繰り返すので、それぞれが1桁になるまで分割します。

![スクリーンショット 2021-05-12 12.43.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521565/61

元記事を表示

mybatisのtrimで既に存在するWHERE句へ動的にANDやORを追加したい

## 事象
“`sql
SELECT * FROM FRUITS WHERE PRICE = 500;
“`
こんな感じのSQLに特定条件下でAND()を追加して、果物名(複数可)で絞れるようにしたい

## 方法
よく見るこいつをもじってAND句に応用する

“`xml

“`
<以下サンプル>
appleがtrueだったらappleのデータのみを取ってくる。
bananaもtrueだったらさらにbananaのデータも取ってくる。
※banana==trueのみの場合、先頭のORは削除される

“`java:TestMapper.java
public interface TestMapper {
List getFruitList(@Param(“apple”) boolean apple, @Param(“banana”) boolean banana) {
List getFruitList();

元記事を表示

入門Javaのenum

> この記事のサンプルコードは、enumの説明に特化しています。それゆえ、一般的には良くないとされるコードも含まれています(金額の計算で `BigDecimal` ではなく `int` や `double` を使っているなど)。

# 分類などをどう表すか
例えば、架空のECサイトのシステムを考えます。このECサイトの会員にはブロンズ会員・シルバー会員・ゴールド会員の3つのランクがあり、ランクによって割引率などが異なります。これをどうやって表しましょうか?

まずは良くない例です。

“`java:良くない例
public class Rank {
public static final int BRONZE = 1;
public static final int SILVER = 2;
public static final int GOLD = 3;
}
“`

ランクを整数の定数で表しています。こうすると、どのような弊害があるでしょうか?

例えば、ランクを引数に取るメソッドがあるとしましょう。

“`java:ランクを引数に取るメソッドの定義の例

元記事を表示

OTHERカテゴリの最新記事