前回までのあらすじ
プログラミングド素人のデザイナーがJava入門してみた_その2
- if文やfor文、配列などがJavaScriptと同様に書けることがわかった
教科書
ドットインストールさまさま
データ型とメモリの関係
- データ型には基本型(プリミティブ型)と参照型がある
- メモリとは番地のついた連続したデータを置く為の領域
基本型(プリミティブ型)
- 基本型の変数には値そのものが格納される
- byte
- short
- int
- long
- float
- bouble
- boolean
- char
参照型
- 参照型の変数にはメモリの番地が格納される
- ↑以外
- String
- Array
- Class
など
- 参照型の変数には値そのものは格納されていないので、挙動に注意が必要
- 値が格納されたメモリの番地のメモが格納されているイメージ?
public static void main (String[] args){
int[] arr1 = {1,3,5}; //arr1はメモリに格納された{1,3,5}を参照
int[] arr2 = arr1; //arr2はarr1が参照している{1,3,5}、つまり★同じもの★を参照
arr2[1] = 10; //大元をいじっているので、arr1もarr2も影響を受ける
System.out.println(arr1[1]);//10
System.out.println(arr2[1]);//10
}
##メソッド
###メソッドの定義
public static [returnする値の型] [変数名]([引数の型] [変数名]){
hogehoge;
}
- 返す値(returnしない)がない場合は、
void
public static void sayHi(){
System.out.println("Hi!");
}
- 文字列returnする場合は
String
と明記
public static String sayHi(String name){
return "Hi! " + name;
}
###変数の有効範囲
- メソッド内で定義した変数は、そのメソッド内でのみ有効
public class HelloWorld {
public static void hoge(){
int x = 1;
}
public static void main (String[] args){
System.out.println(x); //xはhoge()内で定義されているので使えない
}
}
##メソッドをオーバーロードする
- 引数の個数や値が異なれば、同じメソッド名でも別のものとして登録できる
public class HelloWorld {
public static void hoge(){ //メソッド名hoge
System.out.println("引数なし");
}
public static void hoge(String msg){ //こちらもメソッド名hoge
System.out.println("引数は " + msg + " です");
}
public static void main (String[] args){
hoge(); //引数なし
hoge("こんにちは"); //引数は こんにちは です
}
}
@iwashi0830はこう思った
- 変数には常に値そのものが格納されていると思っていたので、参照型の話は新鮮だった
- 結構複雑な話な気がするが、ドットインストールの説明がわかりやすかったので理解できた
- メソッドを定義するとき、JavaScriptと比べていろいろと書かなければいけないことが多い
- 常に型を明示していくのはけっこうめんどう
- メソッドをオーバーロードするのってどんな場面で役立つのかわからん