'Java'에 해당되는 글 9건

  1. 2011.10.06 Java - 자바 연산자 ( 연산자우선순위 )
  2. 2011.10.05 Java - 자바 기본 입력 (1)
  3. 2011.10.04 Java - 자바 기본 출력
  4. 2011.08.08 Java - 자동 형변환과 강제 형변환
  5. 2011.08.08 Java - 상수, 변수, 자료형

Java - 자바 연산자 ( 연산자우선순위 )

Java 2011.10.06 19:22

연산자라는 것은 어떤 대상체에 대해 계산같은 처리를 수행하도록 하는 특수한 문자 기호라는 것은 아실거라 생각합니다.
그 연산자가 여러가지 이지만 그 중에서도 먼저 처리하도록 하는 우선순위가 존재합니다.

연산자 우선순위

1 - 최우선연산자 : . [ ] ( )
2 - 단항연산자 : ! ~ +/- ++/-- (cast)
3 - 산술연산자 : + - * / %
4 - 시프트연산자 : << >> >>>
5 - 관계연산자 : > < <== >== == !=
6 - 비트연산자 : & ^ |
7 - 논리연산자 : && ||
8 - 삼항연산자 : 조건항 ? 항1 : 항2
9 - 배정대입연산자 : = += -= *= /= %= <<= >>= ^= &= |=
10 - 후위형증감연산자 : ++/--
11 - 순차연산자 : ,

이러한 우선순위에 따라서 여러가지 연산자가 사용됬을 경우 프로그램처리를 처리하게 됩니다.
그러면 연산자에 대해 살펴보겠습니다.


(1) 최우선연산자

최우선 연산자는 수학 연산을 할 때 쓰는 괄호의 역할을 한다. [] 가 () 보다 먼저 실행된다
온점은 dot operator 라고 불리며 보통 상위 디렉토리를 나타내는 연산자이다
괄호 안의 내용부터 먼저 계산하게 하는 역할을 한다


(2) 단항연산자

피연산자오직 하나 필요한 연산자이다
! 은 논리값을 부정한다. 즉 true는 false로 바꾸고 false는 true로 바꾸는 역할을한다
~ 은 비트 부정 연산자이다
비트 부정 연산자가 연산을 할 때에는 피연산자를 int형으로 변화시키고
작업이 이루어진다
long 형을 제외한 모든 정수형 변수들을 int형으로 맞춘 후 0은 1로,
1은 0으로 값을 바꾸는
역할을 한다. 정 반대의 값을 취하게 할 경우 사용한다
일반적으로 (원래값)*-1 -1 의 값으로 변환된다 (데이터의 손실이 없을 경우)

+/- 는 수의 부호를 나타낸다. +는 양수를 나타내고 -는 음수를 나타낸다
++변수이름 / --변수이름 은 해당하는 변수의 값을 +1 하거나 -1 하는 작업을 한다
(cast) 는 cast 대신에 캐스팅 하고싶은 변수의 타입을 적어주면 된다

 

(3) 산술연산자

기본적인 사칙연산나머지연산을 하는 가장 기본이 되는 연산자이다
+,-는 값을 원하는 만큼 더하고 빼는 역할을 한다
*, / 은 각각 곱셈과 나눗셈을 나타내는데 +와 - 보다 먼저 실행되는 연산자이다
 
%은 나머지를 값으로 돌려주는 연산자이다
예를들어, 14%4 라는 연산을 할 경우 2라는 값이 결과값이 된다 

 
(4) 시프트 연산자

시프트 연산자는 변수나 어떤 수의 비트를 이동시키는 연산자이다
 << 은 대상을 2진 비트로 바꾼 후 왼쪽으로 비트들을 한칸씩 미는 작업을 한다
이 때 빈 자리는 0값으로 채운다. ~처럼 비트를 직접 다루기 때문에 모든 변수 타입을
int 형으로 변환한 후에 사용한다
>> 은 대상을 2진 비트로 바꾼 후 오른쪽으로 비트들 한칸씩 미는 작업을 한다
이 때 마찬가지로 빈 칸은 0 으로 채운다. 마찬가지로 long 형을 제외한
나머지 변수들은 int형으로 변환한 후 사용된다 
>>> 은 >>와 기본적인 원리는 똑같다. 그러나 원본 데이터가 음수일 경우에도
앞쪽의 비트를 0으로 값을 채운다
즉, 오로지 양수 값만 다룰 수 있다. C
/C++ 의 경우에는 unsigned 의 역할을 하는 연산자라고 생각하면 된다


(5) 관계 연산자

연산자의 왼쪽과 오른쪽의 피연산자들의 크기 관계를 비교하여 참과 거짓을 가리는 연산자이다
<, >, <=, >= 은 순서대로 미만, 초과, 이하, 이상을 나타낸다
==, != 은 두 피연산자의 값이 같은지 다른지의 참 거짓을 판별한다
!=의 경우 두 피연산자의 값이 같을 경우 true 값을, 같으면 false 를 나타낸다


(6) 비트 연산자

비트 연산자는 데이터의 값을 32bit의 이진 비트로 변환시켜 각 비트간의 연산한다
AND 연산자 (&)
각 위치에 대응되는 비트가 모두 1 을 나타낼 경우에는 그대로 1을
하나라도 0 일경우에는 0을 넣는 비트 연산자 이다
0000 0000 0000 0000 0000 0000 0000 0101 = 5
0000 0000 0000 0000 0000 0000 0000 0110 = 6 
&
0000 0000 0000 0000 0000 0000 0000 0100 = 4

Exclusive OR 연산자(^)
대조되는 비트가 서로 다를 경우에는 결과값을 1로 주고 서로 같을 경우에는 0으로 주는 연산자이다
0000 0000 0000 0000 0000 0000 0000 0111 = 7
0
000 0000 0000 0000 0000 0000 0000 0100 = 4
^
0000 0000 0000 0000 0000 0000 0000 0011 = 3

OR 연산자 (|)
대조되는 비트가 모두 0일 경우에는 결과 값으로 0을 주고 한쪽이라도 1일 경우 1을 준다
0
000 0000 0000 0000 0000 0000 0000 0111 = 7
0000 0000 0000 0000 0000 0000 0000 0100 = 4
|
0000 0000 0000 0000 0000 0000 0000 0111 = 7


(7) 논리 연산자
&&은 피연산자 둘 다 true 일 경우에는 true 값을, 하나라도 false 일 경우 false 값을 결과로 갖는다
반대로 ||은 피연산자 중 하나라도 true 일 경우에 true 값을 결과로 갖는다


(8) 삼항 연산자

유일하게 세 개의 항으로 만들어져 있는 연산자이다
조건항 ? 항1 : 항2  의 구조를 띄는데 이는 조건항이 참일 경우에는 항1을 실행하고 거짓일 경우에는 항2 실행한다는 것이다
[예]
short a = 10;
short b = 20;
short c = a>b ? a: b;

코드를 실행하면 a>b 가 false 이기 때문에 c의 값에는 b의 값인 20이 들어가게된다

 

(9) 배정대입연산자

즉, 값을 변수에 대입하는 대입 연산자이다
a = a+1, a= a-2, a=a*3;, a=a/4;, a=a%5 등의 문장은 다음과 같이 바꿔서 쓸 수 있다 
a+=1 , a-=2, a*=3, a/=4, a%=5 로 간단히 줄여서 쓸 수 있다


(10) 후위형증감연산자

변수뒤에 쓰이는 증감연산자, 배정대입연산자보다 우선순위가 낮다.
int a = 5
4 + ++a * 3 = 22
산술연산자보다 높은 단항연산자 ++이기 때문에 ++a가 먼저 실행되기때문에
a의 값은 6이 되어 결과는 22가 된다.
int a = 5
4 + a++ * 3 = 19
하지만 후위형증감연산자의 경우 대입연산자보다 우선순위가 낮기 때문에
처리가 되지 않는다.


(11) 순차연산자

특정 데이터를 순차적으로 처리하도록 할때 , 연산자를 사용하고 , 순위에서 제일 낮다.
byte a = 10 , b = 20;


여기까지 연산자의 우선순위에 대해서 알아보았습니다.
다른 궁금한 사항은 댓글로 달아주세요.
뷰 한번씩만 눌러주시면 고맙겠습니다.
저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

Write a comment


Java - 자바 기본 입력

Java 2011.10.05 19:25

자바의 기본 입력 구문에 대해서 살펴보겠습니다.
출력 구문은 System.out 으로 시작하죠
입력 구문은 System.in 으로 시작합니다.

System.in.read();

BufferedReader in = New BufferedReader(new InputStreamReader(System.in));
in.readLine();

입력을 받을 때 기본 두가지를 쓰고 있습니다.

그리고 중요한 한가지 예외처리 입니다.
입출력을 처리할 때 예외처리를 해줘야 하는데요.
그 이유는 기본적으로 쓸 수 있는 구문이 있지만 그런 구문과 다르게 별도로 지정을 해줘야 하는 구문들이 있습니다.
지금 하는 입력 구문도 그 중에 하나 입니다.

첫번째로 필요한 입력구문에 따른 필요한 클래스를 사용하기 위해 java.io에서 해당하는 클래스를 import를 해주어야 합니다.
두번째로 입출력과 관련된 내용이 사용되는 메서드 뒤에 IOException을 throws 시켜주어야 합니다.
이렇게 예외처리를 해주어야 에러 없이 사용하실 수 있습니다.
지금은 그냥 외워두시고 나중에 예외처리에 관하여 설명할 때 이해하시면 될 것 같습니다.

먼저 System.in.read(); 구문은 아스키코드 한개의 값을 입력받는데 쓰입니다.
아스키코드로 받기 때문에 자료형은 int 로 받습니다.


다음과 같이 하나의 문자를 입력하면 아스키코드 값에 따라 d에 해당하는 100이라는 값을 출력하는 것을 볼 수 있습니다.
d를 입력했을 때 아스키값이 아닌 그대로 d를 출력하고 싶다면 앞에서 다룬 형변화를 하여 받으면 됩니다.


이런식으로 형변환을 하여서 문자로 그대로 받기도 합니다.
이 구문에서 중요한 것은 아스키값으로 받아서 출력하지만 하나의 값만 받는다는데 단점이 있습니다.
다중으로 쓰였을 때 중간의 엔터 값도 아스키로 받아드려서 출력합니다.


이런식으로 a와 b값만 입력했는데  a의 아스키 값은 97 b의 아스키 값은 98 인데 그사이에 13 과 10 이 출력되어 있습니다.
이 이유는 엔터의 입력 값도 하나로 처리하기 때문에 \r 과 \n으로 조합된 엔터의 값을 그대로 하나씩 입력을 받은 것입니다.
풀어서 설명하자면 우리가 4개의 아스키값을 입력할려고하는 데
a를 치고 엔터 후 b를 쳤는데 입력은 끝났니다.
그 이유가 엔터의 \r 과 \n을 하나씩 입력받아 해당하는 아스키 값 13 10 을 출력하는 겁니다.
그러니니깐 97 13 10 98 이   a \r \n b 식이 되는 거지요.

그래서 문자열을 많이 입력 받기 위해서 그 다음 구문인 BufferedReader 이 더 효과적입니다.
BufferedReader 구문은 String 자료형에 엔터치기 전까지의 문자열을 전부 입력합니다.


엔터를 치기 전까지의 문자열을 입력받기 때문에 긴 문자열을 입력받기에는 좋은 구문입니다.
또한 정수의 값이 필요할 때는 형변환을 통해서 입력받을 수 있습니다.

 

이렇게 형변환을 통해서 문자열을 입력받는 것이지만 형변환을 통해서 문자열을 바로 정수형으로 바꿔서 입력할 수 있습니다.

그 차이는 다음과 같습니다.

 

 

문자열로 받아서 그대로 덧셈을 실행한 결과와 문자열로 받지만 형변환을 통해 덧셈을 한 결과의 차이입니다.

여기까지 자바의 기본 입력을 살펴보았습니다.
궁금한점은 댓글을 남겨주세요.

 

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 1
  1. 2012.04.02 01:53 Modify/Delete Reply

    비밀댓글입니다

Write a comment


Java - 자바 기본 출력

Java 2011.10.04 19:24


프로그램에 있어서 입력과 출력은 중요하다고 생각합니다. 뭔가 입력했을 때 얻을 수 있는 값 그리고 그 값을 볼 수 있는 출력형태가 필요하죠. 자바에 있어서 C언어와 비슷한 입력 출력 구문이 있습니다.

먼저 출력 구문을 살펴보도록 하겠습니다.

System.out.print(출력대상);
System.out.println(출력대상);
System.out.printf("서식",출력대상);

이렇게 3가지의 출력 구문이 있습니다. 대소문자 구분해서 암기를 필히 해야합니다.
출력대상에는 직접 "" 묶어서 문자열을 출력 할 수 있으며 자료형에 상관없이 변수명으로 바로 출력이 가능합니다.

첫번째의 print 구문은 출력대상을 그대로 출력합니다. 하지만 두번째의 println은 출력대상을 출력 후 줄바꿈을 합니다.
두가지의 차이는 줄바꿈을 하느냐 안하느냐의 차이입니다.

두가지를 직접 프로그래밍 해서 살펴보면 다음과 같습니다.


첫번째는 두가지의 출력대상을 바로 붙여서 출력하는 것을 알 수 있습니다.


두번째는 두가지의 출력대상을 줄바꿈을 하여서 출력하는 것을 알 수 있습니다.
이렇게 두가지를 실습해보시면 바로 그 차이를 알 수 있을 것입니다.


그리고 두번째의 println의 경우 아무것도 안쓰고 써서 줄바꿈을 쓰이위해서 쓰이기도 합니다.

세번째의 출력구문은 시언어에서 넘어온 구문으로 1.5버전부터 사용 가능한 출력 메서드입니다.
하지만 잘 안쓰는 구문중에 하나이고 시언어하던 사람들이 쓰기편하라고 도입한 것 같습니다.

여러가지 출력대상을 출력을 할때 print 구문을 다중으로 써서 하는 것이 아니라
다음과 같이 + 기호를 사용하여 연달아 사용하기도 합니다.

 


여기까지 자바의 기본 출력을 살펴보았습니다.
소스를 많이 코딩하면서 공부하셔야 손에도 익고 이해하는 데도 도움이 많이 됩니다.

 



뷰 한번 씩만 클릭 해주세요 !!!!
저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

Write a comment


Java - 자동 형변환과 강제 형변환

Java 2011.08.08 19:08

형변환은 기존 자료형을 다른 자료형을 바꿀 때 하는 것입니다.
예를 들어 byte에 있는 값을 int로 바꾸는 것을 들 수 있습니다.

하지만 boolean형은 ture/false 값을 같기 때문에 형을 변환할 수 없고
String형 또한 변환이 불가능 합니다.

형변환에는 두가지가 있습니다.

자동 형변환(promotion)
강제 형변환(casting)

자동 형변환은 말 그대로 자동적으로 형변환이 되는 것이고
강제 형변환은 강제로 형변환을 시키는 것입니다.

쓰레기를 넣을 때 큰 봉투에 작은 쓰레기를 넣으면 쉽게 넣지만
작은 봉투에 큰 쓰레기를 넣으면 꾸겨서 넣는 것을 생각하시면 됩니다.


자동 형변환 ( promotion )

자동적으로 형변환이 일어나는 것으로
작은 자료형에서 큰 자료형으로 변환할 때 일어납니다.
작은 자료형의 값을 큰 자료형으로 넣을 때는 작은 값이기 때문에 큰 자료형에서 받아들이는 것에 문제가 없습니다.
그래서 에러없이 자동적으로 형 변환이 일어납니다.

byte a = 5;
int b = a;

이런식의 구문을 예로 들 수 있습니다.
byte의 범위 값이 int형 범위에 포함되기 때문에 에러없이 변환이 되는 것입니다.
 

강제 형변환 ( casting )

강제적으로 형변환을 하는 것으로
큰 자료형의 값을 작은 자료형 값으로 변환할 때 쓰이게 됩니다.
자동 형변환 처럼 쓰게되면 아무리 int형에 있는 값이 byte형 범위 안에 포함된다해도 에러가 발생합니다.
그 에러를 없애고 형변환을 하기위해 강제 형변환 구문을 써서 변환을 시켜 줍니다.
강제 형변환을 하는 구문은 다음과 같습니다

변환해야할자료형 변수명 = (변환해야할자료형)넣을데이터;

예를 들면

int a = 100;
byte b = a;
이러면 에러가 발생하지만

int a = 100;
byte b = (byte)a;
이렇게 구문을 써서 변환을 시키면 에러없이 변환이 가능합니다.

두 가지의 형변환을 살펴보면서 한가지 알아두어야 하는 사실이 있습니다.
정수형 보다는 실수형이 큰 자료형이라는 점입니다.
정수형에서 실수형으로 형변환을 한다면 자동적으로 되지만
실수형에서 정수형으로 형변환을 하는경우 강제 형변환을 시켜줘야 하는 것입니다.

실수는 무조건 정수보다는 크다 이점을 외워두세요 .

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Java' 카테고리의 다른 글

Java - 자바 기본 입력  (1) 2011.10.05
Java - 자바 기본 출력  (0) 2011.10.04
Java - 자동 형변환과 강제 형변환  (0) 2011.08.08
Java - 상수, 변수, 자료형  (0) 2011.08.08
Java - 프로그램에서의 주의할 점  (0) 2011.08.03
Java - 프로젝트 생성하는 법  (0) 2011.08.02
Trackback 0 : Comment 0

Write a comment


Java - 상수, 변수, 자료형

Java 2011.08.08 18:34

상수(Constant) : 항상 일정한 값을 유지하는 데이터
변수(Variable) : 특정 상황에 따라 변화하는 데이터
자료형 : 상수나 변수의 유동적인 데이터를 저장할 수 이쓴 크기를 규정하는 형태

상수는 자료형에 맞게 변수에 저장됩니다.
예를 들어 설명한다면
핸드폰과 핸드폰케이스가 있다면
각 기종 핸드폰에 맞는 핸드폰 케이스가 있습니다.
그래서 그 핸드폰에 맞는 케이스를 사서 씌어야 합니다.
여기서 핸드폰이 상수가 되는 것이고 핸드폰 케이스가 자료형이 되는것입니다.
또한 이 두가지를 통틀어 이름을 붙이는 것이 변수라고 할 수 있습니다.

자료형에 맞게 상수가 변수에 들어가는 것이라고 할 수 있습니다.
자료형에는 8가지가 있는데 그 자료형에 지정된 변수에 상수가 자료형이 맞을경우 넣을 수 잇습니다.
만약에 8가지 자료형중에 Byte가 있다면
Byte로 지정된 변수에는 Byte 상수만 들어갈 수 있는 것입니다.
다른 자료형의 상수가 들어간다면 에러가 일어나게됩니다.

표현 형식은
자료형 변수명 = 상수;
이런식으로 표현됩니다.

자료형에는 논리형 / 정수형 / 실수형 / 클래스형 이 있습니다.

논리형 

boolean

맞다 / 아니다 형식으로 표현되는 자료를 저장합니다.
사용바이트는 1byte이며 입출력범위는 true / false 입니다.

boolean bool = ture; 


정수형

byte

정수형 자료형 중에서 가장 작은 범위의 수치를 저장합니다.
사용 바이트는 1byte이며 입출력범위는 -128 ~ 127 까지 입니다.

byte by = 123;

한가지 살펴보면 byte에 128를 적어놓으면 에러가 발생합니다.
하지만 127값을 주고 한번 증가를 해주게 되면 -128이 나오는 것을 볼 수 있습니다.
즉 byte가 -128 ~ 127 까지표현해주고 127 다음 숫자를 -128로 인식한다는 것입니다.
이것은 2진수를 알면 쉽게 이해하실 수 있을거라 생각합니다.


char

자바의 자료형중에 유일하게 음수가 없는 자료형이다.
유니코드를 도입해서 2byte의 범위로 이루어져 있다.
사용바이트는 2byte이며 입출력범위는 0 ~ 65,535 까지 이다.

char ch = 65; ( A의 아스키 코드 값 )
char ch = `A`; ( 작은 따옴표는 ASCII 코드 값이다라고 인식 )
char ch = `\u0041`; ( \u는 유니코드를 의미하는 표기형식 뒤에 4자리 숫자는 A를 16진수를 표시 )

ASCII 코드 값은 외워야하며 쓰다보면 저절로 외워지게 됩니다.


short

2byte체계의 int자료형과의 호환성을 위해서 많이 사용하는 자료형이다.
정수형 자료형으로 많이 쓰이지 않는 자료형이다.
사용바이트는 2byte이며 입출력범위는 -32,768 ~ 32,767 까지 이다.

short sh = 12345;


int

정수형 자료형중에서 제일 많이 쓰이고 대표적인 자료형이다.
모든 언어에서의 기본이 되는 자료형이다.
사용바이트는 4byte이며 입출력범위는 -2,147,483,648 ~ 2,147,483,647 까이 이다

int i = 10232323;

정수 연산 시에 발생하는 결과 값은 모두 int형으로 표현이 된다.

byte a = 5;
byte b = 5;
a + b >> 이 연산의 결과값은 int 형으로 나오게 된다.


long

int자료형보다 큰 정수형 데이터를 저장하기 위한 목적으로 만들어진 자료형이다.
사용바이트는 8byte이며 입출력범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 까지 이다.

long lo = 123123213213213L;

워낙 큰 수치이기 때문에 기억할 필요는 없다.
주의할점은 long 자료형을 쓸때에는 끝에 l이나 L을 붙여줘야 하는데 l은 숫자와 혼동이 되기때문에
대문자 L을 써서 long자료형이라는 것을 표시한다.


실수형

float

정수형 자료형들보다는 훨씬 많은 범위를 포함하고 있다.
정수형은 0 1 2 3 같이 나가지만 실수는 0 0.1 0.01 등등의 수도 포함해야 한다.
자바에서 정수형의 기본 자료형은 int형이지만
실수형에서의 기본 자료형은 double이다.
그래서 이것 또한 f나 F를 붙여서 float를 표시하여야 한다.

float fl = 12.34f;


double

실수형 기본 자료형으로 가장 큰 자료형으로 우리가 원하는 만큼의 수를 지정하여 사용할 수 있다.
일반적으로 은행에서 돈을 관리할 때 사용하는 자료형이다.

double do = 12345.6789;


클래스형

String

String은 클래스이다.
하지만 자바에서는 그러한 클래스를 마치 자료형인 것처럼 사용할 수 있게 했다.
문자열을 달기 위한 자료형이다.
사용바이트는 4byte이며 입출력범위는 무한대 까지 이다.

String str = "안녕하세요";


여기까지 상수 / 변수 / 자료형 을 살펴보았습니다.
댓글 남겨주시면 최대한 답변해드리겠습니다.
저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

Write a comment