본문 바로가기
학과 공부/컴퓨터프로그래밍2(자바)

4/9

by sonysame 2018. 4. 9.

class


public class


차이점: javac는 public class와 파일명이 같은지 본다!


private -> should be used inside the class


에러가 나지 않는다!

class Sample{

private int data_field;

void foo() {

data_field=1;

}

public int data_field() {

return data_field;//private int data_field를 가리킨다

}

}

다른 클래스에서 

Sample x = new Sample();

System.out.println(x.data_field());




getter와 setter


class Sample{

private int data_field;

void foo() {

data_field=1;

}


  //getter

public int data_field() {

return data_field;

}


  //setter

public void set_dat_field(int x) {

data_field=x;

}

}


class Sample{

int data_field=1;

}

public과 private이 붙지 않으면 default visibility

default visibility->같은 package에서 사용 가능하다!




visibility: public, static, private

class Sample{

public static void main(){

}


static void m(){

}

}

static은 다음주에 더~


array


int a[10]=>40bytes


array is a class


int [] ary =new int[3];


ary[0]

ary[1]

ary[2]

ary[3]


자바에서 새로운 instance 생성되었을때 every data field is zero

package javaclass0409;


public class Test02 {


public static void main(String[] args) {

// TODO Auto-generated method stub

int [] ary=new int [3];

System.out.println(ary[0]);

}


}


package javaclass0409;

public class Test02 {

public static void main(String[] args) {
// TODO Auto-generated method stub
int [] ary=new int [3];
System.out.println(ary[3]);
}

}
범위 넘어가면 컴파일은 되지만,, exception발생
왜 컴파일이 되는 것일까?
package javaclass0409;

import java.util.Scanner;

public class Test02 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int [] ary=new int [n];
System.out.println(ary[0]);
System.out.println(ary[1]);
System.out.println(ary[2]);
System.out.println(ary[3]);
}

}

이런 경우 있으므로, 어디까지 되는지 미리 foresee하지 않는다!
error determine while you are running
javac Test.java->Success
java Test->run time error

에러가 발생하는 경우

컴파일: 컴파일 타임 에러
실행도중: 런 타임 에러




package javaclass0409;


public class Test03 {


public static void main(String[] args) {

// TODO Auto-generated method stub

int [] ary=new int [3];

System.out.println(ary.length);

System.out.println(ary[0]);

System.out.println(ary[1]);

System.out.println(ary[2]);

ary.length=4;

System.out.println(ary[3]);

}


}


컴파일 에러!


final: prefix -> you cannot change the datafield


final이 들어간다면! the value cannot be changed!

public final int data_field=1;

.


class Sample{

public final int length

public void int(){

length++;

}

}

컴파일 타임 에러가 난다. length++불가능하다!


처음에 0으로 초기화->&public valuel=초기값으로 영원히


자바에서는 딱 한번만 초기화한다.(constructor)


constructor의 이름은 class이름과 같아야 한다!




'학과 공부 > 컴퓨터프로그래밍2(자바)' 카테고리의 다른 글

4/16  (0) 2018.04.16
4/11  (0) 2018.04.11
4/4  (0) 2018.04.04
4/2  (0) 2018.04.02
3/28  (0) 2018.03.28