LoginSignup
5
5

More than 3 years have passed since last update.

Java勉強しよう

Last updated at Posted at 2019-12-23

全体像

https://www.guru99.com/java-tutorial.html
偶然見つけ、読んでみたらめっちゃわかりやすかったので勝手に紹介1

インストール作業だけスキップしつつ、普段からSpring系のシステム保守やってる
自分の場合でだいたい10時間くらいかかる講義量。
英語を翻訳かけずにすらすら読める人なら、もっと早く終わるかも。

まずはここから

以下の2つは環境構築のため、飛ばしてもよい
「Guide to Download & Install Java」
「How to Download & Install Java in Linux(Ubuntu)」

以下の5つは、気になったら見る程度でよい
「Groovy Script Tutorial for Beginners」
「C++ Vs JAVA: What’s the Difference?」
「Java vs C# - 10 Key Differences between Java and C#」
「Java vs Scala: What is the Difference?」
「JAVA Programming Tutorial for Beginners PDF」

環境構築を飛ばす場合

自分のPCが容量ぎりぎりだったりとかするならオンラインで済ませよう。2
https://www.mycompiler.io/new/java

ここ使うなら、サンプルコードのクラス名をMainに直そう。
そうじゃないと動かないので注意。

この場合は
class Demo {
 public static void main(String args[]){
     System.out.println("Hello World");
 }
}

↓↓↓

こうする
// DemoからMainに変更
class Main {
 public static void main(String args[]){
     System.out.println("Hello World");
 }
}

なぜこのサイト

バリバリ英語のサイトだけどそんなに難しい構文もないし
今後開発をやっていくには英文に慣れる必要があるので、むしろちょうど良い。
もちろんgoogle翻訳もバシバシ使おう。

めっちゃ良い記事だらけなのに、時折コードのインデント崩れてたり
画像の編集が雑かったりするのが笑いを誘うw3

特に気に入ったのは、講義の順番。
そもそもプログラムってPCでどう動くの?
いろんな言語あるけど、なんでJava?などなど
順を追って徐々に疑問解決していくので、理解しやすい。

「その時点で必要な事だけを伝える」というのが徹底されていると思う。

ここでは、ifとかforといった基本文法の説明はなくて、しれっとサンプルコードの中に登場してるだけ。
サンプルコードを動かしてみて、結果から動きを学んでねって感じかな?

気になった記事

以降は個人的にためになったものや気になったもの

Static variable

staticはクラス生成時に一回生成されるもの。
インスタンス化しなくても初期化されてる。

Stack & Heap

Heap…オブジェクト
Stack…メソッド、ローカル変数、参照変数
Code...バイトコード(プログラム)
Static...静的データ、静的メソッド

Java switch Statement

反復が多い場合、if~elseのネストよりは高速に処理できるという結果が出てるらしい。

Multithreading in Java

https://www.guru99.com/multithreading-java.html
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Thread.html

スレッドは個別のメモリ領域を割り当てない。
ただしスレッドは独立してるので、例外が起きても他に影響はない。

唯一わからないのが以下の挙動
setPriorityしてるのに、得られる結果は5だという。
guru99にもoracleにもそんな動きするとは書いてないけど
検証結果から察するに、TERMINATED状態になったスレッドへのsetPriority()は何を設定しても無視されるのかな。

サンプルコード
public class Main implements Runnable {
    @Override
    public void run() {
    }
    public static void main(String[] args) {
        Thread guruthread1 = new Thread();
        guruthread1.start();
        try {
            guruthread1.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        guruthread1.setPriority(1);
        int gurupriority = guruthread1.getPriority();
        System.out.println(gurupriority);
        System.out.println("Thread Running");
  }
}
出力
5
Thread Running
試験用
public class Main implements Runnable {
    @Override
    public void run() {
    }
    public static void main(String[] args) {
        // CHECK DEFAULT PRIORITY
        System.out.println("MIN:" + Thread.MIN_PRIORITY);
        System.out.println("NORMAL:" + Thread.NORM_PRIORITY);
        System.out.println("MAX:" + Thread.MAX_PRIORITY);

        Thread guruthread1 = new Thread();

        System.out.println("STATE/PRIORITY:" + guruthread1.getState() + "/" + guruthread1.getPriority());
        guruthread1.setPriority(1);
        System.out.println("STATE/PRIORITY:" + guruthread1.getState() + "/" + guruthread1.getPriority());

        guruthread1.start();

        try {
            guruthread1.setPriority(2);
            System.out.println("STATE/PRIORITY:" + guruthread1.getState() + "/" + guruthread1.getPriority());

            guruthread1.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        guruthread1.setPriority(3);
        System.out.println("STATE/PRIORITY:" + guruthread1.getState() + "/" + guruthread1.getPriority());

        System.out.println("Thread Running");
  }
}
出力
MIN:1
NORMAL:5
MAX:10
STATE/PRIORITY:NEW/5
STATE/PRIORITY:NEW/1
STATE/PRIORITY:RUNNABLE/2
STATE/PRIORITY:TERMINATED/2
Thread Running

Convert JSON to XML using Gson and JAXB: JAVA Example

ほー、こんなライブラリあったんや。
https://github.com/google/gson

How to Reverse a String in Java using Recursion

うおお、javaのStringって標準でreverse()持ってないのか・・・。
サンプルでは再帰使ってるけど、普通はforの逆方向で回すんじゃないかなぁ。

String myStr = "Guru99";
String reverseStr = "";

for(int i = myStr.length() - 1; i > -1; i--){
    reverseStr += myStr.charAt(i);
}

System.out.println("The reversed string is: " + reverseStr);

でもこれ、-1が気持ち悪いので配列からCollections.reverse()使おうとか
思って書いてたらjavaだとすげぇ大変だった。

最適解はこれだろうなぁ。

String myStr = "Guru99";

StringBuffer sb = new StringBuffer(myStr);
String reverseStr = sb.reverse().toString();

System.out.println("The reversed string is: " + reverseStr);

20 Best Java Tools for Developers in 2020

しれっとGroovyが入ってるんだけどJavaのツールって表現でええんやろかw

Java Spring Tutorial

Spring is a lightweight framework which can be thought of as a framework of frameworks because it offers support for various frameworks such as Hibernate, Struts, Tapestry, JSF, etc.

軽量、だと…?
Springの概念についてはよくまとまってるけど、この記事単体ではSpringでどう開発するかはわからないかな。
Springについては公式が良い気がするけど、gitとかいるから初学者には厳しいかも。
https://spring.io/guides/gs/spring-boot/

JasperReports Tutorial

なるほど、これ帳票作成ツールか。
今まで日本ベンダー謹製の有料ツールしか使ったことなかったから知らんかった。


  1. java教えて!って言われたらURLを投げるため作った 

  2. 低価格PCのeMMCの容量不足で悩まされてたり、そもそもPCは設定方法一切わからん!ってレベルの人が多くて、ここで詰まる人ほんま多い 

  3. ペイントで頑張った感満載である 

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5