アットウィキロゴ

Java独学ノート > メモ書き

利用契約の内容

(編集中)

予約語まとめ

Java言語仕様では3章にKeywordsという呼び名で紹介されています。
これらは変数などの名前にそのまま使えません。
逆を言えば、演算子などのように名前の途中に含まれていたりしても問題が起きるという事はありません(例、shortcutなど)。
※Java16言語仕様基準、https://docs.oracle.com/javase/specs/jls/se16/html/index.html
言葉 意味 言葉 意味 言葉 意味 言葉 意味 言葉 意味
abstract 抽象
メソッドやクラスに付ける修飾子
continue 繰り返し文で後の文を無視して繰り返し文の最初に戻る for 繰り返し文
主に何週するか決まってる時に使う
new 配列、オブジェクトをRAMに発生させる演算子 switch 1つの変数の中身に応じて処理をする条件文
assert (勉強中) default switch文のラベル
どのcaseラベルにも当てはまらない場合
if 真偽値で処理するかしないかを決める条件文 package パッケージ
クラスファイルの居場所を定義する
synchronized 他のスレッドが処理中にその処理を行わない
boolean 真偽値
基本型の一つ
do 繰り返し文、do-while文の頭
末尾のwhile文の条件を無視して一度は内容を実行
goto Javaでは不使用
switch文で他のラベルに移動して下記の処理をする
private アクセス修飾子
それを内包するクラス内でしかアクセスできない
this 今定義しているクラスまたはインスタンスそのもの
break switch文、繰り返し文の外に出る double 倍精度の浮動小数点型
基本型の一つ
implements 実装する
インターフェースをクラスに継承する場合
protected アクセス修飾子
同じパッケージ内及びそれを内包するクラスを継承した子孫がアクセス可能
throw 例外を投げる
byte 1バイトの整数型
基本型の一つ
else if文でfalseが出た場合に実行する文 import パッケージ名やクラス名(static import)を省略できるようにする public アクセス修飾子
どのパッケージにあるクラスでもアクセス可能
throws メソッドの、try-catch文で対処しなければならない例外を定義
case switch文のラベル
記述されたリテラルと変数の内容が一致する場合
enum 列挙型 instanceof インスタンスがそのクラス、あるいはそれを継承した子孫であればtrueになる演算子 return メソッドから抜け出し、void以外であれば戻り値に変化する transient (勉強中)
catch Try文内で例外が発生した場合の対処をする文 extends 継承する int 4バイトの整数型
基本型の一つ
short 2バイトの整数型
基本型の一つ
try 例外が発生する恐れがある場所をまとめる文
catch文で実際に発生した場合の処理を定義
char 文字型
基本型の一つ
final 変更不可能にする修飾子
変数(フィールド)は値変更不可
メソッドはオーバーライド不可
クラスは継承不可
interface インターフェース
抽象メソッドと定数のみで構成されたクラス
static 静的
インスタンス化に関係なく存在するフィールド、メソッド、インナークラス
void メソッドの戻り値が存在しない事を意味する
扱い上は基本型の一つ
class クラス
プログラムのまとまりの一つ
finally Try文で例外発生の有無に関係なく実行する処理を定義する文 long 8バイトの整数型
基本型の一つ
strictfp (勉強中) volatile (勉強中)
const Javaでは不使用
定数を定義する修飾子
float 単精度の浮動小数点型
基本型の一つ
native (勉強中) super 丁度そのクラスが継承したクラス while 繰り返し文
真偽値で繰り返すかどうか決める
あと、_(アンダースコア)も予約語扱いされています(weapon_idのように"_"単体で使わなければ問題ない)。

小数型、浮動小数点の性質

(編集中)

特殊な演算子、リテラル

(編集中)

エスケープ文字

(編集中)

演算子の優先順位まとめ

インクリメント、デクリメント、真偽値反転 !、キャスト演算子 (など)
算術演算子 +など
関係演算子 ==など
論理演算子 &&など
代入演算子 =など

インクリメント、デクリメントの書く位置による性質

(編集中)

その8のメモ書き

イベントリスナー(EventListener)の項までで作ったコードを一まとめに

3つのソースコードを作りましたが、Listener.javaの内容をそのままBase.javaに入れてBase自身をリスナーとして追加し、Runtime.javaのpublic static void main(String[] args)をBase.javaに入れてjava Baseで起動すれば、一つのコードで済みます。
以下はそれらをまとめたコードです。Baseを基準としてコメントに移植要素を書いておきます。
import java.awt.*;
import java.awt.event.*;//Listeners.javaで使ったもの

public class GUI00 extends Frame implements WindowListener, KeyListener//Listener.javaで実装したインターフェイス
{
 public static void main(String[] args)//Runtime.java要素
 {
  if(args.length > 0)
  {
   for(String name : args)
   {
    new Base(name);
   }
  }
  else System.out.println("No Args");
 }

 public Base(String name)
 {
  super(name);
  setSize(400, 300);
  Listeners l = new Listeners();
  addWindowListener(l);
  addKeyListener(l);
  setVisible(true);
 }
 //以下Listeners.java要素
 public void windowClosing(WindowEvent e)
 {
  this.dispose();//イベントオブジェクトから呼び出さずとも消せる
 }
 public void keyPressed(KeyEvent e)
 {
  if(e.getKeyCode() != KeyEvent.VK_ESCAPE) return;
  this.dispose();//イベントオブジェクトから呼び出したりWindow型にキャストしなくとも消せる
 }
 //以下インターフェースを実装するため一応実装したメソッド
 public void keyReleased(KeyEvent e){}
 public void keyTyped(KeyEvent e){}
 public void windowActivated(WindowEvent e){}
 public void windowClosed(WindowEvent e){}
 public void windowDeactivated(WindowEvent e){}
 public void windowDeiconified(WindowEvent e){}
 public void windowIconified(WindowEvent e){}
 public void windowOpened(WindowEvent e){}
}
この辺は本当に人によって好みが分かれると思うので、複数人でやっていく場合、GUIの原理をよく理解して、他人のコードを見てどうやってるか理解できるようにしたい所です。

また、Frameを継承せず変数として扱う事でも初期設定をすることができます。
あと、WindowAdapter他アダプタークラスを継承した匿名クラスを、add〇〇Listenerの引数に直接入れる方法も使ってるので、
特に複数人で作る場合は使う人もいると思いますし、覚えると無駄なメソッド実装が無く便利なので覚えておいて損は無いと思います。
アダプタークラスはava.awt.eventに入ってます。
import java.awt.*;
import java.awt.event.*;

public class GUI01
{
 public static void main(String[] args)
 {
  if(args.length > 0)
  {
   for(String name : args)
   {
    Frame f = new Frame(name);//以下はBaseのコンストラクタでやってた事、匿名クラスがListeners.javaでやってた事
    f.setSize(400, 300);
    f.addWindowListener
    (
     new WindowAdapter()//addWindowListenerの引数の中で匿名クラス作成、WindowListenerを実装したクラスなので多態性で入れられる
     {
      public void windowClosing(WindowEvent e){f.dispose();}//WindowAdapterの時点ですべてのメソッドが実装してある(中身はカラ)ので何かをするこれだけでOK
     }
    );
    f.addKeyListener
    (
     new KeyAdapter()
     {
      public void keyPressed(KeyEvent e)
      {
       if(e.getKeyCode() != KeyEvent.VK_ESCAPE) return;
       f.dispose();
      }
     }
    );
    f.setVisible(true);
   }
  }
  else System.out.println("No Args");
 }
}
最終更新:2021年07月02日 12:49