-
JAVA_이론정리02_연산자11. JAVA/1.1 이론정리 2022. 3. 14. 12:05
컴퓨터가 숫자를 기억하는 방법
==> 정수의 경우 => 2진수로 변환하고 부호비트는 무조건 0을 붙인다. 예) 10 => 2|10 = 0 2|5 = 1 2|2 = 0 2|0 = 1 10==> 00001010 2의 3승 + 2의1승 = > 10 음수의 경우 => 9의 보수법을 이용해서 처리한다. 1) 양수로 가정하고 2진수로 변환한다. 2) 보수화 시킨다.(현재 숫자를 바꾼다. 0->1, 1->0 ==> 비트를 뒤집는다) 3) +1 해준다. 4) 부호비트에 강제로 1을 지정한다.
연산자
==> 데이터를 가공하기 위해서 사용되는 기호용어 연산자 - 가공방식을 나타내는 기호 피연산자 - 가공에 사용되는 데이터 예) 1 + 2 ==> + : 연산자 / 1,2 : 피연산자 참고) 연산자를 사용하면 가공된 결과가 나오는데 이 결과는 항상 큰 형태로 나오는 것을 원칙으로 한다. 예) 1 + 3.14 = > 4.14 이때 결과값의 데이터 형태는 double이다. int + double == > int(정수형) 데이터가 double(실수형)형태로 자동형변환 ==> double; 타입이 다른 두 데이터를 연산하게 되면 항상 큰 타입쪽으로 결과값이 나온다.
문제 ]
'J'+3.14 ==>74+3.14
'J'는 아스키 코드값이 74로 변환이 돼서 연산을 하게 된다.
따라서 74+3.14 의 연산을 하게 되고 결과값은 double형 데이터 77.14가 된다.참고] 기본데이터타입 + 문자열 데이터 ==> 문자열로 변환 예) 3.14+"!!!" == "3.14!!!" => 이때 "+"는 산술연산자가 아닌 데이터 두개를 결합하는 결합연산자로서 작동함. float + long ==> float (float가 4byte이지만, long가 8byte이어도 실수가 더 많이 저장됨으로 float로 저장됨) 주의] 수학에서는 비교연산자를 사용할때 3개의 항을 동시에 비교할 수 있었지만, 프로그래밍 에서는 절대로 3개 이상의 피연산자를 동시에 연산하는 경우는 없다. ex) 1<x<10 : 2~9 --> 수학에서 사용하는 방식 x > 1 and x < 10; --> 프로그래밍 방식
종류
1. 사칙연산자 ==> 더하고 빼고 곱하고 나누고 나머지구하는 연산자 기호 + - 더하기 연산자 - - 빼기 연산자 * - 곱하기 연산자 / - 나누기 연산자 % - 나머지 연산자 참고 ] 사칙연산자는 피연산자가 반드시 2개가 필요하다. 참고 ] 사칙연산자가 여러개 동시에 기술된 경우에는 왼쪽부터 차례로 계산해서 결과값을 만들어나간다. * 2. 대입연산자 ==> 변수에 데이터를 기억하도록 하는 연산자 기호 = , += , -= , /= , *= , %= 형식 ] 변수 = 데이터; * 반드시 대입연산자 왼쪽에는 변수가, 오른쪽에는 데이터가 위치해야 한다. 의미 ] 데이터를 변수에 기억시키세요. 참고 ] 자바는 모든 연산이 반드시 대입연산자가 있어야 기억할 수 있다. 만약 대입하지 않으면 연산의 결과는 기억되지 못한다. 참고 ] 모든 연산자는 같은 연산자가 중복된 경우, 왼쪽에서 오른쪽으로 진행하면서 연산한다. 예 ] 1 + 2 + 3 + 4 + 5 = 1 + 2 + 3 + 4 + 5 이런 순서로 연산 진행하는데 대입연산자 만큼은 오른쪽에서 왼쪽으로 진행한다. 예] int a = 10; int b = 20; int c = 30; int d = 40; a = b = c = d; <--------------- 방향으로 대입연산이 이루어진다. a : 40, b : 40, c : 40, d : 40 참고 ] 변수 =변수 + 데이터; 변수
참고 ] + 기호는 문자열 연산 에서도 사용할 수 있다. (문자열 연산은 오직 + 기호만 사용할 수 있다.) ==> 이 때 문자열이 결합되어서 결과가 만들어지게 된다. 결합이란? 앞 문자열에 뒤 문자열이 붙어서 만들어지는 것. "홍"+"길동" ==> "홍길동" 참고 ] 모든 기본 데이터 타입은 데이터를 문자열에 결합하면 결과는 문자열이 만들어진다. '홍'+"길동" =>"홍길동" char + String => String 참고 ] 문자열 결합은 문자열이 단 한개만 있어도 허용된다. 즉 결합하는 두 항 중에서 하나만 문자열이라도 문자열 결합으로 처리된다. 예 ] "홍" + 1000 ==> "홍1000" 200 + "홍" ==> "200홍" 참고 ] System.out.println("데이터"); 에서는 오직 한개만 출력할 수 있다. 예 ) System.out.println("홍길동","고길동","둘리");<==(X) 여러개를 출력하고자 하면 문자열 결합을 이용해서 결합해서 하나의 문자열을 만든 후에 출력해야 한다.
public class Test02 { public static void main(String[] args) { //문자열 변수를 만드는 방법 //1. 데이터를 직접 입력해서 만드는 방법 String name1 = "홍길동"; //literal풀에 있는 값을 name1이라는 변수가 기억 //2. 클래스를 new 시켜서 만드는 방법 String name2 = new String("홍길동"); //힙에 스트링 클래스를 복사해서 홍길동을 기억시킴...?????? System.out.println("name1 : "+name1); // literal Pool 주소 기억 System.out.println("name2 : "+name2); // heap 영역 주소 기억 System.out.println("name1 == name2 : "+(name1==name2)); //name1 : literal Pool 주소값 =/= name2 : heap 영역 주소값 } }
3. 증감연산자 형식] ++변수 : 연산자 기준으로 변수++ : 기호 ] ++ : 1 증가시켜준다. ==> +1 -- : 1 감소시켜준다. ==> -1 참고 ] 모든 연산은 일반적으로 중앙처리장치에서 처리되는 것이 원칙이다. 증감연산자, 시프트 연산자는 중앙처리장치를 거치지않는다. 메모리 상에서만 연산이 되어서 처리된다. 4. 부호반전연산 기호 ] - 형식 ] -데이터; 5. 비교연산자 ==> 두 데이터 대소 관계를 비교하는 연산자 기호 ] == : 같다 != : 다르다 (! : 부정연산자) > 크다 < 작다 >= : 크거나 같다 =>는 안됨 <= : 작거나 같다 주의] 사용되는 데이터와 관계없이 결과는 항상 논리값(true , false)으로 나온다. 참고 ] 이 연산자는 주로 if, for, while.... 제어 명령에서 질문이 필요할 떄 많이 사용하는 연산자이다. ******************* 참고 ] 문자열을 비교할 경우에는 equals() 함수를 사용해서 비교해야 정확하게 데이터를 비교하게 된다. 참고 ] 비교연산자는 3항을 동시에 비교하지 못한다. 예 ] 10<=no<100 (X) no>=10 && no<100 6. 논리연산자 기호 ] & : and | : or(또는) && || ! 7. 비트 연산자 8. 3항연산자(조건연산자)
'1. JAVA > 1.1 이론정리' 카테고리의 다른 글
JAVA_이론정리06_배열2 (0) 2022.03.14 JAVA_이론정리05_배열 (0) 2022.03.14 JAVA_이론정리04_반복문과 조건문 (0) 2022.03.14 JAVA_이론정리03_연산자2 (0) 2022.03.14 JAVA_이론정리01_데이터종류 (0) 2022.03.14