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

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

メモリ使用が激しすぎる言語はゲームに向かない

ゲームによく使われる言語としてC,C++,C#,lua,Python,(JavaScript,Java,アセンブリ)等がありますが、メモリ使用量の多い言語とゲームに使われていない言語が物凄い強い相関関係があります。
一番メモリを使うであろうScalaはJavaの2~3倍(※要出典),F#はC#の1.5倍(※要出典),JavaはC#の2倍程(※要出典)メモリを食うと風の噂で聞いたことがあります(VMはメモリ消費が激しい傾向にある)。Pythonやluaはメモリ消費量比較的多いと言われるスクリプト言語の中ではメモリを殆ど消費しないC/C++より数倍程度で、ゲームのスクリプトや簡易処理に多用されます。C#はUnityで使われている。JavaやF#は2Dとかなら普通に使われている。他の言語は(特にメモリ使用量が多ければ多いほど)マイナー。

– 大体のメモリ使用量目安(比較/ネット記事より参照)
– Scala **459,000** ≪=ヤバスギィ
– Java 170,000
– F# 127,500
– C# 85,000
– PHP 60,000
– JavaScript

元記事を表示

通常のクラスからラムダ式に変形していく

#導入
こんにちは。けちょんです。
**皆さん、ラムダ式使ってますか?**
私はこれから初めて使います。ガチ素人です。

#以降、変形させていく

##クラス度100%
まず、Ruunableインターフェースを実装したクラスは以下ですね。

“`
class lambda implements Runnable {
@Override
public void run() {
System.out.print(“OK”);
}
}
“`
インターフェース通りに、runメソッドを実装して終了です。

##クラス度60%,ラムダ度40%
“`
Runnable runner = new Runnable() {
@Override
public void run() {
System.out.print(“OKっぽい”);
}
}; // OKっぽい
“`
ここでクラスが匿名化され、インスタンス化と同じ場所で定義されています。
最後の”;”は省略するとコンパイルエラーになります。誰か教えてください。

##クラス度40%,ラムダ度60%
型推論等により、冗長な部分

元記事を表示

javaでAtCoder Beginner Contest 153を解く

AtCoder Beginner Contest 153お疲れ様でした!
[公式ページ](https://atcoder.jp/contests/abc153)

今回の自分の書いたコードは[こちら](https://github.com/ko-flavor/atcoder-java/tree/master/atcoder/src/abc/abc153)
結果はA-DまでAC、FがTLEでした。

以下簡単に解説します。

##[問題A](https://atcoder.jp/contests/abc153/tasks/abc153_a)

HPがHのモンスターを攻撃力Aで攻撃して、何回で倒せるかを求める問題。
H/Aがちょうど割り切れるときの処理に注意すれば大丈夫なはずです。

##[問題B](https://atcoder.jp/contests/abc153/tasks/abc153_b)

数字(必殺技の攻撃力)を足し合わせて、相手のHPに届くかどうかを求める問題。
シンプルな足し算でいけるはずです。

##[問題C](https://atcoder.jp/contests/a

元記事を表示

Java11でJakarta EE 8でダークウェブのSNSを作りたい

こんにちは。

今は私は暗号通貨をやり取りするダークウェブ系のSNS作りに挑戦しています。
https://github.com/nandaka-furari/DarkwebSNS
仕様等はREADMEに書いているので具体的にはここを参照してもらうとして、概要の設計としてはJava 11とJakarta EE 8を使います。
でもさっぱり開発の仕方が分からないのでJakarta EE のアプリを作る方法のサンプルとしてこの記事を発展させていきたいので編集リクエストをどんどん送ってください。

## Eclipse
今ではJakarta EEはEclipse Foundation(EF)傘下になっているのでEclipseで開発する前提の記事にしたいです。Payara Toolsの使い方などがあればいいかな。

## 終わりに
GitHubの方にもイシューやREADMEへのコミットやらガンガン送ってください。(基本READMEを発展させていけば何とかなりそうな気がする)
そして既存のJava EEやJakarta EEのQiita記事をここに集約できればと思います。

元記事を表示

各言語で、継承の挙動はかなり違うという話

## はじめに

この記事は、私が色んな言語でひたすら似たようにクラス継承を書いてみて、実際にどんな値が出力されるのかを調査した結果をまとめたものです。時には既知の言語でも「こんな文法あったんだ」と思いながら、時にはHello Worldから頑張りました。

まとめるのが大変だった割に誰得?という内容ですが、同じことが気になった人のために置いておきます。
いやでも新しい発見があるかもしれないのでとりあえず読んでみてください。
意外と面白い結果になったかもしれません。

## 調べた言語

– 静的型付け
– Java (Corretto 1.8.0_232)
– C# (3.4.0)
– C++ (11.0.0)
– Scala (2.13.1)
– Kotlin (1.3.61)
– Swift (5.1.3)

– 動的型付け
– Python (3.7.1)
– Ruby (2.6.5)
– PHP (7.1.32)
– JavaScript (node v12.14.1)

– オプショナルな静的型付け
– TypeScript (3

元記事を表示

UTF-8のBOMを削除するには?(BOMの説明もします)

業務でファイル操作に関連する処理を実装した際に、BOM付きのUTF-8で書かれたファイルから
BOMだけを削除する方法を色々と調べているうちに実装できたのでまとめてみます。
(対象となるプログラミング言語はJavaなので他の言語では書き方や仕様が異なる可能性があります)

## そもそもBOMとは?
BOMを削除する方法を説明する前に、BOMとは何なのか説明します。

BOMとはざっくりいってしまえば**Unicode系の文字コードで書かれたファイルの先頭に追加される目印となるバイト文字列**です。
UTF-8では**0xEF 0xBB 0xBF**の3バイトで表現されます。
BOM付きのファイルをメモ帳などでは視認できませんが、コンピュータ内部ではファイルの先頭にBOMと呼ばれるバイト文字列が追加されたものとして読み込みます。
では、目印とは何の目印なのかということですが、

1. Unicode系の文字コードで記述されていることを示すためのもの
2. UTF-16、UTF-32においてエンディアンと呼ばれるビットの並び順を指定するためのもの。並べる順序によってビッグエンディアン(上

元記事を表示

Javaで文字列を整数・小数に変換(データのキャスト)するメソッドについて

##データ型の変換(データのキャスト)

####文字列等→整数・小数への変換

・整数へ変換するメソッド
Integer.parseInt(変数名);

・小数へ変換するメソッド
Double.parseDouble(変数名);

“`
String text = “123”

System.out.println(text); // 123 (文字列としてのそのまま出力)
System.out.println(Integer.parseInt(text)); // 123 (整数に変換)
System.out.println(Double.parseDouble(text)); // 123.0 (小数に変換)
“`

元記事を表示

型の違う値を型変換して別の変数に代入する方法

##文法

####データ型 変数名 = (データ型) 代入される側の変数名

※型指定/型キャストをする場合、右辺のデータ型を括弧で括る必要があります。忘れがちなので注意(戒め)。

“`
public class Main {
public static void main(String[] args) {

double rand = Math.random(); * 100;

//変数に変数を代入
int number = (int)rand;

System.out.println(number);
}
}

“`

##おまけ

###変数定義と同時にMath関数を代入することも可能
その場合は、()でくくる。

“`
int game_num = (int)(Math.random() * 10 + 1);
System.out.println(“ゲームの本数は” + game_num + “個”);
“`

元記事を表示

Javaと第一級関数 -関数型インタフェースをこえて-

# 概要
Java8で関数型プログラミングまわりの機能が強化された。

– 関数型インタフェース
– メソッド参照
– ラムダ式
– ストリームAPI

関数型インタフェースやメソッド参照が、どのような機能なのかについてまとめる

# Goal
こんなソースコードが読めて使えるようになる。

“`java
public static void main(String[] args) {
List strings = Arrays.asList(“bravo”, “”, “charlie”, “alpha”);
strings.stream()
.filter(s -> !s.isEmpty())
.map(s -> s.substring(0, 1).toUpperCase() + s.substring(1))
.forEach(System.out::println);
// Bravo
// Charlie

元記事を表示

Toast 文字大きく表示させたい Android Studio  メモ

ボタン押すと3枚の画像が順に切り替わり
それぞれ違うToastテキストが出るアプリを作った。

package com.example.rswitch;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

//boolean ブーリアン  trueかfalseが入る型
//isShowing 画面に表示されているか判定

//画像re1,re2 は画面に表示されているとコンピューターに判定させる
boolean re1IsShowing = true;
boolean re2IsShowing = true;

public void fade (

元記事を表示

VSCodeにThymeleaf用のスニペットを作ろう

#はじめに
VSCodeでのユーザースニペットの記事は調べればあるが、Thymeleaf用のものがなく、VSCodeのプラグインでもいい感じのものがなかったため備忘録的に書いておこうと思う。
※検証環境はmacOS Mojave 10.14.16
## スニペットとは
直訳すると「切れ端」や「断片」となるが、要は呼び出したいものに名前を付けて簡単に呼び出せるようにしたものということ。
#早速試してみる
「Shift+Command+p」を押すと、画面上部に検索画面が出てくるので`user`などと打つと「Preferences: Configure User Snippets」が出てくるからこれを選択。
スクリーンショット 2020-01-17 6.17.10.png
次に、言語選択画面が出てくるので今回は`html

元記事を表示

Spring Boot/SecurityでOAuthクライアントを実装してみた(LINE連携)

####1. 認可サーバ設定(LINE)
LINE Developers:
https://developers.line.biz/ja

・Channel Type: LINE Login
・App Types: Web app
・Callback URL: http\://localhost:8080/redirect (認証後のリダイレクト先URL)

####2. クライアント実装(Spring Boot/Security)
2-1. 依存ライブラリの追加

“`xml:pom.xml

org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-sta

元記事を表示

AtCoderで早速標準入力の方法でつまずいた。

##はじめに
今までエンジニアとして働いてきたのですが、主に上流工程ばかりで、実装が殆どできずやばいと思って、競技プリグラミングやり始めました。なんとか一問解きましたが、そこでつまずいたことを備忘録として載せます。

今回はデータ入力の`Scanner`について書きます。

##挑戦した問題
Atcodeの過去の得点100の問題…つまり簡単な問題です。

https://atcoder.jp/contests/abc042/tasks/abc042_a

##提出1回目

色々なサイトを見ながら四苦八苦しつつもなんとかコーディングし、vscodeのターミナルから実行して想定通りの結果を得ることができました。以下がコード内容(おそらく有識者からみたら、汚いコードですがご容赦を。。)

“`
public class Main {
public static void main(String args[]) {
String answer = “YES”;
String[] haiku = args;
int sum = 0;

元記事を表示

Javaの<>ってなんだ?

#導入
こんにちは。けちょんです。
**皆さん、ジェネリクス使ってますか?**
私は今日初めて学びました。
というか今まで見て見ぬ振りしてましたが、ついに学ぶ場に出会いました。

##ジェネリクスと出会う場面
一番出会うのは、リストだと思います。
以下のような宣言したことあるかと思います。

“`
ArrayList list = new ArrayList<>();
“`

可変長な配列ということしか私は知りませんでした。
この<>を使うクラスをジェネリッククラスと言います。

##どういう役割なの?

“`
ArrayList list
“`
まずこの部分。
ArrayListはそもそもどんなクラスかというと、**複数の要素を配列のように保持するクラス**です。
Stringに限らず、様々な型のオブジェクトを格納できます。(一種類だけだけど。)
で、今回Stringを格納すると定めているのが上の宣言です。

“`
new ArrayList<>();
“`
次にこの部分。<>の中が空になってますが、これは省略してるだけです。(左辺のStr

元記事を表示

Java13におけるJavaFXの環境構築

# 概要
MacBookProを購入したためJavaFXの環境構築をしました。
# 環境
* java 13.0.2
* zsh 5.7.1 (x86_64-apple-darwin19.0.0)
* MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)

# 手順
1. Javaのインストール
2. JavaFXのインストール
3. 使いやすくする
4. PATHを通す
5. ラップする

##Javaのインストール
[公式サイト](https://www.java.com/ja/)からファイルをダウンロードし、その後インストールします。詳細な指示がサイトに乗っています。
## JavaFX
[公式サイト](https://openjfx.io/)のダウンロードページからSDKの方をダウンロードします。そのファイルを、今回は`/Library/Java/JavaVirtualMachines/`の下で展開しました。
##使いやすくする
この状態でも、例えばコンパイルなら

“`
$ javac –module

元記事を表示

研修でよく出てきそうな●とか■で図形描画10連発(Java)

## (共通部分)

“`java

package test;

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num2 = scan.nextInt();
String square = “■”;

// コード

}
}
“`

**スクショは、全て入力値が9の場合です。**

## パターン1

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/0e965464-88d0-fb89-20fd-175f09e05ef8.png)

元記事を表示

macOS に jenvをインストール、設定する

2020/01/25時点で他のQiita記事が古くてちゃんと動作しない&公式ドキュメントと違うので記述

# 前提

## 環境
macOS Mojave 10.14.6で確認

# ~/.jenv を作成する

“`
mkdir ~/.jenv
“`

# jenvのインストール

## 1. homebrewを利用する場合

“`
brew install jenv
“`

## 2. git からcloneする場合

“`
git clone https://github.com/jenv/jenv.git ~/.jenv
“`

### 2-1. bash

“`
echo ‘export PATH=”$HOME/.jenv/bin:$PATH”‘ >> ~/.bash_profile
echo ‘eval “$(jenv init -)”‘ >> ~/.bash_profile
“`

### 2-2. zsh

“`
echo ‘export PATH=”$HOME/.jenv/bin:$PATH”‘ >> ~/.zshrc
echo ‘eval

元記事を表示

Java勉強始めたてによる二次元配列

自分用メモ
##参考にはなりませんよぉ~
####Javaに触れつつ持ち合わせてる知識だけで二次元配列を考えてみる
今回は5行5列の二次元配列に1~5のランダムな数字をぶち込んで表示させた

やったこと
二次元配列の宣言
    ↓
1~5のランダムな要素を代入  
    ↓
改行しつつ表示させるのを5回繰り返す
みたいな

“`java

package sample;

public class sample {

public static void main(String[] args) {

String sep = System.lineSeparator();

int x = 6;
int y = 6;

int[][] array = new int [x][y];

for(int i = 1; i < x; i++){ for(int j = 1; j < y; j++){ array[i][j] = new java.util.Random().nextInt(5)+1; System.out.pri

元記事を表示

Javaのequalsは結構気持ち悪い

#導入
こんにちは、けちょんです。
**Java書いてますか?**
そんな私はここ数か月コーディングしてません。
焦ってJava goldの勉強を始めました(今日から)
その際気持ち悪かったことがあったので紹介します。

#なにが気持ち悪かったか
皆さん、文字列を比較する際、どう比較しますか?

##素人プログラマの場合
“`
String str1 = “test”;
String str2 = “test”;
if (str1 == str2) {
System.out.print(“same”);
} else {
System.out.print(“diff”);
}
“`
はい、だめですね。
こんなコード書いたら怒られます。はい、私です。
演算子である”==”はオブジェクトのメモリアドレスを比較します。

異なるオブジェクトは基本的に異なるメモリアドレスを保持します。
今回比較したいのはオブジェクトの持つ文字列であるため、意図に反しています。

**が、この場合は”same”が出力されます。**
String自体が気持ち悪いため、注意が必要です。
本題ではないし、詳し

元記事を表示

Java14でdata class的な機能が追加されるらしい

JavaでフィールドとコンストラクタとGetter(場合によってはSetter,equals,toString)しか持たないクラスを書いたことがある人は多いと思います.そのようなクラスはデータクラスと呼ばれれています.
場合によっては似たようなクラスを大量に書かなければならないといけず,いくらIDEのメソッド生成機能を使っても煩わしいことこの上ないですよね.
lombokを使うと多少は軽減されるが,IDEの設定などをしないといけない場合も多く,面倒であることは変わりません.

そんな中,この問題を解決するような機能がJava14で追加されるらしい.

## Java14の新機能

Java14では`Record`なるものが導入されます.
https://blogs.oracle.com/javamagazine/records-come-to-java

使い方は,データクラスにしたいクラスを`class`ではなく`record`と宣言するらしい.

### 使用例
使用前

“`FXOrderClassc.java
public final class FXOrderClassic

元記事を表示

OTHERカテゴリの最新記事