연산자라는 건 어떠한 작업을 위한 기호를 뜻합니다
예를 들어 어떠한 수 하나와 다른 수 하나를 더한다 라는 문제를 가졌을 때 더하기 위한
기호를 뜻하는 것으로 이해 하셔도 무방할 듯합니다
자바에서 사용하는 가장 기초적인 산술 연산자를 알아보도록 합시다
더하기 | 빼기 | 곱하기 | 나누기 | 나머지 |
+ | - | * | / | % |
더하기 빼기는 우리가 모를 수 없는 기호로 표현되지만 다른 점은 곱하기는 X 아닌가
저도 처음엔 왜저러나 싶었습니다 ㅎㅎ 제 생각과 추론이지만 우리가 곱하기를 x로 한다면
컴퓨터가 인식하기에는 문자열 x로 인식하지 않나 그래서 * 를 썼을 것이다라고 생각합니다
여러분 더하기 빼기는 제가 굳이 작성하지 않겠습니다 ㅎㅎ
int multiply = 1 * 3;
int multiply2 = 1 * 1.5;
첫번째 구문은 정상적으로 3이라는 데이터가 나올 것이고
두 분째 구문은 에러가 날 겁니다
int 자료형은 정수만을 저장 하기 때문에 구문 에러가 납니다
다음은 나누기 입니다
int result = 3 / 2;
System.out.println(result);
몇일까요 계산기로 한번 해보시길 바랍니다 3 나누기 2는 1.5가 나올 겁니다
그럼 result 의 값의 출력은 1.5 겠네요 ㅎㅎ
틀렸습니다 1.5는 절대 나올 수 없습니다
int는 위에서도 보여드렸듯 실수는 들어갈 수 없는 자료형입니다
그래서 나머지를 자기 맘대로 버려버립니다 ㅎㅎ
이건 굉장히 간단한 예 입니다만 실제로 이런 실수를 하는 경우가 종종 있다고 하고 저도
경험해봤었습니다 ㅎㅎ
다음은 나머지 연산자 % 입니다
int result = 10 % 2;
int result2 = 10 % 5;
int result3 = 10 % 3;
System.out.println(result);
System.out.println(result2);
System.out.println(result3);
여러분이 눈으로 풀어보세요 ㅎㅎ
자 암산 해봅시다 10을 2로 나눈 나머지의 값은 얼마일까요 일단 몫은 5이겠죠? 2*5=10 이니까
result2는 반대로 5*2 = 10 이니까 나머지가 없네요?
근데 10을 3으로 나눈 나머지는 얼마일까요 암산으로도 충분히 가능하리라 생각합니다
저는 저런 식이 나오면 아 3을 몇 번 곱해야 10에 가까운 수가 될까 그렇게 생각해줍니다
3*3 = 9 죠? ㅎㅎ 빼면 1이 남게 됩니다 ㅎㅎ
그럼 result3의 값은 1일 것입니다 한번 직접 ide에 작성하고 실행해보세요
소스는 많이 보는 것도 중요하지만 이게 왜 이렇게 되지 아 이런 이유 때문에 이 값이
이렇게 나오는구나도 굉장히 중요합니다
그리고 책들을 보면서 소스코드가 많이 나오잖아요? ㅎㅎ 그럼 읽다가 소스코드 나오면 똑같이
복사해서 직접 해보시는 것도 좋긴 한데 시간 절약을 위해서 눈으로 코드를 분석해보세요
이해가 되고 출력되는 값을 유추해서 정확하게 맞다면 그냥 넘어가셔도 좋습니다
이해가 되지 않는 건 하나하나 해보십시오 도움이 됩니다
자 수에 대한 연산은 이 정도만 알고 넘어가고
자바는 문자열도 연산이 가능합니다
예를 들어 우리가 hi라는 문자열과 nice to meet you라는 문자열이 있을 때
hi nice to meet you 문자열을 그냥 만들어서 출력해버리는 사람이 있습니다
굉장히 안 좋은 방법입니다
메모리 낭비이기 때문이죠 이미 있는 자원을 가져다 쓰는 게 맞는 것입니다
그렇기에 이미 있는 것인지 아닌지 파악을 미리 하는 것도 중요하겠죠
String hi = "hi";
String ntmy = "nice to meet you";
//안좋은 방식
System.out.println("hi nice to meet you");
//최악의 방식
String result = "hi nice to meet you";
System.out.println(result);
//최선의 방식
System.out.println(hi + " " + ntmy);
소스를 보면 아시겠지만 가장 좋은 방법은 변수를 이용해서 출력하는 것입니다
그리고 눈썰미가 좋은 분들은 아시겠지만 hi와 ntmy를 연결할 때에 + 연산을 하고
중간에 띄어쓰기가 빠져있길래 공백을 연결해줬습니다
저렇게 공백도 연결이 가능한 점 알고 계시면 되겠습니다
그리고 가장 중요한 것이 문자열과 문자열을 연결할 때에는 무조건 + 로 연결해준다라고
기억하시면 되겠습니다
이런 내용의 글을 보면 왜 안 좋은 방식이냐 한눈에 무슨 소스인지 알 수 있고 뭘 출력하는지도 알 수 있고
바꾸기도 편하지 않냐
아주 무식한 소리입니다
이런 방식을 하드코딩이라고 할 수도 있습니다 내가 출력하고자 하는 값을 직접적으로 적어놓고
사용하는 것인데 이 방식이 좋다는 사람도 간혹 가다 있지만 제 생각엔 절대 아니라고 생각합니다
유지보수가 힘들어 죽습니다 ㅎㅎ
저 위의 소스는 간단하지만 hi nice to meet you 구문이 각기 다른 곳에 1만 번 뿌려져 있다고
생각해봅시다
변수를 사용해서 문자열을 연결시켜 뿌린 사람을 a
String hi = "hi";
String ntmy = "nice to meet you";
//최선의 방식
System.out.println(hi + " " + ntmy);
문자열을 그대로 입력시켜서 뿌린 사람 b가 있다고 하면
//안좋은 방식
System.out.println("hi nice to meet you");
이때 뒤에 nice to meet you를 bye로 바꾼다고 생각해봅시다
a는 스트링 변수 ntmy만 변경하면 끝 이겠죠? 10 초안에 끝날 것입니다ㅎㅎ
그런데 b는 음 야근 각이겠죠 1만 개의 소스를 다 찾아서 변경해줘야 할 것입니다
뭐 물론 ide에 전체 검색과 리플레이스 도구들이 있긴 하지만요 ㅎㅎ
그래도 b의 방법은 지양하는 편이 좋습니다
자 오늘은 수를 더하고 빼고 곱하고 나누고 나머지를 구하고
문자열을 더하는 연산자에 대해 알아봤습니다
지금은 초심자의 관점에 맞춰 작성하는 글이니 만큼 나중에는 문자열을 굳이
+ 로 연결하지 않고 다른 방법도 굉장히 많으니 지금은 이만큼의 이해에 만족하며
공부합시다
'Developer > Java' 카테고리의 다른 글
[java]반복문 (0) | 2022.07.05 |
---|---|
[java]조건문 (0) | 2022.07.01 |
[java]기초 자바 용어 (0) | 2022.06.08 |
[java]메모장으로 작성된 자바코드 컴파일 하는법 (0) | 2022.06.07 |
[java]상수 (0) | 2022.06.03 |