풀스택 웹🌐 개발자 지망생 🧑🏽‍💻
➕ 인공지능 관심 🤖


Categories



JAVA 기본-자바 연산자 및 배열

  1. 자바 연산자
  2. 자바의 배열

자바 연산자 및 배열

자바 연산자

자바 연산자는 산술, 비교, 논리, 비트 연산자 등이 존재하며 연산자 우선순위가 존재한다.

산술 연산자

  • 정수형, 실수형에 사용되며 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 등의 연산이 가능
자바 산술 연산자의 종류

| | 연산자 | 사용법 | 설명 | 비고 |
| ————- | —— | ——— | —————————————- | —- |
| 증감 연산자 | ++ | ++값 | 값 1 증가 후에 값을 취함 | 단항 |
| | | 값++ | 현재 값을 취한 후 값 1 증가함 | |
| | -- | --값 | 값 1 감소 후에 값을 취함 | |
| | | 값-- | 현재 값을 취한 후 값 1 감소함 | |
| 부호 연산자 | + | 값1 + 값2 | 덧셈 | 이항 |
| | - | 값1 - 값2 | 뺄셈 | |
| | * | 값1 * 값2 | 곱셈 | |
| | / | 값1 / 값2 | 나눗셈 | |
| 나머지 연산자 | % | 값1 % 값2 | 정수의 몫을 취한 후 나머지를 구하는 연산 | |

  • 단항 : 피연산자가 하나인 연산자
  • 이항 : 피연산자가 두개인 연산자

비교 연산자

  • 대소 비교나 객체의 타입 비교 등에 사용됨,
  • 수행 결과에 따라 truefalse의 boolean 타입 값 반환
비교 연산자의 종류
연산자 사용법 설명
> 값1 > 값2 값 1이 값 2보다 큰 경우 true
>= 값1 >= 값2 값 1이 값 2보다 크거나 같은 경우 true
< 값1 < 값2 값 1이 값 2보다 작은 경우 true
<= 값1 <= 값2 값 1이 값 2보다 작거나 같은 경우 true
== 값1 ==값2 값 1과 값 2가 같은 경우 true
!= 값1 != 값2 값 1과 값 2가 같지 않은 경우 true
instanceof 값1 instanceof 값2 값 1이 값 2 데이터 타입의 객체인 경우 true

논리 연산자

논리 연산자의 종류
연산자 사용법 설명
& 값 1 & 값 2 값 1과 값 2 모두 true인 경우만 true를 리턴
&& 값 1 && 값 2 위와 동, 단, 값 1이 false면, 바로 false 리턴 (단축 평가)
| 값 1 | 값 2 값 1이나 값 2 중 하나라도 true라면 true를 리턴
|| 값 1 || 값 2 위와 동, 단, 1이 true면 바로 true 리턴 (단축 평가)
! !값 값이 truefalse로, falsetrue로 변경

비트 연산자

  • 값을 비트(bit)로 연산하는 연산자
  • 메모리를 최대한 효율적으로 활용해야 하는 경우 비트 단위로 데이터를 관리
비트 연산자의 종류
연산자 사용법 설명
& 값1 & 값2 값 1과 값 2의 비트 단위 논리곱(and) 연산
| 값1 | 값2 값 1과 값 2의 비트 단위 논리합(or) 연산
^ 값1 ^ 값2 값 1과 값 2의 비트 단위 배타 논리합(exclusive or) 연산
~ ~ 값의 비트 단위 보수(not) 연산
>>> 값1 >> 값2 값 1을 비트 단위로 값 2만큼 오른쪽으로 이동하고 왼쪽에는 현재 부호 비트가 채워짐, 양수이면 부호비트 0이므로 0로 채워짐
>> 값1 >>> 값2 값 1을 비트 단위로 값 2의 비트 수만큼 오른쪽으로 시프트하고, 왼쪽에는 0이 채워짐
<< 값1 << 값2 값 1을 비트 단위로 값 2의 비트 수만큼 왼쪽으로 시프트하고, 오른쪽에는 0이 채워짐

기타 연산자

  • 대입 연산자
    • 변수에 값을 저장하기 위환 용도
    • 대입 연산자(=)를 중심으로 오른쪽의 값을 왼쪽에 대입하여 사용
대입 연산자의 종류
op= 의미
+= 변수 = 변수 + 수싱
-= 변수 = 변수 - 수식
\*= 변수 = 변수 \* 수식
/= 변수 = 변수 / 수식
%= 변수 = 변수 % 수식
&= 변수 = 변수 & 수식
|= 변수 = 변수 | 수식
^= 변수 = 변수 ^ 수식
<<= 변수 = 변수 << 수식
>>= 변수 = 변수 >> 수식
  • 조건 삼항 연산자 (?, :)
    • ?, : 형태의 삼항 연산자를 제공
    • 조건 제어문인 if-else 문장을 축약하여 사용
    • 단 가독성을 해치는 경우도 있으므로 사용에 주의
    • 형식 : 변수 = 조건 ? 값 1: 값 2
      • 조건이 참이면 값 1이 변수에 대입, 거짓이면 값 2가 변수에 대입

자바의 연산자 우선순위

| 우선순위 | 연산자 또는 표현식 |
| ——– | —————————- |
| 1 | () [] . |
| 2 | ++ -- ~ ! (데이터 타입) |
| 3 | * / % |
| 4 | + - |
| 5 | >> >>> << |
| 6 | > >= < <= |
| 7 | == != |
| 8 | & (비트 연산) |
| 9 | ^ |
| 10 | | (비트 연산) |
| 11 | && |
| 12 | || |
| 13 | ?: |
| 14 | = 및 각종 축약된 대입 연산자 |

  • 연산자의 우선순위는 고정이며, 외우기 보다는 괄호 ()를 이용하여 연산하자

자바의 배열

배열의 개념

  • 같은 타입의 데이터들의 모임
  • 메모리가 절약되고, 쉽고 간결하게 프로그램을 처리 가능
🧾️ 참조형 메모리 할당 예시
String greeting; //Ox12abcf 번지라는 주소가 저장됨
greeting = new String( " Hello, Java! "); // "Hello Java!"는 위 주소에 저장됨

일차원 배열의 선언과 사용

🧾️ 일차원 배열 선언과 사용 예시
// 배열 변수 선언 형식 

// 데이터타입 배열변수명[];
// 또는
// 데이터타입[] 배열변수명;
int scoreList[];
int[] scoreList;

String nameList[];
String[] nameList;

// 배열 객체 생성 형식:
// 배열변수명 = new 데이터타입[배열의길이];

scoreList = new int[100]; //100개의 정수형 데이터를 저장할 수 있는 배열 객체 생성
nameList = new String[5]; // 5명의 이름 문자열을 저장할 수 있는 배열 객체 생성

// 한꺼번에 선언 형식:
// 데이터타입 배열변수명 = new 데이터타입[배열의길이];
// 또는
// 데이터타입[] 배열변수명 = new 데이터타입[배열의길이];
// 한문장으로 표현 하기
int scoreList[] = new int[100];
int[] scoreList = new int[100];

String nameList[] = new String[5];
String[] nameList = new String[5];

// 배열 선언, 생성, 초기화 까지 한꺼번에 형식:
// 데이터타입[] 배열변수명 = {초기화할 원소들};// 배열의 길이는 원소들 수만큼으로 설정됨
// 또는
// 데이터타입 배열변수명[] = {초기화할 원소들};
// 또는
// 배열변수명 = new 데이터타입[] {초기화할 원소들};
// 초기화까지 한번에
int[] scoreList = { 45, 80, 100, 59, 80 };
scoreList = new int[] { 45, 80, 100, 59, 80 };
  • 변수명.length로 배열의 길이를 알수 있음,
  • 배열에 저장된 값을 참조하고자 할때 배열변수명[인덱스번호]로 참조 가능, 0번부터 n-1까지

    다차원 배열

  • 2 이상의 차원 배열을 의미함, 배열의 배열
🧾️ 다차원 배열 예시들
// 배열 변수 선언 형식 :
int scoreList [][]; // 데이터타입 배열변수명 [][];
int[][] scoreList; // 데이터타입[][] 배열변수명;
int[] scoreList[]; // 데이터타입[] 배열변수명 [];

String nameList[][];
String[] nameList[];
String[][] nameList;

// 배열 객체 생성 형식:
// 첫번재 배열첨자의 길이만 지정하여 생헝한 후에 일차원 배열들의 주소값을 순서대로 할당
// 배열변수명 = new 데이터타입[배열의 배열 길이][배열길이];
scoreList = new int[3][4];// 가로 3 x 세로 4의 이차원 배열 생성
// 또는
scoreList = new int[3][];
scoreList[0] = new int[2]; // 서로다른 길이의 이차원 배열 생성도 가능
scoreList[1] = new int[3]; // 배열변수명[인덱스번호] = new 데이터 타입[배열길이];
scoreList[2] = new int[4];

// 한꺼번에 선언 형식:
// 데이터타입 배열변수명 = new 데이터타입[배열의길이];
// 또는
// 데이터타입[] 배열변수명 = new 데이터타입[배열의길이];

// 배열 선언, 생성, 초기화 까지 한꺼번에 형식:
// 데이터타입[배열의 길이][] 배열변수명 = {초기화할 원소들};// 배열의 길이는 원소들 수만큼으로 설정됨
// 또는
// 데이터타입[배열의길이] 배열변수명[] = {초기화할 원소들};
// 또는
// 배열변수명 = new 데이터타입[배열의길이][배열의배열길이] {초기화할 원소들};