24
JAVA Programming Language JAVA Programming Language Syntax of JAVA ©2000 Hyun Hoon Cho 2 JAVA Programming Language 내용 ? 리터럴(literal) ? 변수와 데이터 타입(Variable and data types) ? 주석문(Comments) ? 산술식(Arithmetic) ? 비교문(Comparisons) ? 연산자(Operators)

JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

JAVA Programming Language

JAVA ProgrammingLanguage

Syntax of JAVA

©200

0 H

yun

Hoo

n Ch

o

2JAVA Programming Language

내용? 리터럴(literal)? 변수와 데이터 타입(Variable and data types)? 주석문(Comments)? 산술식(Arithmetic)? 비교문(Comparisons)? 연산자(Operators)

Page 2: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

3JAVA Programming Language

HelloWorld application? Helloworld.java // 화일명

class HelloWorld { // HelloWorld라는 클래스 정의

//attribute//methodspublic static void main ( String args [ ] ) {

/* public은 함수의 액세스 퍼미션

void는 함수의 리턴타입main은 함수이름, 프로그램의 시작 함수String args[ ]는 main 함수의 아규먼트. 스트링 배열 */

String msg = “ hello world! ”System.out.print(“ hello, world! ”);System.out.println(msg);

// System클래스의 out멤버필드의 print라는 메소드//

}}

©200

0 H

yun

Hoo

n Ch

o

4JAVA Programming Language

HiJava applet? HiJava.java // 화일명

import java.awt.Graphics; // import는 c 언어의 #include에 해당한다.

import java.applet.Applet; // java. awt.Graphics라는 클래스로 java.awt라는패키지내에 있는 클래스이다 .

public class HiJava extends java.applet.Applet {/* java.applet.Applet이라는 클래스에서 extends

받아서 즉 상속을 받아 HiJava라는 클래스를 만든다 .*/

public void paint(Graphics g) //paint라는 메소드를 만들고

{

g.drawString(“Hi, my friend Java.”, 5, 25);//애플릿에서는 drawString을 이용 x,y좌표에 문자열을 그린다

}

}

? ***.html // 화일명

<applet code = HiJava.class width=250 height=250 >

Page 3: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

5JAVA Programming Language

class 와 object? Class

? 객체의 타입 즉 비슷한 특성을 가진 객체들의 집합을 위한 일반적인 template이다.

? Object? attribute + operation(속성 + 행위) ? 클래스의 인스턴스

? 프로그램안의 클래스를 직접 조작할 수 없고, 해당 클래스의 객체를 만들고, 수정하고그 객체를 통하여 메소드를 호출한다.

©200

0 H

yun

Hoo

n Ch

o

6JAVA Programming Language

class 와 object? 사용 예제

class Motorcycle { //화일명 Motorcycle.java

String make; // attributeString color;boolean engineState;

public Motorcycle( ){ . . . } // constructvoid startEngine( ) { . . . } // methodsvoid showAtts( ) {. . . }

public static void main (String args [ ] ) { Motorcycle m = new Motorcycle( ); // Motorcycle클래스의 새로운 인스턴스를 new를

// 사용하여 만들고 변수 m 에 그 참조를 할당한다 .m.make = "Yamaha RZ350"; // m에 새로운 인스탄스 변수들을 지정한다 .m.color = "yellow";System.out.println("Calling showAtts...");m.showAtts( ); // class의 메소드를 호출하여 m의 속성을 나타낸다.

System.out.println("--------");System.out.println("Starting engine...");m.startEngine( );}

}

Page 4: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

7JAVA Programming Language

식별자(identifier)? 식별자(identifier)

? 클래스 이름, 메소드 이름, 변수 이름 등에 사용된다. 자바 식별자는 길이에 제한이 없고, 자바 문자로 시작하는자바 문자와 자바 숫자의 연속이다.

? 식별자는 키워드와 동일한 명은 사용할 수 없고,_, $등으로 시작할 수 있고, 대소문자를 구별한다.

? 유효? HelloWorld, heyDude3, tail, pounda

? 무효? Hello World // ‘ ‘, ‘/t’, ‘/n’등은 올 수 없다. ? 3heyDude // 숫자로 시작할 수 없다.? short // 예약어는 식별자로 사용할 수 없다.? #pounda // #로 시작할 수 없다.

©200

0 H

yun

Hoo

n Ch

o

8JAVA Programming Language

예약어? 종류

abstract default if private throwboolean do implements protected throwsbreak double import public transientbyte else instanceof return trycase extends int short voidcatch final interface static volatilechar finally long super whileclass float native switchconst for new synchronizedcontinue goto package this

? 예약어는 변수명으로 사용할 수 없다.

Page 5: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

9JAVA Programming Language

상수 (literal)? 상수

? 숫자, 텍스트 등 값을 직접 나타내는 단순 식별자? 값이 변하지 않고 사용되는 프로그램의 요소들.? 상수는 숫자, 문자 혹은 문자열등이 될 수 있다.

? 숫자 상수? 정수형 상수 : 8,10,16진수의 형태로 사용.

12=10진수 12 =16진수 0xC (숫자 앞에 0x을 붙여 표기) = 8진수 014 (숫자 앞에 0을 붙여 표기)

32bit int64bit long ( l ): long pennyTottal = 4L;

? 실수형 상수 : 소수점이하의 수를 가진 상수.모든 부동 소수점 리터럴은 float가 아닌 double로 인식32bit float ( f ):float piValue = 3.1415927f;64bit double: double myGPA = 2.25;

©200

0 H

yun

Hoo

n Ch

o

10JAVA Programming Language

상수 (literal)? 부울형 (boolean) 상수

? true혹은 false값을 가지는 상수.boolean toThineOwnSelf = true;? ㈜ Java는 C언어처럼 1을 true, 0을 false로 하지 않

고, true는 true로 false는 false로 간주한다.

? 문자 상수? 문자상수는 하나의 유니코드 문자로 되어 있

고 따옴표 안에서 사용된다.? 문자 하나로 표현

? (예) ‘a’, ‘#’, ‘3’

Page 6: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

11JAVA Programming Language

상수 (literal)? 문자들의 이스케이프 코드

? 문자열 상수는 여러 개의 문자의 집합체를 의미하고다른 상수와는 달리 String class로 표현된다(String은primitive type이 아니다). ? String password=“Lucifer”;

? 자바에서 지원하지 않는 c언어의 자료 유형? 포인터 , struct / union

\n 새 줄 시작 \f 폼피드 \d 8진수

\t 탭 \\ 역슬래쉬 \xd 16진수

\b 백스페이스 \’작은 따옴표 \ud 유니코드 문자

\r 그 줄의 맨 앞으로 \” 큰 따옴표

©200

0 H

yun

Hoo

n Ch

o

12JAVA Programming Language

변수(Variable)? 변수

? 프로그램이 실행될 동안 저장될 수 있는 정보(=값)을 담는 대상

? 프로그램 내에서 계속적으로 변경 가능

? 변수의 종류? 클래스 변수? 인스턴스 변수? 지역 변수

? 변수의 선언? 문자, ‘_’, ‘$’로 시작가능

int highScore;String userName;boolean gameOver;

int zipcode = 90210;String name = “randon”;boolean cheatedOnKelly = true;int age = 28, height = 70, weight = 140;

Page 7: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

13JAVA Programming Language

분리자(separators)? 분리자

? 분리자는 자바 컴파일러가 코드를 어떻게 그룹화 할 것인지를 알 수 있도록 해준다.

? 자바에 의해 지원되는 분리자는 다음과 같다.? { } ; : ,

©200

0 H

yun

Hoo

n Ch

o

14JAVA Programming Language

주석문(Comments)? 전통적 주석문

? /* 주석문 내용 */? 주석문의 내용이 여러 줄이어도 가능

? 단일줄 주석문? // 주석문 내용

? 도큐먼트 주석문? /** 주석문 내용 */? Javadoc 프로그램을 이용해 HTML형식의 문서

화일을 생성

Page 8: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

15JAVA Programming Language

도큐먼트 주석문의 예/**

* A TicTacToe applet. A very simple, and mostly brain-dead

* implementation of your favorite game! <p>

*

* In this game a position is represented by a white and black

* bitmask. A bit is set if a position is ocupied. There are

* 9 squares so there are 1<<9 possible positions for each

* side. An array of 1<<9 booleans is created, it marks

* all the winning positions.

*

* @version 1.2, 13 Oct 1995

* @author Arthur van Hoff

* @modified 04/23/96 Jim Hagen : winning sounds

* @modified 02/10/98 Mike McCloskey : added destroy()

*/

©200

0 H

yun

Hoo

n Ch

o

16JAVA Programming Language

Javadoc 실행과 결과물

Page 9: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

17JAVA Programming Language

Javadoc에 의해 생성된 html파일

©200

0 H

yun

Hoo

n Ch

o

18JAVA Programming Language

데이터 타입(Data types)? 변수 타입

? 기본 타입(primitive types) 과 참조형(reference type) 중 하나

기본형(Primitive type)부울형수치형

정수형 : byte, short, int, char부동 소수점형(실수형) : float, double

참조형(reference type)클래스형, 인터페이스형, 배열형

Page 10: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

19JAVA Programming Language

데이터 타입(Data types)? 기본형(원시타입)Primitivetype

Size Minimum Maximum Defaultvalue

boolean 1-bit 없 음 - 없 음 - Falsechar 16-bit Unicode 0 Unicode 2 16-1 ‘\u0000 ’

(null)byte 8-bit -128 + 1 2 7 (byte)0short 16-bit -32,768 +32,767 (short)0int 32-bit -2,147,483,648 2,147,483,647 0long 64-bit -2 63 263-1 0Lfloat 32-bit IEEE754 IEEE754 0.0fdouble 64-bit IEEE754 IEEE754 0.0dvoid - - -

1 In Java version 1.1 only, not in 1.0

©200

0 H

yun

Hoo

n Ch

o

20JAVA Programming Language

참조형(reference type)? 참조형 (reference type)

? C의 포인터와 같은 기능을 수행? 기본자료타입은 변수를 선언하면 메모리에 공

간이 할당되나 참조형은 new 를 이용하여 객체를 생성하기 전까지는 메모리 공간이 할당되지 않는다.

Page 11: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

21JAVA Programming Language

참조형(reference type)class Car{ . . .}public static void main( ){1 int a = 100 ;2 Car mycar, yourcar;3 mycar = new Car();4 yourcar = mycar;

}1 int a = 100;

변수 a 에 대한 메모리 공간이 할당되고, 값으로 100이 들어간다.2 Car mycar, yourcar;

Car 타입의 레퍼런스를 위한 공간이 할당된다.3 mycar = new Car();

힙 영역에서 Car 클래스를 위한 공간이 할당되고, 주소 값(300)이 mycar라는변수의 값으로 들어간다.

4 yourcar =mycar;yourcar라는 변수에 mycar의 값(300)을 넣었다. 따라서, yourcar와 mycar는동일한 장소를 포인트하고있다.

©200

0 H

yun

Hoo

n Ch

o

22JAVA Programming Language

배열(array)? 배열

? 배열은 같은 타입의 변수리스트를 위한 저장공간을 제공하는 구조이다.

? Simple or composite data types.? 일차원, 다차원 배열의 선언

int number[ ] ;char [ ] letters ;int grid [ ] [ ] ;

? 배열의 크기char alphabet [ ] = new char [26]int primes = {7,11,13}

Page 12: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

23JAVA Programming Language

Array? 같은 자료형의 연속된 표현

? 기억장소가 연속적으로 할당됨? Java에서는 선언된 배열의 크기를 넘는 배열의

참조를 허용하지 않음.? 에러(예외상황 : exception) 발생

? 배열 변수 선언String difficultWords[ ];

Point hits[ ];

int donations[ ];

String[ ] difficultWords;

Point[ ] hits;

int[ ] donations;

©200

0 H

yun

Hoo

n Ch

o

24JAVA Programming Language

Array? 배열 객체 생성

? 배열을 선언한 후에 new 연산자를 사용하여 객체를생성하여야만 사용 가능하다.

? [형식 1] 타입[ ] 배열명 = new 타입[배열의 크기 값];? [형식 2] 타입 배열명[ ] = new 타입[배열의 크기 값];

? (예) String[ ] playerNames = new String[10];? (예) int temp[ ] = new int[99];

? 배열 객체의 초기화? 숫자 : 0? boolean : false? 문자 : ‘\0’? 객체 : NULL

배열형 배열명 = 배열 성분 표현식(예)

int[ ] arrayOfInts = ; // compile errorint[ ] simple = {0, 1, 2, 3, 4};int simple[ ] = {0, 1, 2, 3, 4};

첨자(index)는0부터 시작

Page 13: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

25JAVA Programming Language

Array? 배열은 기본 자료형 뿐만 아니라 클래스의 객체도 포

함할 수 있다.? 자바에서의 객체의 배열은 그 객체에 대한 레퍼런스

의 할당이다.? 배열의 슬롯에 값을 할당할때, 그 객체에 대한 레퍼런

스가 생성된다

? 값을 다른곳으로 옮기면 레퍼런스를 재할당 할 뿐이다.? 원시형의 값은 복사된다

? 배열의 크기? 배열명.length 를 이용

? length? 모든 배열 객체는 length라는 인스턴스 변수를 가지고 있다.? 배열의 원소 수 (배열이 가질 수 있는 단위 공간)를 담고 있다.

String[] Speak = new String[10];

int len = Speak.length;

len = 10배열 첨자의 크기 = length - 1

©200

0 H

yun

Hoo

n Ch

o

26JAVA Programming Language

Array? 다차원 배열

new int[3][3][2]

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

0 1 2

0 1 2 0 1 2 0 1 2

int[ ][ ] coords = new int[12][12];coords[0][0] = 1;coords[0][1] = 2;

Page 14: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

27JAVA Programming Language

표현식과 연산자(Operator)? 산술연산자(Arithmetic operator)

? *, /(DIV), %(MOD), +(add), -(subtract)

? 논리연산자(Logical operator)? &&(AND), ||(OR), !(NOT)

? 관계연산자(Relational operator)? <, <=, ==, !=, >, >=? instanceof(참조형) - Boolean값을 리턴

? 어떤 변수가 인스턴스변수 이다 - true 리턴? 어떤 변수가 인스턴스변수 아니다 - false 리턴

©200

0 H

yun

Hoo

n Ch

o

28JAVA Programming Language

연산자(Operator)? 단항연산자(Unary operator)

? +(plus), -(minus), ++(increase), --(decrease)? ~(비트 보수)

? 비트연산자(Bit operator)? &(AND), |(OR), ^(XOR), ~(NOT)

? 조건연산자(Conditional operator)? ? :

? (조건문) ? 참(true)일 때 수행될 문장 : 거짓(false)일때 수행될 문장

int a= 7, b = 10;

int c = ((a * 2) < (a + b)) ? a : b;

c에는 a의 값인7이 저장된다 .

Page 15: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

29JAVA Programming Language

연산자(Operator)public class AutoInc {public static void main(String args[]) {int i = 1;prt("i : " + i);prt("++i : " + ++i); // Pre-incrementprt("i++ : " + i++); // Post-incrementprt("i : " + i);prt("--i : " + --i); // Pre-decrementprt("i-- : " + i--); // Post-decrementprt("i : " + i);

}static void prt(String s) {System.out.println(s);

}} ///:~

Output

i : 1++i : 2i++ : 2i : 3--i : 2i-- : 2i : 1

? + 연산자는 연산자의 좌,우항에 문자열(String)이 존재하면 문자열로 연결(concatenate)한다.

©200

0 H

yun

Hoo

n Ch

o

30JAVA Programming Language

연산자(Operator)? 이동연산자(Shift operator)

? << (왼쪽으로 이동)? n << s : n에 2s를 곱한 것(n*2s)과 같다.? 항상 0으로 채운다

? >> (오른쪽으로 이동)? n >> s : n을 2s로 나눈 것(n/2s)과 같다.? 부호의 확장이 일어난다.

? >>> (부호 없는 오른쪽 이동)? n >>> s ?n이 양수인 경우 : n >> s와 같다.?n이 음수인 경우 : n값의 비트열 앞에 s자리 만큼의 값을

0으로 바꾼다.

Page 16: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

31JAVA Programming Language

연산자(Operator)? 캐스트연산자(Cast operator)

? 캐스팅이란 값이나 객체를 원래의 형에서 다른 형으로 전환해주는 것을 말한다.

(Storage type)변수 또는 수치값

int a = 23;. . .System.out.println (“Casting test”);long b = (long) ( a * 2323);. . .

©200

0 H

yun

Hoo

n Ch

o

32JAVA Programming Language

타입캐스팅(typecasting)? 타입캐스팅

? 하나의 데이터 형을 다른 타입으로 변환하는과정을 캐스팅이라 한다

? 정보 손실이 없는 캐스팅방법

변경전 타입 변경후 타입

ByteShortCharIntLongFloat

Short, char, int, long, float, doubleint, long, float, doubleint, long, float, doublelong, float, doublefloat, doubledouble

Page 17: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

33JAVA Programming Language

타입캐스팅(typecasting)? 형 변환은 자동적으로 발생할 수도 있고 , 프로그래머가 명시적으

로 형 변환을 지정할 수도 있다 . 자동적인 형 변환은 할당문(=), 함수 호출 , 문자열로 형 변환 , 프로모션(promotion)에서 발생할 수있다 .

? 문자열로 형 변환은 다른 자료형이 문자열과 '+' 연산을 하는 경우에 문자열로 형 변환이 일어나는 것을 말한다 (concatenate). 다음은 int 타입의 j가 문자열로 변환되는 대표적인 예이다 .

예:int j = 10;System.out.println("j = " + j);

? 프로모션은 숫자 자료형이 다른 오퍼랜드에 따라 더 큰 타입으로형 변환이 자동적으로 일어나는 것을 말한다. 다음은 프로모션이발생하는 대표적인 예이다 . 예에서 정수 j의 5는 플로팅포인트형16.0과 덧셈을 수행하기 위해 5.0으로 형 변환이 이루어진다 .

예:int j = 5;double f = 16.0 + j;

©200

0 H

yun

Hoo

n Ch

o

34JAVA Programming Language

타입캐스팅(typecasting)예제: CastOne.java

1 class CastOne {2 public static void main(String args[]) {3 byte byte1 = 10;4 short short1 ;5 char char1 = 10;6 int int1 ;7 float float1 ;8 long long1 ;9 double double1 ;1011 short1 = byte1; // byte(8 bits) => short(16 bits)12 int1 = short1; // short(16 bits) => int(32 bits)13 int1 = char1; // char(16 bits) => int(32 bits)14 long1 = int1; // int(32 bits) => long(64 bits)15 float1 = int1; // int(32 bits) => float(32 bits)16 double1 = long1; // long(64 bits) => double(64 bits)17 }18 }

Page 18: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

35JAVA Programming Language

연산자(Operator)? 연산자 우선 순위

. [] ()++ -- ! ~ instanceofnew (type)expression* / %+ -<< >> >>>< > <= >=== !=&^|&&||? := += -= *= /= %= ^=&= |= <<= >>= >>>=

우선 순위 높음

우선 순위 낮음

증가 연산과 감소 연산

산술 연산

비교

논리 연산

대입 수식

©200

0 H

yun

Hoo

n Ch

o

36JAVA Programming Language

연산자(Operator)? 정수 연산자

? 단일 연산자(+(plus), -(minus), ++(increase), --(decrease)~(비트 보수)).

? 이진 연산자(+, --, * , / , % , & , | , ^ , <<,>>,>>>).

? 관계 연산자(< , > , <=, >=, ==, !=).? 실수 연산자

? 단일 연산자(++, -- --,).? 이진 연산자(+, --, * , / , % ).? 관계 연산자(< , > , <=, >=, ==, !=).

? 부울 연산자? 부울연산자는 부울 타입에 적용되어 결과 값으로 부울

형을 리턴한다.(&, | , ^ , &&, ||, ! , ==, !=,?|)? 문자열 연산자

? 연결 연산자(+)

Page 19: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

37JAVA Programming Language

연산자(Operator)? 대입연산자(Assignment operator)

? =, +=, -=, *=, /=, %=? <<=, >>=, >>>=? &=, ^=, |=

©200

0 H

yun

Hoo

n Ch

o

38JAVA Programming Language

연산자(Operator)? ==과 equals( )

== 연산자는 두 변수의 값이 같은가를 물어보는데 반해 equals( ) 메소드는 객체의 내용이 같은가를 물어본다. == 연산자는 기본 자료형이나 레퍼런스에 사용될 수 있지만, equals( ) 메소드는 레퍼런스 타입에서만 사용할 수 있다.

public class Equivalence {public static void main(String args[]) {Integer n1 = new Integer(47);Integer n2 = new Integer(47);

System.out.println(n1 == n2);System.out.println(n1 != n2);

}}

Output

falsetrue

‘==‘, ‘!=‘연산자는객체의 값을비교하는 것이 아니라객체의핸들을 비교한다.

Page 20: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

39JAVA Programming Language

연산자(Operator)

public class EqualsMethod {public static void main(String args[]) {Integer n1 = new Integer(47);Integer n2 = new Integer(47);System.out.println(n1.equals(n2));

}} ///:~

Output

true equals()는 객체의 핸들을비교하는 것이 아니라 객체의실제 값을 비교한다.

©200

0 H

yun

Hoo

n Ch

o

40JAVA Programming Language

? 예제: Equal.java1 public class Equal {2 public static void main(String args[]) {3 String a = new String("abc");4 String b = "abc";5 String c = b;6 String d = a;7 StringBuffere = newStringBuffer("abc");8 StringBufferg = e;9 if(a == b) {

10 System.out.println("a==b");}11 // if(a == e) { // 컴파일 에러12 // System.out.println("a==e"); }13 if(c == b) {14 System.out.println("c==b"); }15 if(d.equals(a)) {16 System.out.println("d.equals(a)");}17 if(d.equals(b)) {18 System.out.println(”d.equals(b)");}19 if(b.equals(e)) {

System.out.println("b.equals(e)");}}}

결과 % java Equalc==bd.equals(a)d.equals(b)

Page 21: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

41JAVA Programming Language

산술 연산자? 사용 예제

class ArithmeticTest {public static void main(String args[ ]) {

System.out.println("4+2 : " + (4+2));System.out.println("4.5-2 : " + (4.5-2));System.out.println("4.4*2.2 : " + (4.4*2.2));System.out.println("4.6/3 : " + (4.6/3));System.out.println("4.6%3 : " + (4.6%3));System.out.println("4.6%3.1 : " + (4.6%3.1));

}} C:\>java ArithmeticTest

4+2 : 64.5-2 : 2.54.4*2.2 : 9.6800000000000014.6/3 : 1.53333333333333324.6%3 : 1.59999999999999964.6%3.1 : 1.4999999999999996

©200

0 H

yun

Hoo

n Ch

o

42JAVA Programming Language

논리 연산자? 사용 예제

class LogicalTest {public static void main(String args[ ]) {

int x, y, z;boolean t;

x = y = z = 1;t = ((++x != 0) || (++y != 0) || (++z != 0));System.out.println("x=" + x + ", y=" + y + ", z=" + z + ", t=" + t);t = ((++x != 0) | (++y != 0) | (++z != 0));System.out.println("x=" + x + ", y=" + y + ", z=" + z + ", t=" + t);

x = y = z = -1;t = ((++x != 0) && (++y != 0) && (++z != 0));System.out.println("x=" + x + ", y=" + y + ", z=" + z + ", t=" + t);t = ((++x != 0) & (++y != 0) & (++z != 0));System.out.println("x=" + x + ", y=" + y + ", z=" + z + ", t=" + t);

}}

C:\>java LogicalTestx=2, y=1, z=1, t=true x=3, y=2, z=2, t=true x=0, y=-1, z=-1, t=false x=1, y=0, z=0, t=false

Page 22: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

43JAVA Programming Language

증감 연산자? 사용 예제

class IncDecTest {public static void main(String args[ ]) {

int i=23, j=8, k;

k = ++i + j--;System.out.println("i=" + i + ", j=" + j +", k=" + k);k = i-- + --j;System.out.println("i=" + i + ", j=" + j +", k=" + k);System.out.println("i=" + ++i + ", j=" + j-- +

", i=" + --i + ", j=" + --j);}

} C:\>java IncDecTesti=24, j=7, k=32 i=23, j=6, k=30 i=24, j=6, i=23, j=4

©200

0 H

yun

Hoo

n Ch

o

44JAVA Programming Language

관계 연산자? 사용 예제

class RelationalTest {public static void main(String args[ ]) {

int a=3, b=4;boolean c;

c = a < b;System.out.println("a=" + a + ", b=" + b + ", c=" + c);

}}

C:\>java RalationalTesta=3, b=4, c=true

Page 23: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

45JAVA Programming Language

비트 연산자? 사용 예제

class BitwiseTest {public static void main(String args[ ]) {

byte x=(byte)0x0a, y=(byte)0x48, z=(byte)0xcc;

System.out.println(" x | y & z = " + (byte)(x | y & z));System.out.println(" x | y & ~z = " + (byte)(x | y & ~z));System.out.println(" x ^ y & ~z = " + (byte)(x ^ y & ~z));

x = (byte)1;y = (byte)-1;

System.out.println(" ~x | x = " + (byte)(~x | x));System.out.println(" x ^ x = " + (byte)( x ^ x));

System.out.println(" x << 3 = " + (byte)(x << 3));System.out.println(" x >> 3 = " + (byte)(x >> 3));System.out.println(" x >>> 3 = " + (byte)(x >>> 3));System.out.println(" y << 3 = " + (byte)(y << 3));System.out.println(" y >> 3 = " + (byte)(y >> 3));System.out.println(" y >>> 3 = " + (byte)(y >>> 3));

}}

©200

0 H

yun

Hoo

n Ch

o

46JAVA Programming Language

대입 연산자? 사용 예제

class AssignmentTest {public static void main(String args[ ]) {

int x=2, y=5, z=0;

x += 3 + 2;System.out.println("x=" + x + ", y=" + y + ", z=" + z);

x += y -= z = 4;System.out.println("x=" + x + ", y=" + y + ", z=" + z);

}}

C:\>java AssignmentTestx=7, y=5, z=0 x=8, y=1, z=4

Page 24: JAVA Programming Languagewebdav.gnunix.co.kr/Lecture/정보과학대학원 JAVA...2000 Hyun Hoon Cho JAVA Programming Language 9 상수(literal) 상수? 숫자, 텍스트등값을직접나타내는단순식별자

©200

0 H

yun

Hoo

n Ch

o

47JAVA Programming Language

조건 연산자? 사용 예제

class ConditionalTest {public static void main(String args[ ]) {

int a=23, b=12, max, min;

min = (a < b) ? a : b;System.out.println("min="+ min + ", a=" + a + ", b=" + b);

max = (a > b) ? a : b;System.out.println("max=" + max + ", a=" + a + ", b="+ b);

}}

C:\>java ConditionalTestmin=12, a=23, b=12 max=23, a=23, b=12

©200

0 H

yun

Hoo

n Ch

o

48JAVA Programming Language

연산자 우선순위? 사용 예제

class OperatorTest {public static void main(String args[ ]) {

int a=10, b=10;float f = (float)3.141592;

System.out.println("a=" + a + ", f=" + f + ", b=" + b);a = (int)f-- * --b;System.out.println("a=" + a + ", f=" + f + ", b=" + b);

}}

C:\>java OperatorTesta=10, f=3.141592, b=10 a=27, f=2.141592, b=9