2020 |
07,15 |
/*
Javaは基本データ型と参照型がある。
実は基本データ型にはそれに対応する参照型のクラスが用意されていたりする!
例えば、、
int > Integerクラス
duoble >Doubleクラス
↑これらをラッパークラスという!
*/
public class MyApp{
public static void main(String[] args){
//基本データ型をラッパークラスに変換する方法
/*Integer のラッパークラス型でiを宣言してあげて
32という基本データ型をラッパークラスにしたい場合はInteger
クラスのインスタンスを作ってあげて基本データ型を渡してあげればOK!
*/
//Integer i =new Integer(32);
/*
また、逆にラッパークラスの値を基本データ型として取り出すには
intで受けてあげたいので int nとしつつi.intValue();とする!
*/
//int n = i.intValue();
/*
普通にかいても良しなにやってくれたりする
*/
Integer i =32; //auto boxing
/*
例えば参照型のデータには値そのものではなくて値が入っているメモリ領域の
場所が入ると説明してきたがどの場所も指示していない状態に
したい場合はnullという特殊な値を代入してあげます。
しかしnullはunboxingできないのでここで例外が発生してしまいます
*/
i = null;
int n = i ; //auto unboxing
System.out.println();
}
}
PR
2020 |
07,15 |
«例外処理_1»
// 例外処理とはプログラム実行中に予期しない結果が発生したときに
適切に処理をしていく方法のこと
class MyException extends Exception {
public MyException(String s) {
super(s);
}
}
public class MyApp {
public static void div(int a, int b) {
try {
if (b < 0) {
throw new MyException("not minus!");
}
System.out.println(a / b);
} catch (ArithmeticException e) {
System.err.println(e.getMessage());
} catch (MyException e) {
System.err.println(e.getMessage());
} finally {
System.out.println(" -- end -- ");
}
}
public static void main(String[] args) {
div(3, 0);
div(5, -2);
}
}
2020 |
07,14 |
//列挙型!とは!複数の定数をひとつにまとめておくことができる方のことです。
//Enumで定義する定数のことを列挙子と呼びます。
//Javaでいう列挙型はクラスですのでフィールドやメソッドを定義することができます。
処理結果の成否を列挙型でもつことにする。
列挙型をつくるにはenumというキーワードをつかう!そのあとに名前をつける!
{}の中にこの列挙型が用いる定数をいくらでもかいていくことができる
定数なので大文字を推奨!
enum Result{
SUCCESS, //0
ERROR, //1
}
public class MyApp{
public static void main(String[] args){
//resにはSUCCESS,ERROR,のどちらかが入ってくる!
Result res;
res = Result.ERROR;
switch (res){
case SUCCESS:
System.out.println("OK!");
//列挙型を定義するとordinalという特殊なメソッドも定義されて
//ゼロから始まる連番がセットされる
System.out.println(res.ordinal());//0
break;
case ERROR:
System.out.println("NG!");
System.out.println(res.ordinal());//1
break;
}
}
}
実行結果は以下の通りです
C:\Users\81801>javac -encoding utf-8 MyApp.java
C:\Users\81801>java MyApp
NG!
1
C:\Users\81801>
2020 |
07,14 |
//インターフェースについて!
//インターフェースを作るにはinterfaceというキーワードをかき
//そのあとにインターフェースの名前をかいてあげればOK
このなかには 変数 抽象メソッド defaultメソッド staticメソッドの
処理をかくことができます。
interface Printable{
//変数
double VERSION = 1.2;
//抽象メソッド
void print();
//defaultメソッド
public default void getInfo(){
System.out.println("I/F ver"+ Printable.VERSION);
}
//staticメソッド
}
//Userクラスでinterfaceを使うにはimplementsというキーワードを使う
class User implements Printable{
@Override
public void print(){
System.out.print("Now printing user profile...");
}
}
public class MyApp {
public static void main(String[] args) {
User tom =new User();
tom.print();
tom.getInfo();
}
}
最後に!!
クラスの継承と違ってインターフェースはクラスにいくつでも適用することが
できるのでかなり柔軟にクラスの拡張をすることができます!
2020 |
07,14 |
抽象クラスを使うと関連するクラスの共有分だけを切り出して
具象クラスの方に実装を任せることができる
開発の規模が大きくなってくるとこうした実装もみかけたりする!!
public abstract void sayHi();
}
class JapaneseUser extends User{
//sayHiメソッドをオーバーライドしているのがわかりやすいように
//アノテーションをかく!!
@Override
public void sayHi(){
System.out.println("こんにちは");
}
}
class AmericanUser extends User{
@Override
public void sayHi(){
System.out.println("Hi");
}
}
public class MyApp {
public static void main(String[] args) {
AmericanUser tom = new AmericanUser();
JapaneseUser aki= new JapaneseUser();
tom.sayHi();
aki.sayHi();
}
}