全体像
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
なるほど、これ帳票作成ツールか。
今まで日本ベンダー謹製の有料ツールしか使ったことなかったから知らんかった。