Download presentation
Presentation is loading. Please wait.
1
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println("두수의 합은 " + sum + "입니다"); }
2
학습목표 자바 프로그램의 기본 구조를 학습한다. 자바 프로그램 작성 시 발생하는 오류에 대해 알아본다.
자바의 식별자와 변수형에 관해 학습한다. 자바 연산자와 수식에 관해 알아본다. 자바 프로그램에서 많이 사용하는 문자열에 대해 사용법을 알아본다.
3
목차 section 1 자바 프로그램의 예 section 2 프로그래밍 오류 section 3 식별자와 예약어
2-1 구문 오류(Syntax Error) 2-2 실행시간 오류(Runtime Error) 2-3 논리 오류(Logic Error) section 3 식별자와 예약어 section 4 변수와 자료형 4-1 변수(Variable) 4-2 자료형
4
목차 section 5 형변환 section 6 연산자와 수식 section 7 문자열(String) 6-1 산술 연산자
6-2 관계 및 논리 연산자 6-3 비트 연산자 6-4 배정 연산자와 단축 배정 연산자 6-5 3항 연산자 6-6 연산자의 우선순위 section 7 문자열(String)
5
1 자바 프로그램의 예 실습예제 다음 프로그램은 프로그램 실행 시에 두 개의 값을 입력받아 두 수의 합을 구하여 출력하는 프로그램이다. 현재 단계에서는 프로그램의 내용은 이해하지 못해도 되며, 이클립스를 이용하여 실습만 수행하면 된다. SumTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 /* 이 프로그램은 첫 번째 자바 프로그램입니다 프로그램 이름 : SumTest.java 프로그램 작성자 및 작성일시 : 홍길동 2012년 2월 11일 */ public class SumTest { public static void main(String a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두 수를 더하는 부분입니다 System.out.println("두수의 합은 " + sum + "입니다"); } 주석 클래스 정의 main() 메소드 정의 정수형 변수 선언 두 수의 합 출력
6
1 자바 프로그램의 예 프로그램 설명 01~04 : 프로그램 설명을 위한 주석. 주석이 여러 줄일 경우 “/*” 와 “*/” 사이에 기술 05 : 클래스를 정의하는 부분이다. 5장에서 자세하게 설명한다. 자바 프로그램은 클래스의 이름과 같은 이름(대소문자 구분함 : SumTest.java)으로 반드시 저장되어야 한다. 06 : 클래스에서 해야 하는 일을 정의하는 메소드 부분이다. main() 메소드는 클래스에서 첫 번째로 실행되는 메소드이다. main() 메소드의 매개변수는 항상 String(문자열)의 배열로 정의된다. 프로그램 실행 시 입력되는 자료가 배열에 저장된다. 09~10 : 프로그램 실행 시 입력된 매개변수는 문자열이다. 문자열을 정수로 변환하여 정수형 변수에 저장하는 부분이다. 자세한 내용은 객체지향 부분에서 기술한다. 11 : 두 수의 합을 저장한다. 한 라인에서 “//” 표시 이후의 내용은 모두 주석으로 처리한다. 12 : 자바의 출력문이다. 괄호 내에 출력할 내용을 지정한다.
7
1 자바 프로그램의 예 이클립스에서 실행한 프로그램 44 page
8
2-1 구문 오류(Syntax Error) 구문 오류 또는 컴파일(compile) 오류 실습예제 2 프로그래밍 오류
자바 언어를 배울 때 초급 프로그래머가 가장 많이 발생시키는 오류 타이핑 오류, 예약어의 잘못 사용, 닫는 괄호의 생략, 구문 종료 기호(;) 생략, 구문 구조 오류 등으로 인해 발생 자바 컴파일러가 오류의 원인을 찾아 알려줌으로써 쉽게 수정할 수 있음 실습예제 다음은 변수를 선언하지 않았고, 문장의 종료기호를 빼먹고 작성한 프로그램이다. 이 프로그램은 구문 오류를 발생시킨다. SyntaxErrorTest.java 01 02 03 04 05 06 public class SyntaxErrorTest { public static void main(String args[]) { i = 30 ; System.out.println( i ) } 선언되지 않은 변수 사용 선언되지 않은 변수 사용과 문장종료기호 생략
9
2-1 구문 오류(Syntax Error) 프로그램 설명 46 page 2 프로그래밍 오류
03 : 변수 i를 선언하지 않고 사용하였다. 자바에서 변수는 반드시 미리 선언하고 사용하여야 한다. 04 : 선언하지 않은 변수 i값을 사용하였다. 또한 문장의 종료 기호인 “;”을 빠트려 오류가발생하였다. 46 page
10
2-2 실행시간 오류(Runtime Error)
2 프로그래밍 오류 2-2 실행시간 오류(Runtime Error) 실행시간 오류 프로그램의 실행 시 발생하는 오류 프로그램의 비정상적인 종료를 발생시키므로 조심해야 함 실행시간 오류는 숫자를 0으로 나누는 경우나 배열의 첨자 범위를 벗어난 접근, 실행 시 입력 받은 데이터의 오류 등으로 많이 발생 실행 시 사용자로부터 입력 받는 데이터의 형태가 다를 경우 많이 발생
11
2-2 실행시간 오류(Runtime Error)
2 프로그래밍 오류 2-2 실행시간 오류(Runtime Error) 실습예제 다음 프로그램은 정수를 0으로 나누는 실행시간 오류를 발생시킨다. RuntimeErrorTest.java 01 02 03 04 05 06 public class RuntimeErrorTest { public static void main(String args[]) { int i = 3 / 0 ; int j = 5 / 0 ; } 정수를 0으로 나눔 정수를 0으로 나눔 47 page
12
2-2 실행시간 오류(Runtime Error)
2 프로그래밍 오류 2-2 실행시간 오류(Runtime Error) 실습예제 프로그램의 3번 라인의 “3 /0”을 “3 / 1”로 수정한 다음 다시 프로그램을 실행 RuntimeErrorTest.java 01 02 03 04 05 06 public class RuntimeErrorTest { public static void main(String args[]) { int i = 3 / 1 ; int j = 5 / 0 ; } 정수를 1으로 나눔 정수를 0으로 나눔 47 page
13
2-3 논리 오류(Logic Error) 논리 오류 2 프로그래밍 오류
프로그램 작성자의 의도와 다른 결과를 나타내는 경우에 발생 일반적으로 복잡한 프로그램의 경우에서 발생 프로그램의 컴파일이나 실행 시에 나타나지 않음 프로그램 작성자에 의해서 발견되어 수정
14
2-3 논리 오류(Logic Error) 실습예제 2 프로그래밍 오류
다음 프로그램은 논리적 오류가 내재된 프로그램이다. 프로그램 작성자는 두 개의 변숫값을 더하기 위한 프로그램을 작성하였지만, 잘못된 코딩으로 예상치 않은 결과를 출력하였다. 이와 같은 형태의 논리적 오류는 프로그램의 컴파일과 실행 시 명시적으로 나타나지 않게 된다. LogicErrorTest.java 01 02 03 04 05 06 07 08 public class LogicErrorTest { public static void main(String args[]) { int i = 300 ; int j = 500 ; j += i + j ; System.out.println("합계는 = " + j) ; } “j = i + j”를 잘못 기술
15
2 프로그래밍 오류 2-3 논리 오류(Logic Error) 48 page
16
자바에서 식별자 식별자의 사용 원칙 3 식별자와 예약어
변수, 상수, 메소드, 배열, 문자열, 사용자가 정의하는 클래스나 메소드 등을 구분할 수 있는 이름을 의미 식별자의 사용 원칙 식별자는 문자, 숫자, 특수문자(_, $)로 구성될 수 있다. 식별자의 첫 문자는 문자나 특수문자로 시작할 수 있다. 숫자는 사용할 수 없다. 예약어를 식별자로 사용할 수 없다. true, false, null은 식별자로 사용할 수 없다. 식별자는 길이에 제한을 두지 않는다. 같은 문자의 대소문자(Sum과 sum)는 서로 다른 식별자로 취급한다.
17
자바의 예약어 3 식별자와 예약어 abstract const finally interface short transient
assert continue float long static try boolean default for native strictfp* void break do goto new super volatile byte double if package switch while case else implements private synchronized catch enum import protected this char extend instanceof public throw class final int return throws
18
3 식별자와 예약어 실습예제 다음 프로그램은 예약어를 변수로 사용하는 프로그램이다. 예약어를 변수로 사용하는 경우 구문 오류가 발생한다. LogicErrorTest.java 01 02 03 04 05 06 public class ReservedWordTest { public static void main(String args[]) { int if = 20; foat for = 30.0; } 예약어를 변수로 사용
19
3 식별자와 예약어 50 page
20
클래스 이름 메소드, 변수, 배열, 문자열의 이름 상수의 이름 3 식별자와 예약어
JavaTest1, RuntimeErrorTest, 바람직한 형태, 단어의 첫 글자는 대문자로 쓰는 것이 좋다. applicationtest, sampletest 오류는 아니지만 관례에 어긋나고, 가독성이 떨어짐 메소드, 변수, 배열, 문자열의 이름 sum, sumAndSubstract, nameAddress 바람직한 형태, 단어의 첫글자는 소문자로 쓰는 것이 좋다. NameAndAge, Productname 좋지 않은 형태, 클래스 이름과 혼동된다. 상수의 이름 PI, MAX_NUMBER 상수는 모두 대문자로 쓰는 것이 관례이다. max, Max, Address 다른 이름과 혼동된다.
21
4-1 변수(Variable) 변수의 사전적 의미 프로그래밍 언어에서 사용되는 변수 4 변수와 자료형 변화하는 것
“값(value)이 저장된 메모리의 위치에 주어진 이름” 변수에 값을 배정(assignment)할 때 “=”기호를 사용
22
4 변수와 자료형 4-1 변수(Variable) 메모리에 저장된 변수의 값 변화 52 page
23
4-2 자료형 자료형(Data Type) 자바의 자료형 4 변수와 자료형 변수가 가질 수 있는 값의 형태
자바 언어는 다양한 형태의 자료형을 제공 자바의 자료형 기본 자료형(primitive type) 참조 자료형(reference type)
24
4 변수와 자료형 4-2 자료형 기본 자료형과 참조 자료형의 차이 53 page
25
4 변수와 자료형 4-2 자료형 기본 자료형 : 자바에서 제공되는 8개의 기본 자료형은 다음과 같은 형태 54 page
26
4 변수와 자료형 4-2 자료형 정수형 : 4가지의 자료형이 제공 54 page
27
4 변수와 자료형 4-2 자료형 정수의 음수 표현법(2의 보수법) 55 page
28
4 변수와 자료형 4-2 자료형 실습예제 다음 프로그램은 4개의 정수형이 나타낼 수 있는 가장 큰 값을 출력하는 프로그램이다. 각각의 정수형 변수에는 프로그램에서 저장된 값보다 큰 값을 저장하면 구문 오류가 발생한다. NumericTypeTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 public class NumericTypeTest { public static void main(String args[]) { byte a = 127; System.out.println("127을 저장한 byte 값은 " + a); short b = 32767; System.out.println("32767을 저장한 short 값은 : " + b); int c = ; System.out.println(" 을 저장한 int 값은 : " + c); long d = L; System.out.println(" 을 저장한 long 값은 : " + d); } byte형 short형 int형 long형
29
4-2 자료형 프로그램 설명 56 page 4 변수와 자료형
03 : byte형은 양수 27-1(127)까지만 저장이 가능하다. 05 : short형은 양수 까지만 저장이 가능하다. 07 : int형은 양수 까지만 저장이 가능하다. 09 : long형은 양수 까지만 저장이 가능하다. 자바에서 모든 정수형의 묵시적인 형태는 int형(32비트로 표시)이다. 그 이상의 값을 나타내는 정수인 long형의 정수를 나타내기 위해서는 정수 끝에 영문자 대문자 “L”이나 소문자 “l”을 붙여서 사용해야 한다. 일반적으로 소문자 “l”은 숫자 1과 혼동되므로 대문자 “L”을 붙여서 사용한다. 56 page
30
4 변수와 자료형 4-2 자료형 실습예제 지정된 형이 나타낼 수 있는 값의 범위를 벗어난 값을 배정하면 구문 오류를 발생시킨다. 다음 프로그램은 지정된 범위를 초과하여 값을 배정하는 프로그램의 예이다. ByteTestError.java 01 02 03 04 05 06 07 public class ByteTestError { public static void main(String args[]) { byte a = 128; System.out.println("128을 저장한 byte 값은: " + a); } 127까지 저장 가능한 byte형의 변수에 128을 저장. 오류 발생
31
4 변수와 자료형 4-2 자료형 57 page
32
4 변수와 자료형 4-2 자료형 실습예제 지정된 형이 나타낼 수 있는 값의 범위를 벗어난 값을 배정하려면, 다음 프로그램과 같이 강제로 형변환을 시켜주면 된다. 강제로 형변환을 하는 경우 값의 손실이 발생하여 예상하지 못한 결과가 출력된다. ByteTypeTest.java 01 02 03 04 05 06 07 08 09 public class ByteTypeTest { public static void main(String args[]) { byte a = (byte)128; System.out.println("128을 저장한 byte 값은: " + a); byte b = (byte)256; System.out.println("256을 저장한 byte 값은: " + b); } byte형으로 형변환하여 저장 byte형으로 형변환하여 저장
33
4 변수와 자료형 4-2 자료형 58 page
34
4-2 자료형 전 페이지와 같은 결과가 출력된 이유 58 page 4 변수와 자료형
byte 변수에 128과 256을 저장한 결과 58 page
35
4 변수와 자료형 4-2 자료형 실수형 부호와 지수(exponential)부분, 가수(mantissa)부분으로 구성 저장할 수 있는 크기에 따라 float형과 double형으로 구분 묵시적(default) 데이터형은 double형 58 page
36
4 변수와 자료형 4-2 자료형 실습예제 실수형이 나타낼 수 있는 값의 범위를 나타내는 프로그램이다. 자바에서 실수는 묵시적으로 double형으로 나타낸다. NumericTypeTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 public class FloatDoubleTest { public static void main(String args[]) { foat a = f; double b = ; System.out.println("foat 변수 a의 값은 : " + a); System.out.println("double 변수 b의 값은 : " + b); foat c = 1.0f / 3.0f; double d = 1.0 / 3.0; System.out.println("foat 변수 c의 값은 : " + c); System.out.println("double 변수 d의 값은 : " + d); } 실수 값
37
4-2 자료형 프로그램 설명 59 page 4 변수와 자료형
04 : 실수 값을 float형의 변수에 저장할 경우에는 “F” 또는 “f”를 붙인다. 붙이지 않았을 경우에는 오류를 발생한다. 05 : 자바에서 실수는 묵시적으로 double형이므로 끝에 “D” 또는 “d”를 붙이지 않는다. 08~09 : 무한 반복되는 수이지만, float형과 double형의 가수 부분에서 표현 가능한 범위만 저장한다. 59 page
38
4-2 자료형 논리형 4 변수와 자료형 논리형 변수는 참(true) 또는 거짓(false)을 지정하는 변수
프로그램의 흐름을 제어하는 제어변수로 많이 사용 1바이트에 저장
39
4 변수와 자료형 4-2 자료형 실습예제 다음 프로그램은 논리형 변수를 사용하는 프로그램이다. 논리형 변수에 직접 “true” 또는 “false” 값을 저장할 수 있으며, 논리식의 결과도 저장할 수 있다. NumericTypeTest.java 01 02 03 04 05 06 07 08 09 10 11 public class BooleanTypeTest { public static void main(String args[]) { boolean a = true; System.out.println("boolean 변수 a의 값은 : " + a); boolean b = 10 > 20; System.out.println("boolean 변수 b의 값은 : " + b); boolean c = a; System.out.println("boolean 변수 c의 값은 : " + c); } boolean 변수에 값 저장 boolean 변수에 값 저장 boolean 변수에 값 저장
40
4-2 자료형 프로그램 설명 61 page 4 변수와 자료형
04 : boolean 변수에 true 값을 저장한다. 자바는 대소문자를 구분하므로 TRUE를 저장하면 오류가 발생된다. 06 : boolean 변수에 논리식의 결과를 저장한다. 다양한 형태의 논리식의 결과가 저장될 수 있다. 08 : boolean 변수에 boolean 변수의 값을 저장한다. 61 page
41
4-2 자료형 문자형 문자 자료형 char grade1 = 'A';
4 변수와 자료형 4-2 자료형 문자형 하나의 문자를 나타낼 수 있는 char형을 기본 자료형으로 제공 아스키코드(ASCII:8비트) 체계가 아닌 유니코드(Unicode:16비트)를 사용 16비트의 유니코드를 사용함으로써 세계 다양한 나라들의 모든 언어를 나타낼 수 있음 유니코드는 16비트를 사용함으로써 최대 65,536 개의 문자를 나타낼 수 있음 문자 자료형 하나의 문자를 나타내기 위해 사용 문자 자료형 데이터를 나타내기 위해서는 하나의 따옴표(single quotation)를 사용 char grade1 = 'A'; char grade2 = '\u0041'; // 'A'와 같은 의미의 유니코드 char years = '2';
42
4 변수와 자료형 4-2 자료형 문자형과 유니코드(unicode) 61 page
43
4 변수와 자료형 4-2 자료형 실습예제 문자형의 변수에는 직접 하나의 문자를 저장할 수 있다. 16비트 유니코드를 사용함으로써 다양한 국가의 문자들을 사용할 수 있다. NumericTypeTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 public class CharacterTypeTest { public static void main(String args[]) { char ch1 = 'K'; char ch2 = '\u004f'; char ch3 = 'R'; char ch4 = '\u0045'; char ch5 = 'A'; char ch6 = '한'; char ch7 = '국'; System.out.println("출력결과 : "+ch6 + ch7 + "=" + ch1 + ch2 + ch3 + ch4 + ch5); } 문자형 변수에 값 저장
44
4-2 자료형 프로그램 설명 62 page 4 변수와 자료형 04 : 직접 영문자를 문자형 변수에 저장한다.
04 : 직접 영문자를 문자형 변수에 저장한다. 05 : 문자(영문자 O)에 해당하는 유니코드를 문자형 변수에 저장한다. 09 : 한글(‘한’)을 문자형 변수에 저장한다. 62 page
45
4-2 자료형 특수문자 표기방법 유니코드 4 변수와 자료형 특수한 문자를 나타내기 위해 역슬래시(backslash)를 사용
유니코드 표기 Backspace \b \u0008 Tab \t \u0009 Linefeed \n \u000A Formfeed \f \u000C Carriage Return \r \u000D Backslash \\ \u005C Single Quote \' \u0027 Double Quote \" \u0022
46
4 변수와 자료형 4-2 자료형 실습예제 문자형 변수에 특수문자를 지정할 수 있다. 특수문자는 주로 따옴표나 줄 바꾸기, 탭만큼 여백 주기 등에 사용되는 문자이다. CharacterSpecialType.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 public class CharacterSpecialType { public static void main(String args[]) { char ch1 = '\"'; char ch2 = '대'; char ch3 = '한'; char ch4 = '\"'; char ch5 = '\t'; char ch6 = '민'; char ch7 = '국'; char ch8 = '\n'; char ch9 = '만'; char ch10 = '세'; System.out.println("출력결과 :\n" + ch1 + ch2 + ch3 + ch4 + ch5 + ch6 + ch7 + ch8 + ch9 + ch10); } 특수문자 저장 특수문자 저장 특수문자 저장
47
4-2 자료형 프로그램 설명 64 page 4 변수와 자료형 04 : 이중따옴표를 지정하는 특수문자를 변수에 저장
04 : 이중따옴표를 지정하는 특수문자를 변수에 저장 08 : 탭만큼 스페이스를 가진 특수문자를 변수에 저장 11 : 줄 바꿈 특수문자를 변수에 저장 64 page
48
형변환(Casting) 확대 형변환 축소 형변환 5 형변환 특정 자료형의 값을 다른 형태의 변수에 배정할 때 발생
자동으로 이루어지는 확대(widening) 형변환 명시적인 형변환 구문에 의해 이루어지는 축소(narrowing) 형변환 확대 형변환 두 개의 타입이 같거나 치역(traget type)이 정의역(source type)보다 더 넓어 값의 손실이 발생되지 않고 저장 축소 형변환 확대 형변환의 반대의 경우 명시적인 형변환 구문을 사용
49
5 형변환 확대 형변환과 축소 형변환 65 page
50
5 형변환 실습예제 자바 프로그램에서 확대 형변환은 정보의 손실이 발생치 않고, 자동으로 형변환이 이루어진다. 반면에 축소 형변환은 명시적인 형변환 구문을 사용해야 하며 정보의 손실이 발생한다. CastingTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 public class CastingTest1 { public static void main(String args[]) { byte b = 120; int i = b; System.out.println("확대 형변환 : "+i); int j = 259; double d = ; System.out.println("축소 형변환 결과"); b = (byte) j; System.out.println("int 259를 byte로 : " + b); i = (int) d; System.out.println("double 을 int로 : " + i); b = (byte) d; System.out.println("double 을 byte로 : " + b); } byte형의 값을 int형 변수에 저장 int형의 값을 byte형 변수에 저장 double형의 값을 int형 변수에 저장 double형의 값을 byte형 변수에 저장
51
5 형변환 프로그램 설명 04 : byte형의 값을 int형의 변수에 값을 저장하므로 확대 형변환이 일어난다. 확대 형변환은 명시적인 형변환 구문 없이 자동으로 변환될 수 있으며 값의 손실이 발생하지 않는다. 09 : 정수 값 259의 하위 8비트를 byte형 변수에 저장한다. 값의 손실이 발생하기 때문에결과적으로 3이 출력된다. 11 : 의 double형 값을 int형으로 강제 형변환하면, 소수점 아랫부분이 손실되고정수 부분만 저장된다. 13 : 의 double형 값을 byte형으로 강제 형변환하면, 소수점 아랫부분이 손실되고정수 부분만 저장된다. byte형의 경우에는 정수 부분의 하위 8비트에 해당하는 값만저장된다.
52
5 형변환 67 page
53
5 형변환 실습예제 문자형을 int형으로 형변환할 수 있으며, 반대의 경우도 가능하다. 다음은 문자형을 정수형으로 정수형을 문자형으로 변환하는 프로그램의 예이다. CastingTest1.java 01 02 03 04 05 06 07 08 09 10 11 public class CastingTest2 { public static void main(String args[]) { int i = '1' + 10; int j = '1' + 'A'; System.out.println("\'1\' + 10 = " + i); System.out.println("\'1\' + \'A\' = " + j); int k = 66; System.out.println("66은 유니코드 문자로 " + (char)k + " 입니다"); } 문자를 유니코드로 변환하여 저장
54
5 형변환 프로그램 설명 04 : 문자 ‘1’과 정수가 덧셈이 되는 경우, 문자의 유니코드 값(‘\u0031’)에 해당하는 10진수 값이 정수로 변환되어 덧셈이 수행된다. 16진수 ‘0031’은 10진수 49이다. 05 : 문자 ‘1’과 문자 ‘A’가 덧셈이 되는 경우에도 문자의 유니코드 값에 해당하는 10진수값이 더해진다. 09 : 숫자 66을 문자형으로 형변환을 실시하면, 10진수의 유니코드 값(‘\u0042’)에 해당하는 ‘B’가 출력된다. 68 page
55
연산자와 피연산자 연산자와 수식 연산자 +, -, *, /, &&, >> 등등 피연산자
6 연산자와 수식 연산자와 피연산자 연산자와 수식 연산자 +, -, *, /, &&, >> 등등 피연산자 5, 10, a, b ...등등 69 page
56
자바에서 연산자의 사용형태는 크게 3가지로 구분
6 연산자와 수식 자바에서 연산자의 사용형태는 크게 3가지로 구분 일반적으로 사용되는 사용형태는 하나의 연산자에 두 개의 피연산자를 가지는 이항 연산자 피연산자를 하나만 가지는 단항 연산자 3개의 피연산자를 가지는 삼항 연산자 이항 연산자, 단항 연산자, 삼항 연산자
57
6-1 산술 연산자 산술 연산자 연산자 사용법 설명 비고 + op1+op2 op1과 op2를 더한다. 단항 및 이항 -
6 연산자와 수식 6-1 산술 연산자 산술 연산자 연산자 사용법 설명 비고 + op1+op2 op1과 op2를 더한다. 단항 및 이항 - op-op2 op1에서 op2를 뺀다. * op1*op2 op1과 op2를 곱한다. 이항 / op1/op2 op1을 op2로 나눈다. % op1%op2 op1을 op2로 나눈 나머지를 구한다. ++ var++ ++var var 값 1 증가. var 값을 증가시키기 전에 평가 var 값 1 증가. var 값을 증가시킨 다음 평가 단항 - - var— --var var 값 1 감소. var 값을 감소시키기 전에 평가 var 값 1 감소. var 값을 감소시킨 다음 평가
58
6-1 산술 연산자 실습예제 6 연산자와 수식 다음 프로그램은 다양한 산술 연산자를 사용하는 프로그램이다.
CastingTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 public class ArithmeticOPTest1 { public static void main(String args[]) { int a=5, b=2 ; int sum=a+b; System.out.println("a+b=" + sum); int sub=a-b; System.out.println("a-b=" + sub); int mul=a*b; System.out.println("a*b=" + mul); int div=a/b; System.out.println("a/b=" + div); int mod=a%b; System.out.println("a%b=" + mod); int c = ++a; System.out.println("a의 전위증가연산(prefx)="+c); 두 값을 나눈 나머지를 구하는 연산자 단항 연산자
59
6-1 산술 연산자 실습예제 프로그램 설명 6 연산자와 수식 다음 프로그램은 다양한 산술 연산자를 사용하는 프로그램이다.
15, 18 : 단항 연산자(++, - -)는 변수의 왼쪽(prefix) 또는 오른쪽(postfix)에 올 수 있다. 변수의왼쪽에 오는 경우는 연산을 먼저 수행하고 배정문을 수행하는 반면, 오른쪽에 오는 경우는 배정문을 먼저 수행하고 연산을 수행한다. CastingTest1.java 17 18 19 20 21 22 System.out.println("a 변수의 값 : "+a); int d = b++; System.out.println("b의 후위증가연산(postfx)="+d); System.out.println("b 변수의 값 : "+b); } 단항 연산자
60
6 연산자와 수식 6-1 산술 연산자 71 page
61
6 연산자와 수식 6-1 산술 연산자 실습예제 다음 프로그램은 자료형이 나타낼 수 있는 범위를 벗어난 사용 예를 보이는 프로그램이다. 자바 프로그램에서 정수형의 묵시적인(default) 자료형은 int형이다. CastingTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 public class ArithmeticOPTest2 { public static void main(String aa[]) { byte a=127, b = 2; byte c =(byte)(a*b); System.out.println("a*b의 결과를 byte로 변환 출력 : " + c); int d = a * b; System.out.println("a*b의 결과를 int로 출력 : " + d); int i = , j = ; int k = i * j; System.out.println("백만*백만의 결과를 int로 출력 : " + k); long m = (long)(i*j); System.out.println("백만*백만의 결과를 long으로 변환한 후 출력 : " + m); long l = (long)i*(long)j; System.out.println("각각의 백만을 long으로 변환 후 백만*백만의 결과를 출력 : " + l); } 계산을 int형으로 수행, byte형으로 변환 계산을 int형으로 수행, int형 저장 계산을 int형으로 수행, long형으로 변환 변수를 long형으로 전환하여 i*j를 수행
62
6 연산자와 수식 6-1 산술 연산자 프로그램 설명 05 : 자바 프로그램에서 수행되는 모든 정수 연산은 묵시적으로 int형으로 실행한다. a*b 는 int형으로 수행하고, byte형으로 변환하여 저장한다. 계산된 결과 값은 결과가 254가 되어 이미 byte형이 표현할 수 있는 범위를 벗어났다. 하위 8비트만을 표현하여 -2가 출력된다. 10 : 백만 * 백만의 결과가 이미 int형의 표현 범위를 벗어났다. 하위 32비트만을 표현하여 가 출력 12 : i*j는 int형으로 수행된다. int형으로 수행된 결과는 32비트에 저장되므로, 이미 백만*백만의 결과가 int형의 표현 범위를 벗어난 경우이다. 그 결과를 long형으로 변환해도값은 변화되지 않는다. 14 : int형의 변수 i와 j를 long형으로 전환하였다. 이 의미는 32비트에 저장된 i와 j 값을 64비트에 저장한다는 의미이고, 64비트 곱셈 연산을 수행한다. 결론적으로 자바 프로그램에서 정수형의 연산은 묵시적으로 int형으로 수행(32비트 연산)하지만, int형보다 큰long형의 피연산자가가 있을 경우에는 long형으로 연산을 수행(64비트 연산)한다.
63
6 연산자와 수식 6-1 산술 연산자 73 page
64
6-2 관계 및 논리 연산자 관계 연산자 연산자 사용법 설명 > op1 > op2 op1이 op2보다 큰 경우
6 연산자와 수식 6-2 관계 및 논리 연산자 관계 연산자 이항 연산자로서 두 개의 오퍼랜드 값들을 비교하여 결과로 true 또는 false 값을 반환하는 연산자로서 주로 조건문과 반복문의 조건식에 사용 연산자 사용법 설명 > op1 > op2 op1이 op2보다 큰 경우 >= op1 >= op2 op1이 op2보다 크거나 같은 경우 < op1 < op2 op1이 op2보다 작은 경우 <= op1 <= op2 op1이 op2보다 작거나 같은 경우 == op1 == op2 op1과 op2가 같은 경우 != op1 != op2 op1과 op2가 같지 않은 경우 instanceof op1 instanceof op2 op1이 op2의 인스턴스(객체)인 경우
65
6 연산자와 수식 6-2 관계 및 논리 연산자 실습예제 다음 프로그램은 다양한 관계 연산자를 사용하고 있다. 관계 연산자는 두 개의 오퍼랜드를 비교하여 결과로 true 또는 false를 반환한다. RelationalOPTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 public class RelationalOPTest { public static void main(String args[]) { byte a = 20; double d = 3.14; boolean fag; fag = a > d; System.out.println("a가 d보다 큰가? " + fag); fag = a == 20.0f; System.out.println("a가 20.0f와 같은가? " + fag); fag = 10 != 10; System.out.println("10이 10과 같지 않은가? " + fag); fag = 10 <= 20; System.out.println("10이 20보다 작거나 같은가? " + fag); 비교 연산자 사용 비교 연산자 사용 비교 연산자 사용 비교 연산자 사용
66
6 연산자와 수식 6-2 관계 및 논리 연산자 실습예제 다음 프로그램은 다양한 관계 연산자를 사용하고 있다. 관계 연산자는 두 개의 오퍼랜드를 비교하여 결과로 true 또는 false를 반환한다. RelationalOPTest.java 15 16 17 18 19 20 System.out.println("10이 20보다 작은가? " + (10 < 20)); System.out.println("10이 20보다 크거나 같은가? " + (10 >= 20)); } 출력문에서 직접 관계 연산식 사용
67
6-2 관계 및 논리 연산자 프로그램 설명 6 연산자와 수식
07 : a(byte)가 d(double)보다 큰가(a>d)를 비교한다. 관계 연산식에서 두 오퍼랜드의 형이 다를 경우 큰 범위의 형으로 자동 형변환되어 비교된다. 09 : a(byte)와 20.0f(float)이 같은가(==)를 비교한다. 관계 연산식에서 두 오퍼랜드의 형이 다를 경우 큰 범위의 형으로 자동 형변환되어 비교된다. 11 : 두 값이 같지 않은가(!=)를 비교한다. 13 : 작거나 같은가(<=)를 비교한다. 15~20 : 출력문에 직접 관계 연산식을 사용하여 결과를 출력할 수 있다. 이 경우 관계 연산식은 반드시 괄호로 묶어서 표현해야 한다.
68
6 연산자와 수식 6-2 관계 및 논리 연산자 75 page
69
6-2 관계 및 논리 연산자 논리 연산자 논리 연산자 &&, || 연산 결과 x y x || y x && y TRUE
6 연산자와 수식 6-2 관계 및 논리 연산자 논리 연산자 오퍼랜드(operand)의 값을 평가하여 결과로 true 또는 false 값을 반환 오퍼랜드는 반드시 이진값 또는 이진값을 결과로 하는 수식 자바 언어에서는 &&(논리곱)과 ||(논리합), !(not) 논리 연산자를 제공 논리 연산자 &&, || 연산 결과 x y x || y x && y TRUE FALSE
70
6-2 관계 및 논리 연산자 논리 연산자 ! 연산결과 논리 연산자 &&, || 연산자 x !x TRUE FALSE
6 연산자와 수식 6-2 관계 및 논리 연산자 논리 연산자 ! 연산결과 논리 연산자 &&, || 연산자 효율성을 기하기 위해 첫 번째 오퍼랜드를 평가한 결과 두 번째 오퍼랜드를 평가할 필요가 없을 경우, 바로 결과를 반환 x !x TRUE FALSE
71
6 연산자와 수식 6-2 관계 및 논리 연산자 실습예제 논리 연산자의 오퍼랜드는 반드시 true 또는 false 값을 나타내야 한다. LogicalOPTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 `public class LogicalOPTest { public static void main(String args[]) { boolean a; a = (20 > 10) || (30 > 40); System.out.println("20이 10보다 크거나 또는(논리합 ||) 30이 40보다 큰가? " + a); a = (20 > 10) && (30 > 40); System.out.println("20이 10보다 크고 그리고(논리곱 &&) a = ! true; System.out.println("ture의 !(not)은? " + a); 30이 40보다 큰가? " + ((20 > 10) || (30 > 40))); 30이 40보다 큰가? " + ((20 > 10) && (30 > 40))); System.out.println("ture의 !(not)은? " + (! true)); } 논리합 연산 수행 논리곱 연산 수행 논리부정 연산 수행 출력문에서 직접 관계 연산식 사용
72
6-2 관계 및 논리 연산자 프로그램 설명 78 page 6 연산자와 수식
05 : 두 오퍼랜드 값으로 논리합(||) 연산을 수행한다. 일반적으로 논리 연산자의 오퍼랜드내에는 관계 연산식이 오게 되는데 괄호로 묶어 주는 것이 바람직하다. 07 : 두 오퍼랜드 값으로 논리곱(&&) 연산을 수행한다. 일반적으로 논리 연산자의 오퍼랜드 내에는 관계 연산식이 오게 되는데 괄호로 묶어 주는 것이 바람직하다. 09 : true의 논리부정(!) 연산 수행을 수행한다. 13~17 : 출력문 내에 직접 논리 연산식을 사용할 수 있다. 78 page
73
6-3 비트 연산자 비트(bit) 연산자 연산자 사용법 설명 >> op1 >> op2
6 연산자와 수식 6-3 비트 연산자 비트(bit) 연산자 비트 단위로 연산할 수 있는 연산자 비트 단위의 연산은 정수형의 데이터에만 적용이 가능 연산자 사용법 설명 >> op1 >> op2 op1을 op2만큼 오른쪽으로 시프트(shift) << op1 << op2 op1을 op2만큼 왼쪽으로 시프트 >>> op1 >>> op2 op1을 op2만큼 오른쪽으로 시프트 하면서 왼쪽에는 항상 부호에 무관하게 0이 채워짐. & op1 & op2 비트 단위의 논리곱(&) | op1 | op2 비트 단위의 논리합(OR) ^ op1 ^ op2 비트 단위의 배타적 논리합(XOR) ~ ~op 비트 단위의 보수
74
6 연산자와 수식 6-3 비트 연산자 비트 연산자의 논리표 A B A|B A&B A^B ~A 1
75
6-3 비트 연산자 실습예제 6 연산자와 수식 비트 연산자는 비트 단위의 연산을 수행한다.
RelationalOPTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 public”class BitOPTest1 { public static void main(String args[]) { int a = 3; int b = 5; int c = a | b; int d = a & b; int e = a ^ b; System.out.println(" a = " + a); System.out.println(" b = " + b); System.out.println(" a|b = " + c); System.out.println(" a&b = " + d); System.out.println(" a^b = " + e); } 비트 단위의 논리합(|) 비트 단위의 논리곱(&) 비트 단위의 배타적 논리합(^)
76
6-3 비트 연산자 프로그램 설명 80 page 6 연산자와 수식 04 : 변수에 저장된 정수의 비트는 0011(3)이다.
04 : 변수에 저장된 정수의 비트는 0011(3)이다. 05 : 변수에 저장된 정수의 비트는 0101(5)이다. 06 : 비트 단위” 논리합(|) 연산을 한다. 결과는 0111(7)이다. 07 : 비트 단위의 논리곱(&) 연산을 한다. 결과는 00”1(1)이다. 08 : 비트 단위의 배타적 논리합(^) 연산을 한다. 결과는 0110이다. 80 page
77
6-3 비트 연산자 시프트 연산자 숫자 << 자릿수 : 숫자 * 2자릿수(왼쪽에는 항상 0으로 채워짐)
6 연산자와 수식 6-3 비트 연산자 시프트 연산자 비트 단위로 이동(왼쪽 또는 오른쪽)하는 연산자 정수형의 변수에만 사용이 가능 정수에 해당하는 비트 값을 좌,우로 이동시키면 곱셈 또는 나눗셈의 결과를 얻을 수 있음 숫자 << 자릿수 : 숫자 * 2자릿수(왼쪽에는 항상 0으로 채워짐) 숫자 >> 자릿수 : 숫자 / 2자릿수(오른쪽에는 부호 비트로 채워짐) 숫자 >>> 자릿수 : 숫자 / 2자릿수(오른쪽에는 부호 비트와 상관없이 0으로 채워짐)
78
6-3 비트 연산자 실습예제 6 연산자와 수식 다음은 비트 단위로 시프트를 수행하는 프로그램의 예이다.
BitOPTest2.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 public class BitOPTest2 { public static void main(String args[]) { int a = 4; int b = a << 2; int c = a >> 2; int d = -4; int e = d << 2; int f = d >> 2; int g = d >>> 2; System.out.println(" a = " + a); System.out.println(" a<<2 = " + b); System.out.println(" a>>2 = " + c); System.out.println(" d<<2 = " + e); System.out.println(" d>>2 = " + f); System.out.println(" d>>>2 = " + g); } 왼쪽으로 2비트 시프트 오른쪽으로 2비트 시프트 왼쪽으로 2비트 시프트 오른쪽으로 2비트 시프트 오른쪽으로 2비트 시프트(왼쪽에는 0으로 채워짐)
79
6 연산자와 수식 6-3 비트 연산자 프로그램 설명 04 : 정수 4는 비트 값으로 00..생략..0100(4)이다. : 32비트로 표현 05 : 정수 4를 왼쪽으로 2비트 시프트 한다. 시프트 연산은 왼쪽으로 시프트 하는 경우, 왼쪽에는 항상 0으로 채워진다. 00..생략 (16) 06 : 정수 4를 오른쪽으로 2비트 시프트 한다. 오른쪽으로 시프트 하는 경우 오른쪽에는 부호 비트와 같은 값으로 채워지게 된다. 00..생략..0001(1) 07 : 정수 -4는 비트 값으로 생략..1100(-4)이다. 08 : 정수 -4를 왼쪽으로 2비트 시프트 한다. 시프트 연산은 왼쪽으로 시프트 하는 경우, 왼쪽에는 항상 0으로 채워진다 생략 09 : 정수 -4를 오른쪽으로 2비트 시프트 한다. 오른쪽으로 시프트 하는 경우 오른쪽에는부호 비트와 같은 값으로 채워지게 된다 생략..1111 10 : 정수 -4를 오른쪽으로 2비트 시프트 한다. 왼쪽에는 0으로 채워진다. >>> 시프트 연산자를 수행할 때 오른쪽에는 부호 비트와 상관없이 0으로 채워진다. 음수에 이 연산자를 적용하면 결과를 예측하기 힘들다 생략..1111
80
6 연산자와 수식 6-3 비트 연산자 81 page
81
6 연산자와 수식 6-4 배정 연산자와 단축 배정 연산자 배정 연산자로 “=”을 제공 82 page
82
6-4 배정 연산자와 단축 배정 연산자 단축 배정 연산자 i = i + 8 => i += 8 82 page
6 연산자와 수식 6-4 배정 연산자와 단축 배정 연산자 단축 배정 연산자 i = i => i += 8 82 page
83
6-4 배정 연산자와 단축 배정 연산자 단축 배정 연산자 연산자 사용법 의미 += op1 += op2
6 연산자와 수식 6-4 배정 연산자와 단축 배정 연산자 단축 배정 연산자 연산자 사용법 의미 += op1 += op2 op1 = op1 + op2 -= op1 -= op2 op1 = op1 - op2 *= op1 *= op2 op1 = op1 * op2 /= op1 /= op2 op1 = op1 / op2 %= op1 %= op2 op1 = op1 % op2 &= op1 &= op2 op1 = op1 & op2 |= op1 |= op2 op1 = op1 | op2 ^= op1 ^= op2 op1 = op1 ^ op2 <<= op1 <<= op2 op1 = op1 << op2 >>= op1 >>= op2 op1 = op1 >> op2 >>>= op1 >>>= “p2 op1 = op1 >>> op2
84
6-4 배정 연산자와 단축 배정 연산자 실습예제 6 연산자와 수식
다음 프로그램은 배정 연산자와 단축 배정 연산자를 사용하는 예이다. AssignOPTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 public class AssignOPTest { public static void main(String args[]) { int a = 10; System.out.println("a = " + a); a += 4; System.out.println("a += 4의 결과 " + a); a -= 4; System.out.println("a -= 4의 결과 " + a); a *= 4; System.out.println("a *= 4의 결과 " + a); a /= 4; System.out.println("a /= 4의 결과 " + a); a %= 4; System.out.println("a %= 4의 결과 " + a); } 단축 배정 연산자 사용 단축 배정 연산자 사용 단축 배정 연산자 사용 단축 배정 연산자 사용 단축 배정 연산자 사용
85
6-4 배정 연산자와 단축 배정 연산자 프로그램 설명 84 page 6 연산자와 수식
06 : 변수 a에 저장된 값에 숫자 4를 더하기 연산 후 그 값을 a에 저장한다. 08 : 변수 a에 저장된 값에 숫자 4를 빼기 연산 후 그 값을 a에 저장한다. 10 : 변수 a에 저장된 값에 숫자 4를 곱하기 연산 후 그 값을 a에 저장한다. 12 : 변수 a에 저장된 값에 숫자 4를 나누기 연산 후 그 값을 a에 저장한다. 14 : 변수 a에 저장된 값을 숫자 4로 나머지 연산 후 그 값을 a에 저장한다. 84 page
86
6-5 3항 연산자 자바는 3개의 오퍼랜드를 가진 3항 연산자“?:”를 제공
6 연산자와 수식 6-5 3항 연산자 자바는 3개의 오퍼랜드를 가진 3항 연산자“?:”를 제공 3항 연산자는 우선 수식1을 평가하여 true인지 false인지를 판별하여 true이면 수식2가 평가되고, false이면 수식3이 평가되어 그 결과가 수식1의 결과로 반환 수식1 ? 수식2 : 수식3 형식 flag = count > 0 ? 0 : 1;
87
6-5 3항 연산자 실습예제 프로그램 설명 6 연산자와 수식 숫자가 짝수인지 홀수인지를 구분하는 프로그램
07 : 변수 i 값을 2로 나눈 나머지가 0이면 j에 true를 그렇지 않으면 false를 배정 한다. TernaryOPTest.java 01 02 03 04 05 06 07 08 09 10 public class TernaryOPTest { public static void main(String args[]) { int i=7; boolean j; System.out.println(i +"이 짝수입니까?"); j = (i % 2 == 0) ? true : false; System.out.println(j); } 3항 연산자의 사용
88
6 연산자와 수식 6-5 3항 연산자 86 page
89
>> >>> <<
6 연산자와 수식 6-6 연산자의 우선순위 연산자의 우선순위 우선순위 연산자 1 () [] . 2 ~ ! 3 * / % 4 + - 5 >> >>> << 6 > >= < <= 7 = = != 8 & 9 ^ 10 | 11 && 12 || 13 ?: 14 =
90
6 연산자와 수식 6-6 연산자의 우선순위 연산자의 우선순위 ( * 2 / 2 )의 우선순위 87 page
91
6 연산자와 수식 6-6 연산자의 우선순위 연산자의 우선순위 ( * 8 % (4 -2) * 3 ) 88 page
92
a + b - c (우선순위가 같을 때 사칙연산의 경우는 왼쪽부터 계산)
6 연산자와 수식 6-6 연산자의 우선순위 연산자의 우선순위 a + b - c (우선순위가 같을 때 사칙연산의 경우는 왼쪽부터 계산)
93
a = b = c = 1 (우선순위가 같을 때 배정 연산은 오른쪽부터 계산)
6 연산자와 수식 6-6 연산자의 우선순위 연산자의 우선순위 a = b = c = 1 (우선순위가 같을 때 배정 연산은 오른쪽부터 계산)
94
6-6 연산자의 우선순위 문자열 문자열을 선언하는 예 String str1 = "아! 대한민국";
기본 자료형으로 제공되고 있지 않음 자바의 문자열은 String 클래스로 구현 문자열을 선언하는 예 String str1 = "아! 대한민국"; String str2 = "Korea"; String str3; String str4 = new String("Korea"); String str5 = str2 + str1;
95
6-6 연산자의 우선순위 실습예제 7 문자열(String) 다음 프로그램은 문자열을 사용하는 예이다.
StringTest.java 01 02 03 04 05 06 07 08 09 10 11 12 public class StringTest { public static void main(String args[]) { String str1 = "아! 대한민국 "; String str2 = new String("Korea"); System.out.println(str1 + str2); int a = 1000; int b = 2000; System.out.println(str1 + a + b + "리 금수강산 "); System.out.println(str1 + (a + b) + "리 금수강산 "); } 문자열 변수에 값 저장 문자열 출력 정수가 문자열로 변환되어 출력
96
6-6 연산자의 우선순위 프로그램 설명 90 page 7 문자열(String)
05 : 문자열 변수 str2에 객체지향 방법인 new 연산자를 사용해서 “Korea”를 저장한다. 06 : 문자열 변수 str1과 str2를 연결하여 출력한다. 09 : 출력문 내에서 문자열과 일반 정수 값을 가진 변수와의 덧셈은 연결(concatenation) 된다는 의미이다. 정수는 문자열로 자동 형변환이 되어 출력된다. 10 : 출력문 내에서 괄호를 사용하여 정수 연산을 수행한 다음 문자열과 연결하는 연산을 수행한다. 괄호를 사용하여 정수 덧셈을 수행할 수 있다. 90 page
97
학습정리 자바의 기본 구조를 배우기 위한 전형적인 자바 프로그램 자바 프로그램의 오류 식별자와 예약어
자바 프로그램의 주석은 “/*”와 “*/” 사이에 기술한다. 한 라인에 기술하는 주석은 “//” 기호를 사용한다. 자바 프로그램 실행 시 매개변수로 값을 입력받아 프로그램에서 처리할 수 있다. 매개변수로 입력된 값은 문자열의 배열로 저장된다. 자바 프로그램의 오류 자바 프로그램에서 발생할 수 있는 오류는 컴파일 시에 발생하는 구문(syntax) 오류, 실행 시 발생하는 실행시간(Runtime) 오류, 프로그램 작성 시 논리적 문제로 발생하는 논리(Logic) 오류 등으로 분류된다. 식별자와 예약어 자바에는 50개의 예약어가 있으며, 예약어는 식별자로 사용할 수 없다. 자바는 대소문자를 구분한다.
98
학습정리 변수와 자료형 변수는 값이 저장된 메모리의 위치에 주어진 이름이다. 자바는 8개의 기본 자료형을 가진다.
99
학습정리 연산자 문자열 산술 연산자 +, -, *, /, %, + +, - - 관계 및 논리 연산자
자바는 다음과 같은 연산자를 가진다. 문자열 자바의 문자열은 String 클래스의 객체로 표현되지만, 일반 변수처럼 사용이 가능하다. 산술 연산자 +, -, *, /, %, + +, - - 관계 및 논리 연산자 >, >=, <, <=, ==, !=, instanceof, &&, ||, ! 비트 연산자 >>, <<, >>>, &, |, ^, ~ 단축 배정 연산자 +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, >>>= 3항 연산자 ? :
100
1장. 컴퓨터와 프로그램 그리고 자바 수고하셨습니다. 질문 있습니까?
Similar presentations