본문 바로가기

프로그래밍 언어/Java

[Java 2일차] 배열

1. 배열 변수 선언(어떤 타입이고, 어떤 변수명으로 할지)

- 데이터타입 [] 배열 변수명;

- 데이터 타입 배열 변수명[...];

ex) int array[]; 또는 int[] array; //선언만 하므로 개수는 들어가지 않음

 

 

2. 배열 변수 생성(memory에 할당)

- array = new int[3]; // 앞에 선언된 array 타입과 생성할 타입이 같아야 한다.

- new :memory에 int data 3개를 저장할 array를 만들것이다.

- int 형은 초기값 0

- index는 0이상, array.length 미만

-String names[] = new String[5]; //로 선언과 동시에 생성이 가능하다.

 

 

3. 배열 변수 초기화

-array[0] = 100; array[1] = 3; 

-String names[] = { "김씨" , "이씨", "최씨", "박씨", "유씨"}; //배열 선언 + 생성 + 초기화 

 

 

4. 예제

- Java는 max값이 없다. => for문으로 구해야 함

- main옆 args는 사용자가 입력하는 변수를 저장하는 것. 내가 입력하는 dat의 개수에 따라 사이즈가 달라진다. 

- java ArrayTest -- >(자동) args = new String[0]

   ex) java ArrayTest.java 프로그래밍 과목 테스트 -->(자동) args = new String[4];

        args[0] = "java",args[0] = "java",args[1] = "프로그래밍",args[2] = "과목",args[3] = "테스트"

 

-> run 메뉴 -> run config~ -> main class가 같은지 확인 후 arguments 들어가서 입력변수 넣기

 

 

 

5. + 연산

1) 정수/ 실수 + 정수/실수 => 덧셈

2) 문자열 + 정수/실수 or 문자열 => 문자 연결합

3) args는 string 값으로 입력받으므로, 만약 int형으로 바꾸려면 Integer패키지의 parseInt라이브러리로 int 형으로 데이터를 바꾼다.

 

package second;

public class MainTest {

	public static void main(String[] args) {
		System.out.println(args[0] + args[1]); //출력값 :1020
		int first = Integer.parseInt(args[0]); // 첫번째 입력값을 int 형으로 바꿈
		int second = Integer.parseInt(args[1]); // 첫번째 입력값을 int 형으로 바꿈
		System.out.println(first + second ); // 출력값:30
	} 

}

 

6. 객체 지향 방식

- 객체 : object, 현실 세계에서 표현할 수 있는 모든 명사 

1) 객체의 특성을 파악하기

2)  클래스 생성하기 

    - 정적인 특성은 변수로, 동적인 특성은 메소드로 저장

 

[modifier]

class 이름

[extends 클래스명][implements 인터페이스명] {

  [modifier] 데이터 타입 변수명 = 값;

  [modifier] 메소드명 = 동적

  [modifier] 생성자명 = ();

}

 

 

7. Modifier(접근자, 제한자, 한정자)

- 해당 요소를 활용 방법이나 접근 제한을 나타내는 java keyword

 

역할 modifier 클래스 변수 메소드 생성자
접근 제한 public O O O O
protected X O O O
private X O O O
활용 방법 static X O O X
final O O O X
abstract O X O X

 

 

8. 데이터 타입

기본 데이터 타입 참조 데이터 타입
char 
boolean
int,byte,short,long
double,float
 => 8가지
String : 문자열(길이를 정할 수 없음)
배열 
내가 정의한 클래스
자바에서 미리 정의한 타입들 / 길이도 정해짐 
stack 영역에 저장하는 값이 실제값 
stack 영역에 저장하는 값이 주소값(실제 data는 heap에 있음)

 

- 자바 프로그래밍에서 변수값을 메모리에 저장하는 법

클래스 영역
(= 메소드 영역)
stack(순서가 있다. 기본 타입 변수를 저장) heap(참조형 데이터 저장, 길이를 예측할 수 없는 것들)
메소드나 문장을 저장하는 영역 변수를 저장하는 영역 변수를 저장하는 영역
   s(4byte) : 100(주소 값) -> 200(주소값)
 i(4byte) : 10 -> 20
 d(8byte) " 3.14 -> 4.14
100번지 : java
200번지 : Spring

ex)  int i = 10;  --> stack에 i 4byte 저장

     String s = "java"; --> stack에 4byte "주소 값"저장

     double d = 3.14;  --> stack에 8 byte 저장

      i = i + i; 

     d = d +1;

     s = "Spring"; 

 

 

<< 정리 >>

-> 참조 데이터: heap영역에 데이터를 저장.

    기본 데이터: stack영역에 저장

-> 사용하지 않은 메모리 영역을 자동으로 삭제 => 'garbage collection'

-> 메모리 영역에 데이터를 저장할 주소도 자동으로 지정해줌  

->stack은 모든 변수를 저장한다. 하지만 기본 데이터의 경우 stack에 "실제 값"이 들어가는 것이고, 참조 데이터는 stack에 "주소값"이 들어간다.

'프로그래밍 언어 > Java' 카테고리의 다른 글

[Java 4일차] 생성자  (0) 2020.07.22
[Java 1일차]Java 기본 & 설치  (0) 2020.07.17