연산자

이세라·2024년 10월 2일
package operator;

public class Operator01 {

	public static void main(String[] args) {
/*
 * 연산자
 * 1. 산술 연산자
 * 		+
 * 		-
 * 		* 곱셈
 *		/ 나눗셈, 몫 
 * 		% 나눗셈, 나머지
 * 
 * 		자바는 정수 / 정수는 결과가 정수
 * 			  3 / 2 => 1 소수 이하는 버림
 * 			 실수 / 정수는 결과가 실수
 * 			  3.0 / 2 => 1.5
 * 			 정수 / 실수는 결과가 실수
 * 			  3 / 2.0 => 1.5
 * 
 * 2. 단항 연산자(+,-)
 * 
 * 3. 증감 연산자
 * 		++	++a a++ => a=a+1
 * 		--	--a, a-- => a=a-1
 * 		++, -- 앞에 붙으면 나먼저 증/감 하고 계산식 참여
 * 		++, -- 뒤에 붙으면 계산식에 참여한 후 증/감
 * 
 * 4. 문자열 결합(연결) 연산자
 * 		문자열 + 변수 => 문자열
 * 		문자열 + 숫자 => 문자열
 * 		숫자 + 문자열 => 문자열
 * 		변수 + 문자열 => 문자열
 * 
 * 		String name = "홍길동";
 * 		int num = 8;
 * 
 * 		num + "3" => 83
 * 		45 + name => 45홍길동
 * 
 * 5. 비교연산자 (결과가 true/false)
 *		>
 * 		>=
 * 		<
 * 		<=
 * 		==
 *		!=
 *
 * 6. 논리연산자
 *		&& : and, 그리고
 *		|| : or, 또는
 *		&  : and, 그리고
 *		|| : or, 또는
 *		^  : 배타적
 *		!  : 논리 부정(not)
 * 7. 대입 연산자
 * 		=
 * 		+=	a+=3; => a=a+3
 * 		-=
 * 		*=
 *		/=
 *		%=
 * 8. 삼항연산자
 * 		조건식? 조건식의 결과가 참일때 실행할 값 : 조건식의 결과가 거짓일 때 실행할 문장;
 * 
 * */
/*	자바에서 자료형
 *  1) 기본자료형(=타입, 형) : 메모리의 스택에 저장
 *  정수 : byte : -128 ~ 127, 1byte 크기
 *  	   short : 2byte, -32768 ~ 32767
 *  	   char : 문자, 2byte, 음수 표현이 안됨, 0~65535
 *  			   'A' 유니코드 65
 *  	  	int : 4byte, 약 -21억 ~ +21억 사이
 *  			  기본적으로 정수는 int
 *  		long : 8byte, 숫자 l이나 L => 은행에서 쓰임
 *  			ex) int a=4;	long b=4L;
 * 
 *  실수 : float : 4byte
 *  	   double : 8byte
 *  	   자바는 기본 실수값은 double
 *  	   double d = 5.6;
 *  	   float f = 5.6f, 실수 뒤에 f, F를 붙여서 표현
 *  
 *  	   byte < short < int < long < float < double
 * 
 * 논리형 : boolean => true, false
 * 
 * 2) 자동 타입변환(혼자하는자바p.95)
 * 		byte							byte => 결과가 무조건 int
 * 		short	연산자(+, -, *, /, %)	short
 * 		int								int
 * 
 * 		정수자료형 연산자(+, -, *, /, %) 정수자료형 => 무조건 결과는 int
 * 		정수자료형 연산자(+, -, *, /, %) int => 무조건 결과는 int
 * 		정수자료형 연산자(+, -, *, /, %) long => 무조건 결과는 long
 * 		
 * 		jvm 은 기본적으로 4byte 단위로 연산을 처리
 * 
 * 		작은 자료형이 큰 자료형과 연산을 하면 큰 자료형으로 형변환(=타입변환, 자료형변환)
 * 
 * 3) 강제 타입변환(casting 연산)
 * 		- 타입 변환(=형변환) 연산자를 사용해 데이터 타입을 강제로 변환하는 연산
 *		- 타입 변환(=형변환) 연산자 : (타입) 
 * 			double avg = (double)sum/2;
 * 			double avg = sum/(double)2;
 * 
 * 			int num = 50;
 * 			double doub = 40.7;
 * 			num = doub + num; //컴파일 에러, 더블형 + 정수 => 더블형
 * 							  //			 정수형 = 더블형 이기에 컴파일 에러
 * 			num = (int)doub + num;
 * 			num = (int)(doub + num);
 * 		 - 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개서 저장하는 것은
 * 		   데이터 손실이 발생할 수 있음
 * 		   작은 크기 타입 = (작은크기타입)큰크기타입
 * 
 * 		 - 주의사항
 * 			사용자로부터 입력받은 값을 변환할 때 값의 손실이 발생하면 안됨
 * 			강제 타입 변환을 하기 전에 우선 안전하게 값이 보존될 수 있는지 검사할 필요 있음
 * 			정수 타입을 실수 타입으로 변환할 때도 정밀도 손실을 피해야 함
 * 
 * 2. 참조 자료형(=타입, 형) : 메모리의 힙 영역 저장
 * 
 * 개념 정리
 * 		- 문자 : ''
 * 				'가', '1'
 * 		- 문자열 : ""
 *				"abc", "A", "가", "1"
 *		- 변수(variable) : 하나의 값을 저장하기 위한 공간(가장 마지막에 들어온 값 하나만 저장)
 *		- 상수(constant) : 처음 값을 한번 저장하면 바꿀 수 없음
 *							한번만 저장할 수 있는 그릇, 코드 중간에 값을 변수처럼 변경할 수 없음
 *							선언하는 곳에서만 변경 가능
 *							자바에서는 상수에는 final을 붙이고 상수명을 대문자 표현
 *							final 상수타입 상수명 = 값;
 *							final double PI = 3.141592;
 *
 *							final int HEIGHT;
 *							HEIGHT = 20;
 *		- 리터럴(literal) : 그 자체로 값을 의미하는 것
 *							10, 홍길동, ....
 *
 * 2. 참조 자료형(=타입, 형) : 메모리의 힙 영역 저장
 * 
 * 
 * */
		
		
		
		int score = 85;
		char grade = (score > 90) ? 'A' : ((score>80) ? 'B' : 'C');
		
		System.out.println(score);
		
	}

}
profile
개린이입니다...

0개의 댓글