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

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

JVM JITコンパイラの仕組み

JVMのJITコンパイラの仕組みを勉強したことをまとめていく。

## 環境
– macOS Mojava 10.14.4
– jvm version 1.8
– 64bit
– Scala 2.13.1

“`shell
~/workspace/$ java -version
openjdk version “1.8.0_222”
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.222-b10, mixed mode)
“`

## JITコンパライトとは

Just In Timeコンパイラのことで、JVM上に実装されているコンパイラである。
Just In Timeの通り、「必要な物を、必要な時に」コンパイルするコンパイラのこと。

## JVM上での実行までの流れ

めっちゃ大まかに言うと、以下の流れ

“`
ソースコード -> コンパイル -> 中間コード -> 実行(コンパイル)
`

元記事を表示

java(抽象クラス)

##抽象メソッドを含むクラスの宣言

#####abstract(アブストラクト) = 抽象メソッド

“`java:Character.java
public abstract class Character { //抽象クラスとして宣言
String name;
int hp;
public void attack(Matango m) {
}
}
“`

**抽象クラスは、newによるインスタンス化が禁止される**
 ・`newによる利用`と`継承(extends)による利用`を区別できる

##attack()を抽象メソッドとして宣言

“`java:Character.java
public abstract class Character {
String name;
int hp;
public abstract void attack(Matango m); // {}を付けず、;(セミコロン)を書く
}
“`

**抽象メソッドは「現時点で何をするか確定できないメソッド」として区別**
 ・「何もしない」と「

元記事を表示

Iteratorメモ

Iteratorの使い方を簡易的に残します。
今までIteratorについて触れてこなかったのですが、頻出らしいので基本的な使い方についてはまとめておこうと思った次第です。

#Iterator

“`java
//リスト初期化
List list = new ArrayList<>(Arrays.asList(“apple”,”banana”,”orange”,”fish”));

//Iteratorの宣言
Iterator iterator = list.iterator();

//IteratorのメソッドhasNext()を使用してループ処理
//hasNext():反復処理でさらに要素がある場合にtrueを返します。
while(iterator.hasNext()) {
//Iteratorのメソッドnext()で要素を取り出す
//next():反復処理で次の要素を返します。
String str = iterator.next();

if(str.equals(“banana”)) {
//Iteratorのメソッドre

元記事を表示

java(is-a原則の継承)

##is-aの関係

**SuperHero(子クラス)はHero(親クラス)の一種である**
**抽象的なクラス(親クラス)と具体的なクラス(子クラス)の関係**

##has-aの関係
**HeroはSwordを持っている**

##参考にした画像

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588091/ccf44e8f-b8cc-3661-7b8e-fff1d6db3a07.png)

元記事を表示

初心者によるオブジェクト指向まとめ (Java)

#はじめに
研修で学んだオブジェクト指向について、自分用のメモのつもりで書きました。
詰まったり調べたりした内容を自分なりに咀嚼してまとめています。

#内容
・クラス
・インスタンス
・メンバ変数
・メソッド
・コンストラクタ
・クラス変数(static変数)
・継承
・オーバーライド

#ざっくり説明
・クラス:ひな型、テンプレート(ex. 人間)
・インスタンス:クラスをもとにつくられた実体(ex. Aさん、Bさん、… )

・メンバ変数:インスタンスの属性(ex. 体力、知力、年齢)
・メソッド:インスタンスのできる動作(ex. 歩く、挨拶する)
・コンストラクタ:メンバ変数の初期設定

・クラス変数(static変数):クラスの属性(Aさんのデータを書き換えるとAさんのデータもBさんのデータも同じように変更される)

・継承:クラスを派生させたとき、もとのクラス(スーパークラス)の機能も使える仕組み
・オーバーライド:クラスを継承するときに、スーパークラスのメソッド(処理)を、サブクラスにおいて再定義(上書き)すること

#例

下の方に、クラス・インスタンス・継承などの関係

元記事を表示

Java – 画像ファイルをバイナリで比較する方法

# 画像ファイルの比較

## 比較元ファイル
素材はPhotoACから拝借しました。
コピー元画像:PCを持つ女性
![woman_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190809/830346c8-28f5-6782-a4c7-4d9e5840fccb.jpeg)

## コピーしたファイルとの比較(True)
コピー元ファイルをコピーしただけのファイル。
バイナリデータに差異が無いため、比較結果はTrueになる想定。
![woman_1_copy.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190809/d763accc-b1e7-affd-5751-be5b1dd0d708.jpeg)

## 比較元ファイルをわずかに編集して比較(False)
コピー元ファイルをコピーした後、わずかに編集したもの。
顔の右側にある、小さな黒いドットが編集箇所。
編集したため、比較結果はFalseになる想定。
![

元記事を表示

Apache DerbyをEclipse上で使う方法

# はじめに

以前に書いた[【Eclipse】DBViewerのインストール](https://qiita.com/nkojima/items/2a865b819071e7943761)の続きとして、DBViewerを使ってApache Derbyを使う方法をまとめてみました。

# Apache Derbyとは

* Javaで作られたRDBMS。
* OracleやMySQLのような「クライアント/サーバーモード」と、SQLiteのような「組み込みモード」の両面を併せ持つ。

# Apache Derbyの用意

## ダウンロード

* [Apache Derbyのサイト](https://db.apache.org/derby/)から、JARファイルをダウンロードします。
* [ダウンロードページ](https://db.apache.org/derby/derby_downloads.html)を見ると、Javaのバージョンに応じて利用可能なApache Derbyのバージョンが異なるため、手元のJavaのバージョンを確認した上でダウンロードします。
* 私の場合は手元の

元記事を表示

Mapのメソッド

Mapのメソッドについても、復習も兼ねてまとめていこうと思います。
適宜更新予定です。

#put(K key, V value)
指定された値と指定されたキーをこのマップで関連付けます。

“`java
Map map = new HashMap() {

{ put(“apple”, “りんご”);
put(“orange”, “オレンジ”);
put(“banana”, “バナナ”);
}
};
System.out.println(map);

//Mapの初期化と同時にキーと値のセットを行っているが、
//以下のように別々に実行してもOK.
//map.put(“apple”, “りんご”);
//map.put(“orange”, “オレンジ”);
//map.put(“banana”, “バナナ”);
“`
“`java
{orange=オレンジ, banana=バナナ, apple=りんご}
“`

#get(Object key)
指定されたキーがマップされている値を返しま

元記事を表示

【Java入門】例外処理について(try-catch-finally、検査例外、非検査例外、throws、throw)

#目的

Java言語を含めたプログラミングの学習を始めたばかりの方、既学習者の方は復習用に、
今回は**例外処理**について学ぶために書いています。

[【Java入門目次】](https://qiita.com/morioheisei/items/6c7fc063c26e63d890ac)
・[変数と型](https://qiita.com/morioheisei/items/3d27e82d6cd88068dded)
・[型変換](https://qiita.com/morioheisei/items/28ab5fd69570e01cd317)
・[変数のスコープ](https://qiita.com/morioheisei/items/c56ab32b68ce92d32206)
・文字列の操作(準備中)
・配列の操作(準備中)
・演算子(準備中)
・条件分岐(準備中)
・繰り返し処理(準備中)
・クラスについて(準備中)
・抽象クラス(準備中)
・インターフェース(準備中)
・カプセル化(準備中)
・モジュールについて(準備中)
・例外処理について ←今ここ

#例外処理と

元記事を表示

マテリアルデザイン導入直後にやること

# 概要
Androidプロジェクトにマテリアルデザインを導入後にやることを書きます。
Androidプロジェクト作成した後のHello worldに対して行います。

# ライブラリ導入
マテリアルデザインを導入するために、`build.gradle`を以下のように記載します。

“` build.gradle
// material design
api ‘com.google.android.material:material:1.2.0-alpha06’
“`

# stylesの変更
`res/values/styles.xml`を以下のように記載します。

“` xml