mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1116 文字
3 分
Javaコア技術 学習Day01
2022-07-08

Javaの学習と復習として、本稿は主に《Java核心技术卷》を参照して学習対象とします。

第1章 Javaの概要#

Javaホワイトペーパー

簡潔性 オブジェクト指向 分散性 堅牢性 安全性 アーキテクチャ中立性 移植性 解釈型 高性能 マルチスレッド 動的性

  • Javaアプレット

ウェブページ上で実行されるJavaプログラム: applet

  • JavaScriptとJava

名前が同じでも両者には関係がありません。Javaは静的型付けで、JavaScriptよりもエラーを検出する能力が強いです

第2章 Java環境#

  • Java専門用語
用語名略語説明
Java Development Kit(Java開発キット)JDKJavaプログラムを作成するプログラマーが使用するソフトウェア
Java Runtime Environment(Java実行環境)JREJavaプログラムを実行するユーザーが使用するソフトウェア
Server JRE(サーバーJRE)サーバー上でJavaプログラムを実行するソフトウェア
Standard Edition(標準エディション)SEデスクトップまたは簡易サーバーアプリケーション向けのJavaプラットフォーム
Enterprise Edition(エンタープライズ版)EE複雑なサーバーアプリケーション向けのJavaプラットフォーム
Micro Edition(マイクロエディション)ME小型デバイス向けのJavaプラットフォーム
JavaFXグラフィカルユーザーインターフェースの代替ツールキットで、Java 11以前の一部のJava SEリリースで提供されていました
OpenJDKJava SE の無料のオープンソース実装
Java2J21998~2006年のJavaバージョンを説明するための時代遅れの用語
Software Development Kit(ソフトウェア開発キット)SDK1998~2006年のJDKを指す時代遅れの用語
UpdateuOracle社の用語で、Java8以前のバグ修正リリースを示す
NetBeansOracle社の統合開発環境
  • Javaのインストールとコンパイル
# 配置環境変数
javac --version # 見るJavaのバージョン
# コマンドラインでのコンパイル
javac welcome.java
java welcome
  • 統合開発環境

Eclipse | IntelliJ IDEA | NetBeans

  • JShell

Javaの対話的実行

第3章 Java基本プログラム#

  • キャメルケース命名

myClass

  • コメント
//注释
/*注释*/
/**
*自動生成ドキュメント
*注释
*/

1 データ型#

  1. 整数型
int4バイト-2^32 ~ 2^32 - 1
short2バイト-2^16 ~ 2^16 - 1
long8バイト-2^64 ~ 2^64 - 1
byte1バイト-2^8 ~ 2^8 - 1

1L/1l 長整数型

0x 十六進法 0 は十進法 0b/0B 二進法

  1. 浮動小数点型
float4バイト約±3.40282347E+38F 6~7桁
double8バイト約±1.79769313486231570E+308 15桁

float 1f/1F

double 1D/1d

NaN <== 0/0 || sqrt(-n)

1356cde21b065d583b5134f9365d4fd4.png

  1. char型
\\b 退格 \\t タブ \\n 改行 \\r 復帰 \\" ダブルクォート \\' シングルクォート \\\\ バックスラッシュ
  • Unicode

16ビット:初期

コードポイント U+十六ビット

17コード平面 1(基本多言語平面U+0000 ~ U+FFFF 伝統的なUnicodeコード)

2~17(補助字符 U+10000 ~ U+10FFF)
  1. boolean型

Boolean型 false || true 論理判定

2 変数#

  • 初期化

定義後には明示的な初期化が必要で、初期化されていないと使用できません

final 常量 enum 列挙型

3 演算子#

+ - * / %

  • Math

sqrt pow floorMod

三角関数 sin cos tan atan atan2

対数 exp log log10

πとeの近似値 Math.PI Math.E

import static java.lang.Math.*を使用して直接利用可能

  • 型変換

低精度 -> 高精度はロスなし

高精度 -> 低精度 有損失-強制型変換 (int) | …

+= *= %= ...
k++ ++k
== != > < >= <=
&& ||
x?a:b //(true:false)
& | ^ ~ >> <<

演算子の優先順位

596cc3093bc2ab5fbb56aba8146403af.png

4 文字列#

"...".substring(l,r) //[l,r)
"a"+"b"
"a".repeat(3) //ans = "aaa"

Stringは不変の文字列

  • equals==

==は文字列が同じ参照を指しているかどうかを判断します。リテラルで共有される場合にのみ有効で、共有されない+substringでは誤りが生じます

文字列間の比較にはa.equals(b)またはa.compareTo(b)を用います

  • 空文字列とnull文字列

"" null

  • コードポイントとコードユニット
int index = a.offsetByCodePoints(0,i); //第iコードポイントの位置
int cp = a.codePointAt(index); //第iコードポイントを取得
// UTF-16の部分的な文字は2つのコードユニットを必要とするため、charAt(pos)では取得できない
  • 文字列構築
StringBuilder builder = new StringBuilder(); //文字列ビルダー
builder.append('a');
builder.append(b);
String res = builder.toString(); //文字列を生成

5 入力出力#

  • 入力
Scanner in = new Scanner(System.in);
in.nextLine(); //1行を読む
in.next(); //空白で区切って読み取る
in.nextInt(); //int型を取得
in.nextDouble(); //Double型を取得
in.hasNext(); //入力に他の内容があるか判定
  • 出力
System.out.println();
System.out.printf(“%8.2f",x); //C言語のprintfに似ています
// d 十進数 x 十六進数 o 八進数 f 固定小数点数 e 指数表記
// s 文字列 c 文字 b 真偽 h ハッシュコード
  • ファイル入出力
Scanner in = new Scanner(Path.of(""),StandardCharsets.UTF_8);
PrintWriter out = new PrintWriter("",StandardCharsets.UTF_8);

6 制御フロー#

// ブロックのスコープ
{}
// 条件文
if(){
}else if(){
}else {}
// ループ
while(...){} // 先に判定してから実行
do ... while(...); // 先に実行してから判定
for(int i = ..;i <= .. ; i++) {}
switch (...){
case ...://ラベルは char byte short int 枚挙定数 文字列リテラル
...
break;
...
default:
...
break;//breakに出会うまで停止
}
//break continue goto
//break tag; Gotoのように tag: の場所へ飛ぶ
  • 大数

BigInteger BigDecimal

valueOf(x)を使用してxを変換

7 配列#

//配列の定義
int[] a = new int[len];
int[] b = {1,2,3,4};
new Type[0] || new Type[] {} //長さ0の配列、nullとは異なる
//for eachループ
for(int i:a) ... //配列または他の要素集合を処理
//- 配列のコピー
a = b;
a = Array.copyOf(b,copyLen);
//配列のソート
Arrays.sort(a); //クイックソート Math.random() -> [0,1)
//多次元配列
int[][] a = new int[lenA][lenB];
a = {
{...},
{...}
};
for(int[] i:a)
for(int j:i)
...
//不規則配列
int[][] a = new int[N][]; //N個の指针を含む配列
a = {...};
共有

この記事が役に立ったときは、ぜひ他の人に共有してください!

Javaコア技術 学習Day01
https://dreaife.tokyo/jp/posts/java-core-tech-day1/
著者
dreaife
公開日
2022-07-08
ライセンス
CC BY-NC-SA 4.0

一部の情報は古い可能性があります

関連した投稿 スマート
1
Javaコア技術 学習Day02
cs-base 本記事では、オブジェクト指向プログラミングの基本概念、クラスの定義と使用、LocalDateなどの定義済みクラスの操作、独自クラスの構築とカプセル化、静的メソッドとフィールド、パッケージ管理、JARファイルの作成と利用、ドキュメントコメント作成のコツなど、Javaコア技術を主に扱います。データの私有化、初期化、クラス設計原則といった重要な設計テクニックも強調しています。
2
HTML学習
FRONTEND HTML学習では、文書構造、テキストタグ、画像、音声と動画、ハイパーリンク、フォーム、リスト、表、セマンティックタグ、特殊記号などの基本概念を扱います。重要な要素として、<html>、<head>、<body>、<div>、<span>、<img>、<audio>、<video>、<form> などがあり、Webページ作成に必要な基礎知識とサンプルコードを提供します。
3
Java IO
cs-base Java IOは入出力ストリームの基本概念を扱い、バイトストリームと文字ストリームの分類、およびInputStream、OutputStream、Reader、Writerなどの代表的なクラスを含みます。バイトストリームは生のバイトデータを処理し、文字ストリームは文字データを処理します。バッファ付きストリームはIO回数を減らして性能を向上させます。アダプタパターンとデコレータパターンはJava IOストリームで広く使われ、機能拡張や異なるインターフェースの調整を行います。JavaのIOモデルには同期ブロッキングIO、ノンブロッキングIO、非同期IOがあり、それぞれ適した利用場面があります。
4
Java threadLocal
cs-base ThreadLocalはスレッドローカル変数を提供し、各スレッドが独立したコピーを持てるようにすることで相互干渉を防ぎます。重要なポイントには、ThreadLocalMapのデータ構造、ハッシュアルゴリズム、衝突解決、期限切れキーのクリーンアップ機構、set/getメソッドの実装原理が含まれます。InheritableThreadLocalを使うと、親スレッドのローカル変数を子スレッドに引き継げるため、非同期シナリオでのデータ伝播問題を解決できます。実運用では、ログ記録や分散システムにおけるtraceId伝播などに活用できます。
5
Java面接基礎
cs-base Java言語の特徴には、学びやすさ、オブジェクト指向、プラットフォーム非依存性、マルチスレッド対応、信頼性、安全性などがあります。Java SEは基礎版でデスクトップ用途向け、Java EEは企業版で複雑な業務アプリケーション向けです。JVM・JDK・JREの違いは、JVMがバイトコードを実行し、JDKが開発ツールキット、JREが実行環境である点です。Javaはバイトコードにより効率性を高め、コンパイルと解釈の併存をサポートします。例外処理はChecked/Uncheckedに分かれ、try-catch-finally構造を用います。ジェネリクスは可読性を高め、リフレクションは実行時解析能力を提供し、シリアライズはオブジェクト永続化に用いられます。I/Oストリームはバイト/文字ストリームに分かれ、デコレータやアダプタなどの設計パターンがI/Oで広く使われます。

目次