변수와 연산자

성혜·2024년 1월 16일
0

Java

목록 보기
2/25
post-thumbnail

기본 데이터 타입

데이터 타입이란 자료에 대한 형태를 의미

데이터 타입은 변수를 만드는 역할을 하며 타입이 지정된 변수에는 데이터를 넣을 수 있음


자료형의 분류

1. 기본형, 원시형(Primitive Type), 값형(Value Type)

: byte, short, int, long, float, double, char, boolean

Data TypeSizeDescription
byte1 byteStores whole numbers from -128 to 127
short2 bytesStores whole numbers from -32,768 to 32,767
int4 bytesStores whole numbers from -2,147,483,648 to 2,147,483,647
long8 bytesStores whole numbers from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
float4 bytesStores fractional numbers. Sufficient for storing 6 to 7 decimal digits
double8 bytesStores fractional numbers. Sufficient for storing 15 decimal digits
boolean1 bitStores true or false values
char2 bytesStores a single character/letter or ASCII values


2. 참조형 (Reference Type)

: 클래스 (Class) > 사용자가 정의 가능
: 배열 (Array)
: 열거형 (Enum)
: 인터페이스 (Interface)


자료형의 기본값

대부분 개발자들은 변수를 생성 후 임의로 초기값을 할당한다.(나중에 발생할 제어 오류로 인한 에러발생 때문에)

Data TypeDefault Value (for fields)
byte0
short0
int0
long0L
float0.0f
double0.0d
char'\u0000'
String (or any object)null
booleanfalse




변수

데이터를 담을 수 있는 그릇

정의된 자료형으로 메모리에 할당받은 공간.

프로그램에서 사용되는 데이터를 입출력하는 용도.

상수(데이터)를 직접 조작하는것보다 변수를 사용하면 조작성이 향상되고, 또한 의미가 분명해진다.(가독성이 높아진다.)


1. 변수 생성하기

자료형 변수명 ;

int javaScore;

2. 변수 초기화

int javaScore = 89;

3. 변수 사용하기

출력, 연산 , 조건, 기록 등...

System.out.println(javaScore);

변수와 데이터 타입 관계 정리

: 데이터타입은 모양만 가지고 있는 존재로 홀로 메모리를 생성할 수 없다! 그래서 변수를 이용하는 것!
: 변수도 데이터 타입 없이 홀로 존재하는 것이 불가능하다!



변수명 만들 때 규칙

  1. 반드시 숫자가 아닌 문자로 시작해야한다.
  2. 공백을 포함할 수 없다.
  3. 특수 기호는 $, _ 만 허용한다.
  4. 대/소문자 구분한다.
  5. 예약어 사용 불가(ex this ,int ,class)
  6. 캐멀 표기법 주로 사용 (아래 자세히 설명!)
  7. 의미 있는 변수명 만들기

식별자 명명법 (패턴)

  1. 헝가리언 표기법
  2. 파스칼 표기법
  3. 캐멀 표기법
  4. 스네이크 표기법
  5. 케밥 표기법

1. 헝가리언 표기법

: 식별자를 만들 때 식별자의 접두어로 자료형을 표시하는 방법
: int intAge / int iAge ..등등
: 요즘엔 잘 사용 안 함

2. 파스칼 표기법

:식별자의 첫문자를 대문자 표기 + 나머지 문자를 소문자
: 2개 이상의 합성어 > 각 단어의 첫문자를 대문자로 표기
: 주로 클래스명 만들 때 사용
: int englishscore -> int EnglishScore

3. 캐멀 표기법

: 식별자의 첫문자를 소문자 표기 + 나머지 문자를 소문자
: 2개 이상의 합성어 > 각 단어의 첫문자를 대문자로 표기
: 주로 변수명과 메서드 만들 때 사용
: int mathScore; 

4. 스네이크 표기법

: 전부 소문자표기
: 합성어 > 각단어를 '_'으로 연결
: 사용처가 정해져 있지 않음
: int english_score

5. 케밥 표기법

: 전부 소문자표기
: 합성어 > 각단어를 '-'으로 연결
 꽤 많은 언어에서는 '-'를 빼기로 인식해서 사용 불가
: 웹 html, css에서는 자주 씀
: int english-score


상수

데이터 중 일부는 값을 변화시키면 안되는 값들이 존재
ex) double pi = 3.14;

final 변수 = 상수 (constant) = 이름을 붙인 변하지 않는 값

상수는 대문자 표현

final double PI = 3.14; //변수와 구분하기 위함 



연산자

수학 연산자 > 프로그래밍 연산자

피연산자를 대상으로 미리 정해진 연산(행동)을 한 후에 연산(행동)의 결과를 반환하는 역할

연산자 우선 순서
산술 연산자 > 비교연산자 > 논리 연산자 > 대입 연산자


연산자의 종류

1. 행동 (목적)

  • 산술 연산자
: +, -, *, /, %(mod, 나머지)
: 이항 연산자
: 피연산자를 숫자형을 가진다. (정수,실수)
//10 + 3 =13
		System.out.printf("%d + %d = %d\n",a,b,a+b);
		System.out.printf("%d - %d = %d\n",a,b,a-b);
		System.out.printf("%d * %d = %d\n",a,b,a*b);
		System.out.printf("%d / %d = %d\n",a,b,a/b);
		System.out.printf("%d %% %d = %d\n",a,b,a%b);//%를 하나만 쓰면 스페이스와 %를 형식문자로 생각해서 에러가 남

주의 할 것

모든 산술 연산자의 결과값의 자료형

두 피연산자의 자료형 중에서 더 크기가 더 큰 자료형으로 반환된다.

데이터 손실을 최소화하기 위해서

int e = 1000;
byte f = 10;
System.out.println(e+f); //int + byte = int
		
int g = 1000000000;
int h = 2000000000;
		
long i =(long)g+h;
System.out.println(i); 
//int 30억을 표현할 수 없음. => 에러가 안 뜨고 이상한 값이 나오기 때문에 주의!!

✔ int형을 자주 쓰는 이유

byte j =10;
byte k = 20;
		
System.out.println(j+k)

// Type mismatch: cannot convert from int to byte 에러 발생
// byte와 short의 연산의 결과는 항상 int이다.
		
byte l = (byte)(j + k) ; //형 변환이 귀찮기 때문에 주로 int를 자주 사용함 
//정수 > int 주로 사용. 가끔씩 long 사용
//실수 > double 주로 사용 (정밀도 때문)

  • 비교연산자
: > , >=, <, <=, ==(equals), !=(not equals)
: 이항 연산자
: 피연산자들의 우위(동등) 비교
: 피연산자는 숫자형을 가진다
: 연산의 결과가 boolean이다. (true,false)
int a = 10;
int b = 3;
		
System.out.printf("%d > %d = %b\n", a, b, a>b);
System.out.printf("%d >= %d = %b\n", a, b, a>b);
System.out.printf("%d < %d = %b\n", a, b, a>b);
System.out.printf("%d <= %d = %b\n", a, b, a>b);
System.out.printf("%d == %d = %b\n", a, b, a>b);
System.out.printf("%d != %d = %b\n", a, b, a>b);
System.out.println();

//결과
10 > 3 = true
10 >= 3 = true
10 < 3 = true
10 <= 3 = true
10 == 3 = true
10 != 3 = true

문자열(참조형) 비교

String s1 = "홍길동";
String s2 = "홍길동";
String s3 = "홍";
s3 = s3 + "길동";
		
System.out.println(s1 == s2);
System.out.println(s3);
System.out.println(s1 == s3); //false
		
//*** 문자열의 비교는 ==, !=  연산자를 사용하면 안된다.
//*** 문자열의 비교는 equals() 메서드를 사용한다.
		
System.out.println(s1.equals(s2)); //s1 == s2
System.out.println(s1.equals(s3)); //s1 == s2

//결과
true
홍길동
false
true
true
			

  • 논리연산자
: &&(and), ||(or), !(not)
: 2항 연산자 (&&, ||)
: 1항 연산자 (!)
: 피연산자의 자료형이 boolean이다.
: 연산의 결과가 boolean이다.
: 피연산자를 정해진 규칙에 따라 연산을 한 후에 값을 반환

1. A && B (논리곱(X))

T = 1 , F = 0
T && T = T
T && F = F
F && T = F
F && F = F

2. A || B (논리합(+))

T = 1 , F = 0
T || T = T
T || F = T
F || T = T
F || F = F

3. !A

!T = F
!F = T

4. A ^ B = ? ,배타적 논리합(xor)

T ^ T = F
T ^ F = T
F ^ T = T
F ^ F = F
boolean f1 = true;
boolean f2 = false;
		
System.out.println(f1 && f2);
System.out.println(f1 || f2);
System.out.println(!f1);
System.out.println(f1 ^ f2);

//결과
false
true
false
true

  • 대입연산자, 할당 연산자
: =
: +=, -=, *=, /=, %= (복합 대입 연산자)
: LValue(변수) = RValue(상수,변수)
=> LValue와 RValue의 지료형이 동일해야한다. > 형변환
: 대입 연산자는 모든 연산자들 중 우선 순서가 가장 낮다.
: 대입 연산자는 연산 방향이 오른쪽 > 왼쪽으로 실행된다.
//대입 연산자만 오른쪽부터 실행
int m1 = 100;
int m2;
int m3;
		
//m2 = m1;
//m3 = m1;
		
m3 = m2 = m1;
		
System.out.println(m3);

//결과
100
//복합 대입 연산자
int n = 10;
		
//n에 1을 추가하시오. > n의 값에 1을 더한 값을 n에 다시 넣어라 > 누적
n = n + 1 ;
		
System.out.println(n);
		
n += 1;
System.out.println(n);

  • 증감연산자
: ++(증가), --(감소)
: 1항 연산자
: 피연산자는 숫자형을 가진다.
: 누적 연산을 한다.
: 기존의 값에 1을 더한다. 1을 뺀다.

❗ 주의 할 점 ❗

연산자와 피연산자의 위치를 바꿀 수 있다.

연산자의 위치에 따라 연산자의 우선 순위가 달라진다.

1. ++n: 전위배치(전치)
: 연산자 우선 순위가 가장 높다. (괄호보단 낮음)
2. n++: 후위배치(후치)
: 연산자 우선 순위가 가장 낮다. (대입 연산자보다 낮음)

//전위배치

int n = 10;
int result = 0;
		
//result = 10 + ++n;
		
++n; 
result = 10 + n;
		
System.out.println(result); //결과: 21

```java
//후위배치
int n = 10;
result =0; 
	
result = 10 + n++;
		
System.out.println(result); //결과: 20
System.out.println(n); //결과: 11

  • 조건 연산자
? :
- 3항 연산자
- A ? B : C
- A : boolean > 조건으로 사용
- B,C : 상수,변수 > 연산의 결과로 사용
- A가 참이면 B를 반환, 거짓이면 C를 반환
int age = 25;
		
System.out.println(age >= 18 ? "통과" : "거절");
// 조건문(if문) 역할
  • 비트 연산자
각 숫자의 비트를 비교해 새로운 숫자 반환 
//비트 연산자
a = 10;
b = 5 ;
		
System.out.println(a & b); //0
System.out.println(a | b); //15




profile
하루를 정리하고 기록합니다.

0개의 댓글