[ITWILL : JAVA]Method, 변수와 상수, 배열 Array, new키워드

ITWILL학원 : 4강 JAVA BY 윤미영강사

1. Method

괄호가 있으면 다 메서드라고 부른다
매서드는 항상 Class라는 주인이 있어야 한다.

다른 사람이 만들어 놓은 매서드를 사용할 수 있다. = 라이브러리라고 부른다

예시

  • main() : 메인매서드
  • println() : OutputStream이라는 라이브러리안에 정의되어있는 매서드
  • Scanner sc = new Scanner(System.in) sc.next(); InputStream 라이브러리에 정의되어 있는 next()매서드

2. 변수와 상수

  1. 변수
    변하는 값.
    값을 저장할 수 있는 메모리 위치.
    변수를 사용하기위해서는 항상 변수선언을 데이터타입과 함께 먼저 해줘야한다.

  2. 상수
    변하지 않는 하나의 값
    앞에 final이 붙는다

  • 예시 PI : 3.141592…
  • 사용법 : final double PI = 3.141592;

3. 배열 Array

배열이란 쉽게말해 여러개의 변수를 한꺼번에 선언하는 것이다
변수를 선언한다는 것은 메모리에 a변수가 생성이 된다는 의미이다.
배열에서는 변수갯수를 선언할 수 있다 -> int [] ar = new int[10]는 메모리에 10개의 정수 변수 생성된다는 의미이다

여기서 주의할 점은 ar1의 데이터타입은 int가 아님을 명심하자!
int[]의미는 int를 관리한느 배열타입이지 int타입이 아니다.
ar1의 데이터타입은 기본형에 포함되지않는 참조형의 데이터타입이다.

배열객체를 생성하기 위해서는 new키워드와 함께 어떤 데이터를 몇개나 저장할지에 대한 정보가 필요하다.
그렇다면 new키워드란 무엇일까?
아래 잘 설명한 블로그가 있어서 가져왔다.
참고링크 : 자바 변수들의 메모리 구조,new 키워드

배열변수선언에는 두가지 방법이 있다

3-1. 첫번째 배열선언 방법

배열생성과 배열갯수만 선언하는 방법이다
int [] ar1 = new int[3]로 배열과 배열갯수를 한꺼번에 선언. 초기화는 안됨!

1
2
3
4
5
6
7
8
9
10
11
12
13
int [] ar1;  //배열생성 : 메모리에 a변수 생성

ar1 = new int[3]; //배열갯수선언. 메모리에 3개의 정수 변수 생성. 값을 넣어주지않기때문에 초기화는 아니다

// 1번과 2번을 합쳐서 한줄로 많이 쓴다
int [] ar1 = new int[3]; // 초기화하지 않은 배열은 기본적으로 0의 값을 가진다
ar1[0] = 0;
ar1[1] = 0;
ar1[2] = 0;

for(int i=0; i<ar1.length; i++){
System.out.print(ar1[i]);
} //000

데이터형마다 기본값이 다르다
기본데이터형이 아닌 참조데이터형인 경우 기본값이 다르다

  • 기본데이터형의 기본값은 데이터형에 따라 다르다
    • int 는 0
    • double은 0
    • char는 ‘’(빈칸)
1
2
3
4
char [] chs = new char[2];
for (int i=0; i<chs.length; i++){
System.out.println(chs[i]);
} //00 - 유니코드 -> ''''(빈칸2개)
  • 참조데이터형의 기본값은 null (자바언어의 예약어이고 실제 값이 없다는 의미이다)
    • string은 null
  1. String형
1
2
3
4
String [] str = new String[3];
for (int i=0; i<str.length; i++){
System.out.print(str[i]);
} // nullnullnull
  1. 참조형
    기본적으로 같은 타입을 한 배열에 넣을 수 있다.
1
2
3
4
5
Person[] p = {new Person, new Person};

SpiderMan[] sp = {new SpiderMan, new SpiderMan};

AquaMan[] aq = {new AquaMan, new AquaMan};

타입이 다른 참조형데이터를 하나의 배열에 넣을 순 없을까?
다형성을 이용하면 가능하다.
상속관계인 경우에만 타입이 다른 참조형데이터를 하나의 배열에 묶을 수 있다.

1
2
3
4
5
6
Person[] p = {new Person. new Person}

Dobject d = new Dobject[3];
d[0] = new Line();
d[1] = new Circle();
d[2] = new Reat();

3-2. 두번째 배열선언 방법

배열생성과 초기화를 한꺼번에 선언하는 방법이다

int [] ar2 = {10, 20, 30}

여기서는 new int[5]를 하지않아도 된다 왜냐면 위의 코드 자체에 변수갯수선언이 포함되어있다
이 방법은 테스트용으로 주로 사용할뿐 실무는 new int[]형태로 사용한다

1
2
3
4
5
int [] ar2 = {10, 20, 30}; //배열생성과 초기화 한꺼번에!

for(int j=0; j<ar2.length; j++){
System.out.println(ar2[j]);
}
  1. 위의 두 방법의 차이점
    일반적으로는 new int[]형태를 더 많이 쓰인다
    왜냐하면 보통 다른 파일이나 데이터베이스의 내용을 가져오기 때문에 변수갯수가 정해져있다.
    배열을 사용하려면 항상 크기를 미리 알아야한다.
    만약 배열의 크기를 모른다면 쓸 수 있는 가장 큰 수를 적어주면되지만 대신 메모리를 많이 잡아먹는다.
    그래서 사용하는 것이 Collection(컬렉션)이다
  • Collection 컬렉션 :
    • 참조형데이터형태
    • 배열과 같은 역할을 하지만 크기를 모를때 사용
    • 정적 메모리 할당이 아닌 동적 메모리 할당이 되어서 필요한 만큼 공간을 계속 추가할수있다
    • 컬렉션참고링크