[Java] 기초 2탄

Jinsung·2021년 4월 7일
2

JAVA

목록 보기
5/12
post-thumbnail

1. 연산자

연산자(operator) : 연산을 수행하는 기호(+,-,*,/ 등)

피연산자(operand) : 연산자의 작업 대상(변수, 상수, 수식)

최우선 연산자

  • () : 우선순위 변경을 위해 사용
  • [] : 배역의 크기나 첨자를 나타낼 때 사용

단항(Unary) 연산자

  • ~ : 1의 보수를 구해주는 연산자
    • 양수의 1의 보수의 부호는 음수가 되고 절대값 1증가
    • 음수의 1의 보수의 부호는 양수가 되고 절대값 1감소
  • !(NOT) : true -> false, false -> true 로 바뀐다고 생각하면 된다.
  • 부호 +, - : '+'는 형식적 제공이며 +, -를 앞에 붙여 부호바꿈 연산자로 생각하면 된다.
  • 증감 연산자 : 1씩 증가 하거나 감소하는 연산자, 증감연산자 위치에 따라 연산 결과가 달라질 수 있다.
    • ++ : 피연산자 1씩 증가
    • -- : 피연산자 1씩 감소
package project;

public class MainClass {
	
	public static void main(String[] args) {
		
		int a = 10;
		int b = -10;
		boolean c = true, d = false;
		System.out.println("~a = " + ~ a); // 보수 연산(양수 -> 음수 부호가 바뀌고 1증가
		System.out.println("~b =" + ~b);   // 보수 연산(음수 -> 양수 부호가 바뀌고 1감소
		System.out.println("!c = "+(!c)); // true -> false
		System.out.println("!d = "+(!d)); // false -> true
		System.out.println("-a ="+ (-a)); // -(10)
		System.out.println("-b ="+ (-b)); // -(-10)
		
		System.out.println("a = "+ a + ",\tb =" + b);
		
		System.out.println("a = "+ a++ + ",\tb =" + b++); // 증감을 하기전에 값을 출력
		System.out.println("a = "+ a + ",\tb =" + b); // 그 후 증감하여 출력
		System.out.println("a = "+ ++a + ",\tb =" + ++b); // 증감을 한 후 값을 출력
		
		 
 }
}

결과값

~a = -11
~b =9
!c = false
!d = true
-a =-10
-b =10
a = 10,	b =-10
a = 10,	b =-10
a = 11,	b =-9
a = 12,	b =-8

산술 연산자

  • +, -, *, /, % : 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%)
    • 연산전에 데이터형을 일치시켜야한다.
    • 정수와 정수 나눗셈시 소수는 버려지고 정수만 출력된다.
package project;

public class MainClass {
	
	public static void main(String[] args) {
		
		int a = 10;
		int b = 20;
		System.out.println("a + b =" + (a+b));
		System.out.println("a - b = " + (a-b));
		System.out.println("a * b =" + (a*b));
		System.out.println("a / b = " + (a/b));
		System.out.println("a % b =" + (a%b));
		
 }
}

결과값

a + b =30
a - b = -10
a * b =200
a / b = 0
a % b =10

Shift 연산자

shift 연산자는 정수형데이터에서만 사용가능하고 2진수로 표현했을때 각 자리를 오른쪽 또는 왼쪽으로 이동

  • << : 연산자의 경우, 피연산자의 부호에 상관없이 자리를 왼쪽으로 이동시킵니다.(2의제곱만큼 곱한다고 생각하면 편함)
  • >> : 연산자는 음수인 경우 부호를 유지시켜주기 위해서 빈자리를 1로 채웁니다.(2의 제곱만큽 나눈다고 생각하면 편함)
  • >>> : 연산자는 부호는 상관없이 항상 0으로 빈자리를 채워줍니다.

간단히 말해서 32비트로 분해한 다음 해당 비트수 만큼 이동시키는 연산이라고 생각하면 된다.

** Intege 클래스 : 10진수를 2진수로 바꾸고 2진수를 10진수로 바꿔주는 함수


package project;

public class MainClass {
	
	public static void main(String[] args) {
		
		int temp;
		System.out.println(-8);
		System.out.println(Integer.toBinaryString(-8)); 
		
		temp = -8 << 2;
		System.out.println("2 << 3 = " + temp);
		System.out.println(Integer.toBinaryString(temp)); 

		temp = -8 >> 2;
		System.out.println("2 << 3 = " + temp);
		System.out.println(Integer.toBinaryString(temp));
		
		temp = -8 >>> 2;
		System.out.println("2 << 3 = " + temp);
		System.out.println(Integer.toBinaryString(temp));

		 
 }
}

결과값
-8
11111111111111111111111111111000
2 << 3 = -32
11111111111111111111111111100000
2 << 3 = -2
11111111111111111111111111111110
2 << 3 = 1073741822
111111111111111111111111111110

관계 연산자

관계 연산자는 이항 연산자로 피 연산자의 크기를 비교하는 연산자

  • <, >, <=, >=: 알거라고 믿습니다.
  • ==, != : 같거나 같지 않을때 사용
package project;

public class MainClass {
	
	public static void main(String[] args) {
		
		int a = 10;
		int b = 20;
		
		System.out.println("a < b = " +(a<b));
		System.out.println("a > b = " +(a>b));
		System.out.println("a <= b = " +(a<=b));
		System.out.println("a >=b = " +(a>=b));
		System.out.println("a == b = " +(a==b));
		System.out.println("a !=b = " +(a!=b));


		 
 }
}

결과값

a < b = true
a > b = false
a <= b = true
a >=b = false
a == b = false
a !=b = true

논리 연산자

논리 연산자는 이항 연산자로 조건의 참, 거짓을 비교하는 조건 논리 연산자와 비트 논리 연산자로 나뉜다

  • 조건 논리 연산자(||, &&) : boolean형의 값을 결과로 하는 조건식만 허용
    • '||' 은 OR 결합이고 '&&'은 AND 결합
  • 비트 논리 연산자(|, &, ^, ~) : 피연사자끼리 이진 비트 연산을 수행해서 결과를 정수로 반환하는 연산자( 정수형만 사용가능)
    • '|'은 OR, '&'은 AND, '^'은 XOR, '~'은 NOT

삼항 연산자

삼항 연산자는 조건 연산자라고도 하며 3개 의 피연산자를 필요로 하게 되는데 첫 번째 피연산자는 조건이며 두번째 피연산자는 조건이 true일 때 반환 값 세 번째 피연산자는 조건이 false일때 반환값 입니다.

  • 기본 형식 : 조건식? 식1:식2
package project;

public class MainClass {
	
	public static void main(String[] args) {
		
		int a = 10;
		int b = 20;
		
		System.out.println((a>b? true:false));
		
		System.out.println((a<b? true:false));


		 
 }
}

결과값

false
true

대입 연산자

대입연산자는 변수에 값 또는 수식의 연산 결과를 저장하는데 사용

  • 대입 연산자는 다른 연산자와 결합하여 사용할 수 있다.
    • a = a + 10 결합하면 a += 10으로 표현이 가능하다.

2. 배열 : Array

같은 자료형을 가진 연속된 메모리 공간으로 이루어진 자료구조 입니다.

배열은 연관성 있는 데이터(같은 자료형을 가진 변수)를 관리하기 편합니다.

배열 요소(element) : 배열을 구성하는 각각으 값
인덱스(index) : 배열에서의 의치를 가리키는 숫자

배열의 종류

  • 1차원 배열 : 같은 자료 형들끼리 모아둘 수 있는 묶음이 하나밖에 없는 경우
  • 다차원 배열 : 1차원 배열이 여러 개 있는 경우
  • 객체형 배열 : 객체를 참조하는 참조변수들의 묶음
  • 기본 자료형 배열 : boolean, char, int등과 같은 기본 자료 형의 배열

배열 선언 및 초기화 방식

  • 1번 : int 형으로 이루어진 arr라는 이름을 가진 배열을 선언, 그리고 int [][] 2개 가 있는 경우 앞에서 부터 행과 열이라고 생각하면 된다.
  • 2번 : 배열을 인스턴스형으로 생성
  • 3번 : int 형 변수를 3개 만듬.

인스턴스란 클래스에 속하는 객체를 말한다.

  1. 배열을 선언(생성) 후 값을 저장(초기화) 하는 방식
 package project;

public class MainClass {
	
	public static void main(String[] args) {
		
		int[] arr = new int[5]; 
		
        
		arr[0] = 1;
		arr[1] = 2;
		arr[2] = 3;
		arr[3] = 4;
		arr[4] = 5;
        
        	System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println(arr[3]);
		System.out.println(arr[4]);
        


		 
 }
}
  1. 배열(생성)과 값(초기화)을 동시에 진행하는 방식
package project;

public class MainClass {
	
	public static void main(String[] args) {
		
		int[] arr = {1, 2, 3, 4, 5};
		
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
		System.out.println(arr[3]);
		System.out.println(arr[4]);

		 
 }
}

결과값

1
2
3
4
5

0개의 댓글