[java] 기초

JunYoung·2023년 2월 13일
0

변수와 타입

값을 저장할 수 있는 메모리의 특정 번지에 붙이는 이름이다. 프로그램은 변수를 통해 메모리의 특정 번지에 값을 저장하고 읽을 수 있다.

변수

변수 선언

변수 선언은 변수에 어떤 타입의 데이터를 저장할 것인지, 변수의 이름이 무엇인지 선언해주어야 한다.

int age;    // 정수(int)를 저장할 수 있는 age 변수 선언
double value;   // 실수(double)를 저장할 수 있는 value 변수 선언

int x;
int y;
int z;

int x, y, z;

타입과 변수 선언의 예시이며, 같은 타입의 변수는 콤마(,)를 이용해서 한꺼번에 선언할 수도 있다.

변수 이름

자바 언어에서 정한 명명 규칙을 따라야 한다.

  1. 첫 번째 글자는 문자이거나 '$', '_'이어야 하고 숫자로 시작할 수 없다.(필수)
  2. 영어 대소문자를 구분한다.(필수)
  3. 첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다.(관례)
  4. 문자 수(길이)의 제한은 없다.
  5. 자바 예약어는 사용할 수 없다.(필수)

변수 사용 범위

변수는 자신이 선언된 위치에서 자신이 속한 플록 내부까지만 사용이 가능하고, 밖에서는 사용할 수 없다.

기본 타입

구분저장되는 값에 따른 분류타입의 종류
정수 타입byte, char, short, int, long
기본 타입실수 타입float, double
논리 타입boolean

자바는 정수, 실수, 논리값을 저장할 수 있는 기본 타입을 제공한다.

정수 타입

정수 타입은 총 5개로 메모리 사용 크기와 저장되는 값의 범위가 서로 다르다.

byte(1byte), short(2byte), char(2byte), int(4byte), long(8byte)이다.

char 타입
하나의 문자를 작은따옴표(' ')로 감싼 것을 문자 리터럴이라고 하며, 유니코드로 변환되어 저장된다.
유니코드는 정수이므로 char도 정수 타입에 속한다.

작은 따옴표(' ')로 감싼 문자는 char 타입 변수에 저장되어 유니코드로 저장되지만, 큰따옴표(" ")로 감싼 문자 또는 여러 개의 문자들은 유니코드로 변환되지 않는다.

자바에서 큰따옴표(" ")로 감싼 문자들은 문자열이라고 부르며, 문자열을 변수에 저장하고 싶을 때는 String 타입을 사용해야 한다.

실수 타입

float var = 3.14;		// 컴파일 에러 발생
float var = 3.14f;
double var2 = 3.14;

실수 리터럴을 float 타입으로 저장하고 싶다면 리터럴 뒤에 소문자 f 또는 대문자 F를 붙여서 float 타입임을 알 수 있도록 해준다.

논리 타입

참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용한다.

boolean stop = true;
boolean state = false;

위와 같이 1byte 크기의 boolean 타입 변수에 저장할 수 있다.

boolean 타입 변수는 주로 두 가지 상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는데 사용한다.

이스케이프 문자

이스케이프 문자출력 용도
\t탭만큼 띄움
\n줄 바꿈
\r캐리지 리턴
\"" 출력
\'' 출력
\\ \ 출력
\u16진수16진수 유니코드에 해당하는 문자 출력

타입 변환

자동 타입 변환

자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생한다.

byte byteValue = 10;
int intValue = byteValue;		// 자동 타입 변환됨

자동 타입 변환의 예시이다.

강제 타입 변환

큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환될 수 없다.

강제 타입 변환은 캐스팅 연산자 괄호()를 사용하는데, 괄호 안에 들어가는 타입은 나누는 단위이다.

int intValue = 10;
byte byteValue = (byte) intValue;		// 강제 타입 변환

double doubleValue = 3.14;
int intValue = (int) doubleValue;		// intValue는 정수 부분인 3만 저장

int 타입 변수는 byte 타입으로 자동 타입 변환되지 않는다. (byte) 캐스팅 연산자를 사용해서 byte 타입으로 강제 변환할 수 있다.

실수 타입(float, double)은 정수 타입(byte, short, int, long)으로 자동 변환되지 않기 때문에 강제 타입 변환을 사용해야 한다. 이 경우에는 소수점 이하 부분은 버려지고, 정수 부분만 저장된다.

문자열을 기본 타입으로 강제 변환

자바에서 문자열을 기본 타입으로 변환하는 방법은 다음과 같다.

변환 타입사용 예
String -> byteString str = "10";
byte value = Byte.parseByte(str);
String -> shortString str = "200";
short value = Short.parseShort(str);
String -> intString str = "3000";
int value = Integer.parseInt(str);
String -> longString str = "4000000";
long value = Long.parseLong(str);
String -> floatString str = "12.345";
float value = Float.parseFloat(str);
String -> doubleString str = "12.345";
double value = Double.parseDouble(str);
String -> booleanString str = "true";
boolean value = Boolean.parseBoolean(str);

배열

배열은 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스(번호)를 부여해놓은 자료구조이다.

인덱스는 0부터 시작한다.

학생 30명의 성적을 저장하고, 평균값을 구한다고 가정한다.

배열을 사용하지 않으면 학생 30명의 성적을 저장하기 위한 변수 30개를 선언하고, 모든 변수들을 더해야 한다.

int score1 = 83;
int score2 = 90;
...
int sum = score1;
sum += score2;
sum += score3;
...
sum += score30;
int avg = sum/30;

위와 같이 코드를 작성하면 효율적이지 못하다. 이때 배열을 사용할 수 있다.

배열 선언

배열을 사용하기 위해서는 배열 변수를 선언해야 한다.
배열 변수 선언은 다음과 같이 두 가지 형식으로 작성할 수 있다.

  • 형식 1
    타입[] 변수;
int[] intArray;
double[] doubleArray;
String[] strArray;
  • 형식 2
    타입 변수[];
int intArray[];
double doubleArray[];
String strArray[];

대괄호 []는 배열 변수를 선언하는 기호로 사용되는데, 타입 뒤에 붙을 수도 있고 변수 뒤에 붙을 수도 있다.

타입은 배열에 저장될 데이터의 타입을 말한다.

  • 값 목록으로 배열 생성
    값의 목록이 있다면 중괄호 {}를 이용하여 간단하게 배열 객체를 생성할 수 있다.

    타입[] 변수 = {값0, 값1, 값2, 값3, ....};

    문자열을 갖는 배열은 큰따옴표(" ")로 감싸주면 된다.

    값의 목록으로 배열 객체를 생성할 때 주의할 점은 배열 변수를 이미 선언한 후에는 다른 실행문에서 중괄호를 사용한 배열 생성이 허용되지 않는다.

타입[] 변수;
변수 = {0,1,2,3, ....};	// <- 컴파일 에러 발생

변수 = new 타입[] {0,1,2,3, ....};

배열 변수를 미리 선언한 후 값 목록들이 나중에 결정되는 상황이라면 new 연산자를 사용해서 값 목록을 지정해주면 된다.
new 연산자 바로 뒤에는 배열 변수 선언에서 사용한 "타입[]"를 붙여주고 중괄호 {}에는 값들을 나열 해준다.

  • new 연산자로 배열 생성
    값의 목록을 가지고 있지 않지만, 향후 값들을 저장할 배열을 미리 만들고 싶을 때 new 연산자로 배열 객체를 생성할 수 있다.

    타입[] 변수 = new 타입[길이]

    길이는 배열이 저장할 수 있는 값의 개수를 말한다.
    new 연산자로 배열을 생성할 경우 배열은 자동적으로 기본값으로 초기화된다.

    배열이 생성되고 나서 배열에 값을 지정하려면 대입 연산자를 사용하면 된다.

    변수[인덱스] = 값;

  • 배열 길이
    배열의 길이는 배열에 저장할 수 있는 전체 항목의 개수를 말한다.

    배열변수.length;

다차원 배열

행과 열로 구성된 배열을 2차원 배열이라고 한다.

예를 들어 2(행) * 3(열) 행렬을 만들기 위해 다음과 같은 코드를 사용한다.

int[][] scores = new int[2][3]
0열1열2열
0행(0, 0)(0, 1)(0, 2)
1행(1, 0)(1, 1)(1, 2)

배열 변수인 scores는 길이가 2인 배열을 참조한다.
scores[0]과 socres[1]은 길이가 3인 배열을 참조한다.

열거 타입

열거 타입은 한정된 값인 열거 상수 중에서 하나의 상수를 저장하는 타입이다.

다음은 월, 화, 수, 목, 금, 토, 일이라는 7개의 값을 갖는 요일 데이터의 열거 타입 Week를 선언한 것이다.

public enum Week{
	MONDAY,				// 열거 상수
    TUESDAY,			// 열거 상수
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}

여기서 Week가 열거 타입이다.

열거 타입 이름은 관례적으로 첫 글자를 대문자로 하고 나머지는 소문자로 구성한다.
만약 여러 단어로 구성된 이름이라면 각 단어의 첫 글자는 대문자로 하는 것이 관례이다.

열거 상수는 타입의 값으로 사용되는데, 관례적으로 모두 대문자로 작성한다.
만약 열거 상수가 여러 단어로 구성될 경우에는 단어 사이를 밑줄(_)로 연결해준다.

  • 열거 타입 변수

    열거 타입도 하나의 타입이므로 변수를 선언하고 사용해야 한다.

    열거 타입 변수를 선언했다면 열거 상수를 저장할 수 있다.
    열거 상수는 단독으로 사용할 수 없기 때문에 반드시 '열거 타입.열거 상수'형태로 사용된다.

    열거타입 변수 = 열거타입.열거상수;

    예를 들어 today 열거 타입 변수에 열거 상수인 SUNDAY를 저장하면 다음과 같다.

    Week today = Week.SUNDAY;

0개의 댓글

관련 채용 정보