Javaの分類
- JavaSE
Javaのスタンダード版、簡単なゲームやデスクトップアプリの開発に使われる、基礎の基礎。
- JavaME
携帯や小型電気などの開発に使われる。今ほとんど死んでる
- JavaEE
Webなどの開発に使われる。Javaといったら、この版のことさしてるのが多いでしょ。
JDK、JRE、JVM
-
JDK(Jvav Development Kit)
中身は開発用に必要なツールキット及びJRE,JVMが含まれてる。 -
JRE(Java Runtime Enviroment)
javaを動かす環境のことです -
JVM(Java Virtual Machine)
JavaはMACでもWindowsでも動けるのはJVMがあるから。例えば、hello.javaをコンパイルすると、java.class
が生成されますね。OSの環境依存しないように実行できるのはJVMというJavaの仮想マシンで実行するからだ。つまりOSの違いがJVMにより吸収されちゃう。
- JDK,JRE,JVM関係
JDK インストール
以下の記事はとってもわかりやすいのでここには省略します
注意したいのは環境変数の設定
- システム環境変数新規作成
変数名:JAVA_HOME
変数値:{JDKのインストールパス}
- システム環境変数Path編集
%JAVA_HOME%¥bin → 追加
または
{JDKのインストールパス}¥bin → 追加
%JAVA_HOME%¥jre¥bin → 追加
または
{JDKのインストールパス}¥jre¥bin → 追加
Java仕組み
Javaのキーワード(予約語、定数)
データ型
統合開発環境(IDEA)ツール
昔Eclipseがほとんどでしたが、今は段々IntelliJIDEAを使うようになった気がします。
個人的には、コードの補完がEclipseより優れるところですかね。
例えば:
psvmを入力したらpublic static void mainのメソッド作ってくれるとか、
soutを入力したら、 System.out.printlnに補完してくれるなど。
ツールアイコンの表示
注釈
以下三種類がある
// 一行のみ注釈
/*
複数行注釈
複数行注釈
*/
/**
* JavcDoc
* @author maekawa
* @version 1.0
* @param int 金額
*/
コンパイルファイル確認
プロジェクト構造の設定を変更するには、ツールバーの歯車アイコン をクリックか(Ctrl+Alt+Shift+S)で開くことができます。
コンパイル出力先を確認できる。
コンパイルファイル実行の注意点
実行できた。
C:\Users\maekawa\Demo\hello\src>javac HelloWorld.java
C:\Users\maekawa\Demo\hello\src>java HelloWorld
Hello
C:\Users\maekawa\Demo\hello\src>
↓なんと実行できません
C:\Users\maekawa\Demo\hello\src\com\maekawa\base>javac Happy.java
C:\Users\maekawa\Demo\hello\src\com\maekawa\base>java Happy
エラー: メイン・クラスHappyを検出およびロードできませんでした
原因: java.lang.NoClassDefFoundError: com/maekawa/base/Happy (wrong name: Happy)
修正↓
パッケージが作成された場合に、srcの階層から実行しないとダメみたいです。
エンコードが必要な場合にはjavac -encoding UTF-8 xxx.java
となります。
C:\Users\maekawa\Demo\hello\src\com\maekawa\base>javac -encoding UTF-8 Happy.java
C:\Users\maekawa\Demo\hello\src\com\maekawa\base>cd ../../..
C:\Users\maekawa\Demo\hello\src>java com.maekawa.base.Happy
気持ちいいね
よく使うショートカット
Alt+Enter
警告を直してくれる
Ctrl+Alt+L
コード整形
ドキュメント検索
「jdk api ドキュメント」と検索するといっぱい出ます。ダウンロードでもオンラインでも確認できます。
staticメソッド
- 違うクラス間メソッドの使用
メソッドを呼ぶのにstaticありとなし二種類がある。普通staticなしの方法を使います。
package com.maekawa.base;
public class Happy {
public static void main(String[] args) {
//Peopleクラスのdreamメソッド使用
People.dream();
//Peopleクラスのspeechメソッド使用
People method = new People();
method.speech();
}
}
package com.maekawa.base;
public class People {
//staticありメソッド
public static void dream() {
System.out.println("Staticあり");
}
//staticなしメソッド
public void speech() {
System.out.println("Staticなし");
}
}
- 同じクラス内メソッドの使用
全部staticなしのメソッドの場合、そのまま呼ぶ
public class Happy {
public static void main(String[] args) {
}
// aもbもstaticなしのメソッド
public void a(){
// メソッド直接呼べる
b();
}
public void b(){
}
}
全部staticありのメソッドの場合、そのまま呼ぶ
public class Happy {
public static void main(String[] args) {
}
// aもbもstaticなしのメソッド
public static void a(){
// メソッド直接呼べる
b();
}
public static void b(){
}
}
呼ばれるメソッドなし、呼ぶメソッドはありの場合にエラー
public class Happy {
public static void main(String[] args) {
}
// aもbもstaticなしのメソッド
public static void a(){
// エラー発生
b();
}
public void b(){
}
}
↑このエラーを解消する方法
new Happy().b();
よく使うクラス
クラス | ポイント | 目的 |
---|---|---|
Scanner | 標準力取得 | |
Obeject | hashcode(),toString(),clone(),getClass(), getClass(),notify(),wait(),equals() |
|
Math | 演算 | |
Random | ランダムな数字生成、例えばUUID | |
File | ファイルの作成、確認、修正、削除など | |
Date | Date、SimeDateFormat、Calendar | |
String | final | |
StringBuffer | append() | |
StringBuilder |
継承
目的
コードを簡易化して、重複なメソッドを書かないようにするため。
すべてのクラスはObjectクラスを継承してる(実際に隠されて見えないだけ)
例:以下の二つのクラス、水飲むというメソッドは重複してます。
class People{
//水飲む
public void drink(){
System.out.println("水飲む");
}
}
class Student{
//水飲む
public void drink(){
System.out.println("水飲む");
}
//勉強する
public void study(){
System.out.println("勉強する");
}
}
親クラスの変数やメソッドの呼び方
オブジェクト.変数名やメソッド名
//メインクラス、一つのプロジェクトにmainクラス一つのみ
class ctest11{
public static void main(String args[]){
Student student = new Student();
//変数の呼び方
student.age = 10;
//メソッドの呼び方
student.drink();
}
}
//親クラス
class People{
int age = 34;
//水飲む
public void drink(){
System.out.println("水飲む");
}
}
//子クラス
class Student{
//勉強する
public void study(){
System.out.println("勉強する");
}
}
CollectionとMap学習ポイント
IOについて(入出力)
AWTとswing
swingはAWTの前身みたいなもの