for문을 중첩하여 사용할 때 for문을 식별하기 위한 이름을 붙일 수 있다. 

중첩된 for문에 이름을 설정하면 break문을 사용하여 특정 for문을 종료시킬 수 있다.

public class BreakTest {
	public static void main(String[] args) {
    	
        outer: for (int i = 1; i <= 5; i++) {
        	for(int j = 1; j <= 5; j++) {
            	if(j>i) {
                	break outer;
                }
                System.out.print('#');
            }
            System.out.println();
        }
    }
}

 

728x90

'Language > JAVA' 카테고리의 다른 글

[JAVA] 참조 변수와 null  (0) 2023.10.18
[JAVA] 배열  (0) 2023.10.18
[JAVA] 데이터 타입 변환  (0) 2023.10.18
[JAVA] 연산자  (1) 2023.10.17
[JAVA] 데이터 타입  (1) 2023.10.17

자바는 두 가지 형태의 데이터 타입 변환을 지원한다.

1. 묵시적 타입 변환

2. 명시적 타입 변환

 

묵시적 타입 변환

묵지거 타입 변환(promotion)을 자동 변환이라고 하며, 말 그대로 별다른 조치 없이 자동으로 타입이 변환되는 것을 의미한다.

이런 묵시적 변환은 작은 크기의 데이터가 큰 크기의 타입으로 변환되는 경우에 한해 제공한다. 즉, 묵시적 타입 변환은 데이터의 크기와 관련되어 있다.

public class PromotionTest {
	public static void main(String[] args) {
    	int inAvg = 87;
        
        double doubleAvg = intAvg;
        System.out.println("double로 변환된 평균값 : " + doubleAvg); // 87.0
    }
}

 

실행 결과에서 확인할 수 있듯이 int 타입의 intAvg 값이 실수 타입인 doubleAvg 변수에 할당되는 순간 정수 87이 실수 87.0으로 변환되었다. 즉 데이터 타입이 int에서 double로 변환된 것이ㅏㄷ.

 

명시적 타입 변환

명시적 타입 변환(casting)은 묵시적 타입 변환의 반대이다. 즉 큰 크기의 데이터를 작은 타입의 데이터로 변환하는 것이다. 

데이터가 훼손돼도 프로그램을 처리하는 데 지장이 없다면 타입 변환을 통해 필요한 만큼의 데이터만 사용할 수도 있다.

 

public class CastingTest {
	public static void main(String[] args) {
    	double doubleAvg = 87.24;
        int intAvg = (int) doubleAvg;
        
        System.out.println(intAvg); // 87
    }
}

 

위 소스는 8byte의 값을 4byte의 변수에 할당한다. 이때 명시적 타입 변환을 통해 소수점 이하의 데이터를 잘라내고 있다. 따라서 intAvg 변수에 할당된 값은 double이 아닌 int로 변환된 87이다.

 

 

728x90

'Language > JAVA' 카테고리의 다른 글

[JAVA] 배열  (0) 2023.10.18
[JAVA] 이름이 있는 break  (0) 2023.10.18
[JAVA] 연산자  (1) 2023.10.17
[JAVA] 데이터 타입  (1) 2023.10.17
[JAVA] 자바 변수  (0) 2023.10.17

산술 연산자

사칙연산에 해당하는 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 연산자가 있으며, 나머지(%)연산자가 추가로 제공된다.

자바에서는 변수에 값을 할당할 때 연산자인 '=' 연산자를 사용하는데, 산술 연산에서는 코드의 양을 줄일 목적으로 복합 할당 연산자를 것을 사용하기도 한다.

score1 += score2; // score1 = score1 + score2;
score1 -= score2; // score1 = score1 - score2;
score1 *= score2; // score1 = score1 * score2;
score1 /= score2; // score1 = score1 / score2;
score1 %= score2; // score1 = score1 % score2;

 

증감 연산자

증감 연산자는 정수 타입의 변수 앞이나 뒤에 붙어서 변수의 값을 1 증가시키거나 1감소시킬 때 사용한다. 증감 연산자가 변수 앞에 있으면 전위 연산자, 뒤에 있으면 후위 연산자라고 한다. 둘다 변수 값을 1 증가 시키거나 감소시킨다는 점은 같지만 '언제' 증가/감소 시키는지 차이가 있다.

 

증가 연산자

public class OperatorTest {
	public static void main(String[] args) {
    	int score = 10;
        System.out.println('score값: ' + score); // 10
        ++score; 
        System.out.println('score값: ' + score); // 11
        score++;
        System.out.println('score값: ' + score); // 12
    }
}

 

public class OperatorTest {
	public static void main(String[] args) {
    	int score = 10;
        System.out.println('score값: ' + ++score); // 11
        System.out.println('score값: ' + score++); // 11
        System.out.println('score값: ' + score); // 12
    }
}

전위 연산자는 값을 먼저 증가 시킨 후 변수의 값을 사용하고, 후위연산자는 변수의 값을 사용하고 난 후 값을 증가 시킨다. 그렇기 때문에 위와 같은 결과를 확인할 수 있다.

 

감소 연산자

public class OperatorTest {
	public static void main(String[] args) {
    	int score = 10;
        System.out.println('score값: ' + --score); // 9
        System.out.println('score값: ' + score--); // 9
        System.out.println('score값: ' + score); // 8
    }
}

 

비교 연산자

비교 연산자는 특정 조건의 결과가 참(true)인지, 거짓(false)인지 판단할 때 사용한다. 비교 연산자의 종류와 의미는 다음과 같다.

연산자 사용 예 의미
> score > avg score가 avg보다 크다
>= score >= avg score가 avg보다 크거나 같다
< score < avg score가 avg보다 작다
<= score <= avg score가 avg보다 작거나 같다
== score == avg score가 avg와 같다
!= score != avg score가 avg와 다르다

 

논리 연산자

논리 연산자는 두 개 이상의 비교 연산 결과를 연결할 때 사용한다. 논리 연산자는 크게 AND 와 OR가 있다.

 

AND 연산자

AND(&) 연산은 연산자를 중김으로 양쪽의 조건이 모두 참일 때, 전체 결과를 참으로 처리한다.

char gender = 'M';
int score = 87;

System.out.println(gender == 'M' & score >= 80); // true

& 연산자 하나만 사용하면 양쪽코드를 모두 실행하지만 && 연산자를 사용하면 앞에 있는 코드가 false인 경우 뒤에 코드를 실행하지 않는다. 그렇기 떄문에 && 연산 속도가 더 빠르다.

&& 연산자를 사용하면 프로그램의 연산 처리 속도를 향상시킬 수 있다.

 

OR 연산자

OR( | ) 연산은 AND(&)연산과 달리 양쪽의 조건 중에 하나만 참(true) 이면 전체 연산 결과를 참으로 처리한다.

OR 연산도 AND 연산과 마찬가지로 '|' 연산자를 연속으로 두 개 사용하면 연산 처리 속도를 빠르게 할 수 있다.

 

조건 연산자

조건 연산자는 특정 조건이 참( true)인지, 거짓(false)인지에 따라 결과값이 달라지는 연산자로서, 삼항 연산자로고도 한다.

// 조건식 ? 값1 : 값2
조건식: 실행 결과가 true나 flase의 결과가 나오는 연산식
값1: 조건식 결과가 true일 때 처리되는 값
값2: 조건식 결과가 false일 때 처리되는 값

 

728x90

'Language > JAVA' 카테고리의 다른 글

[JAVA] 이름이 있는 break  (0) 2023.10.18
[JAVA] 데이터 타입 변환  (0) 2023.10.18
[JAVA] 데이터 타입  (1) 2023.10.17
[JAVA] 자바 변수  (0) 2023.10.17
[JAVA] 자바 클래스의 기본 구조  (0) 2023.10.17

기본 데이터 타입

자바의 기본 데이터 타입은 8가지가 있다.

데이터 타입 데이터 타입 크기
논리 타입 boolean 1byte(8 bit) boolean isPassed = true;
문자 타입 char 2byte(16 bit) char grade ='A';
정수 타입 byte 1byte(8 bit) byte year = 3;
short 2byte(16 bit) short javaScore = 17;
int 4byte(32bit) int sumScore = 120045;
long 8byte(64bit) long currentTime = 123456789L;
실수 타입 float 4byte(32bit) floag javaAvg = 78.25F;
double 8byte(64bit) double examAvg = 76.234522;

 

얼핏 보면 데이터의 종류도 많고 복잡해 보이지만 정수 타입은 int와 loing만 사용하고, 실수 타입은 double만 사용하기 때문에 실제로 그렇게 복잡하지 않다.

 

논리 타입

논리 타입은 booean이라고 쓰고 '불리언' 이라고 읽는다. 논리 타입은 기본 타입 중 유일하게 1byte 메모리 공간만 사용한다. 중요한 것은 논리 타입의 변수가 1 이나 0이 아닌, 참 또는 거짓이라는 의미의 true나 false형태의 값을 가진다는 것이다. 참고로 논리 타입의 변수 이름은 'is'로 시작하는 것이 일반적이다.

 

boolean isPassed = true;
boolean isPassed = TRUE; // 에러
boolean isPassed = False; // 에러

 

문자 타입

문자 타입은 'char'라고 쓰고 '캐랙터'라고 읽는다. 문자 타입은 2byte의 메모리 공간을 사용하는 데이터 타입이며, 한 글자만을 값으로 가지는 변수를 선언할 때 사용한다. 

자바에서 하나의 문자는 작은따옴표(')로 감싸서 표현한다. 다음은 한 글자를 저장하는 문자 타입의 변수를 선언하고 초기화하는 문구이다.

char grade = 'A';

문자 타입과 많이 혼동하는 것이 문자열 (String)인데, 문자열은 말 그대로 여러 개의 문자가 이어 붙어서 열거된 형태의 데이터를 의미한다. 문자열은 작은따옴표가 아닌 큰따옴표(")를 사용하며, 한 글자만 표현하는 문자(char) 타입과 전혀 다른 데이터 타입이다.

따라서 다음의 두 변수는 똑같이 A라는 한 글자를 할당했지만 전혀 다른 타이브이 변수로 처리된다.

char grade = 'A'; // 문자 타입
String classNumber = "A"; // 문자열 타입

다음 코드는 문자 타입의 변수에 전혀 다른 종류의 타입인 문자열을 할당하려고 했기 때문에 에러가 발생한다.

char grade = "B";

 

변수와 예약어

자바에서 예약어는 특별한 목적을 위해 미리 정의해 놓은 단어를 의미한다. JVM은 소스 코드를 처리하는 과정에서 예약어를 만나면 예약어에 해당하는 약속된 기능을 수행한다. 예를 들어 정수 타입의 데이터를 의미하는 int라는 예약어를 만나면 JVM은 정수를 저장하기 위해 32bit 메모리 공간을 확보하는 식이다. 그렇기 때문에 변수 이름으로 예약어를 사용할 수 없는 것이다.

 

 

728x90

'Language > JAVA' 카테고리의 다른 글

[JAVA] 이름이 있는 break  (0) 2023.10.18
[JAVA] 데이터 타입 변환  (0) 2023.10.18
[JAVA] 연산자  (1) 2023.10.17
[JAVA] 자바 변수  (0) 2023.10.17
[JAVA] 자바 클래스의 기본 구조  (0) 2023.10.17

+ Recent posts