ねっとぱんだ-プログラミング勉強ブログ-

Webデザイン、プログラミングの勉強ブログ。

【java】配列、データ型とメモリ、メソッド

配列の宣言

//型を宣言した後に変数名
	  int[] sales;
//配列の長さ
	  sales = new int[3];
//代入
	  sales[0] = 100;
	  sales[1] = 200;
	  sales[2] = 300;
//代入を省略、長さは宣言しなくていい
	  int[] sales;
	  sales = new int[]{100,200,300};
//初期化を省略  
	  int[] sales = {100,200,300};
      
	  System.out.println(sales[1]);
//for文での書き出し
	  int[] sales = {100,200,300};
	  
	  for(int i = 0; i < sales.length; i++){  
	    System.out.println(sales[i]);
      }
//for文の省略した書き方
      //salesの値を一つずつsaleに代入している
	  for(int sale : sales){  
	    System.out.println(sale);
      }

データ型、参照型とメモリ

データ型

メモリに値そのものが入る

//変数を宣言するとメモリに格納される
int i
//値を入れるとメモリ内に値が格納される
i = 10;

参照型

メモリに値が格納されたメモリの番地?が入る

//この時点で配列の長さはわからない
//配列に入るデータの番地を格納できる領域が作られる。
int[] a;
//それぞれの値がそれぞれのメモリに格納される。
a = new int[] {1,2,3};
//その後、宣言時のメモリにデータが入ったメモリの先頭の番地が格納される。

配列に格納していった場合

      int[] a = {3,4,5};
      //この時点で配列bには配列aの値の「番地」が格納される。
      int[] b = a;
      //b[1]はa[1]でもある為、両方の配列の値が変わる
      b[1] = 8;
      //同じ値が書き出される。
      System.out.println(a[1]);
      System.out.println(b[1]);

文字列の場合

文字列は参照型であるが、データ型を同じ挙動をするように調整されている。
文字列は変更が不可になっているので
違うデータを代入すると別の領域に割り当てられる。

      String s = "hello";
      String t = s;
      //新しいメモリが割り当てられる。
      t = "world";
      System.out.println(t);
      System.out.println(s);

メソッド

	public static void sayHi(String name){
	      System.out.println(name);
	}
	
   public static void main(String[] args){
          sayHi("bob");
    }
    //メソッドで値を返すときはvoidに型を記述
    //void  = 何もないという意味
    public static String sayHi(String name){
	      return "Hi!" + name;
	}
	
    public static void main(String[] args){
          String msg = sayHi("taro");
          System.out.println(msg);
    }

メソッド内で宣言した変数はメソッド内のみで有効。

オーバーロード

引数の数や型が違う場合、同じ名前でメソッドを作れる

	public static void sayHi(String name){
	      System.out.println(name);
	}
	
	public static void sayHi(){
	      System.out.println("none");
	}

	
    public static void main(String[] args){
          sayHi("bob");
          sayHi();
    }