Java #1

황현근·2023년 4월 25일
0

Acorn-Academy

목록 보기
11/28
post-thumbnail

JAVA (자바)

  • 객체지향 프로그래밍 언어
  • 운영체제에 독립적이기 때문에, 운영체제에 따라 프로그램을 변경할 필요가 없음

💡 특징

  • 운영체제에 독립적

    • 자바로 작성된 프로그램은 OS나 하드웨어가 아닌, JVM하고만 통신함
    • JVM은 자바 프로그램으로부터 받은 명령을 OS가 이해할 수 있도록 변환하여 전달함
    • 자바는 OS 독립적이지만, JVM은 OS에 종속적이다.

  • 객체지향 언어

    • 상속, 캡슐화, 다형성이 잘 적용되어 있음

  • 동적 로딩 지원

    • 자바 애플리케이션은 여러 개의 클래스로 구성되어 있음
    • 실행 시에 모든 클래스가 로딩되지 않고, 필요한 시점에 클래스를 로딩하여 사용하는 동적 로딩을 지원
    • 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 할 필요 X
    • 애플리케이션이 변경되어도 비교적 적은 작업만으로 변경 사항에 대한 처리가 가능

JVM

컴파일 과정 JVM 개념 및 구조

  • OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다.

    자바 코드와 기계어의 중간 단계로, java 파일로 작성된
    자바 코드를 complile하면 .class 바이트 코드가 된다.


DataType

변수의 타입

기본형과 참조형

  • 자료형: 데이터의 종류에 따라 데이터가 저장될 공간의 크기와 저장형식을 정의한 것

  • 기본형(Primitive Type)
    • 실제 값을 저장
    • boolean, char, byte, short, int, long, float, double의 8개로 구성

  • 참조형(Reference Type)
    • null 또는 객체의 메모리 주소를 저장
    • 기본형을 제외한 나버지 타입들은 참조형에 해당
    • 참조형 변수를 선언할 때는, 클래스의 이름이 참조변수의 타입이 됨.

기본형(Primitive Type)

종류데이터형크기(byte/bit)표현범위
논리형boolean1 / 8true 또는 false
문자형char2 / 16'\u0000' ~ 'uFFFF' (16비트 유니코드 문자 데이터)
정수형byte1 / 8- 128 ~ 127
정수형short2 / 16-32768 ~ 32767
정수형int1 / 8-2147483648 ~ 2147483647( -21억 ~ + 21억)
정수형long8 / 64-9223372036854775808 ~ 9223372036854775807(-100경 ~ + 100경)
실수형float4 / 321.4E-45 ~ 3.4028235E38
실수형double8 / 644.9E-324 ~ 1.7976931348623157E308

 1. 논리형

  • boolean
  • true, false중 하나를 가짐
  • 주로 논리구현에 사용
  • 기본값 : false


    2. 문자형
  • char
  • 문자를 저장하기 위한 변수를 선언할 때 사용
  • 단 하나의 문자만을 저장할 수 있음.
    • 특수문자를 저장하고 싶은 경우, \t \n 등을 이용
  • 2byte를 할당 받음.
  • single quotation 을 이용해서 만든다.


    3. 정수형
  • byte, short, int, long
  • 각각 1byte, 2byte, 4byte, 8byte를 할당받음
  • 정수형 변수를 선언할 때는 기본적으로 int형을 사용하고, int형 범위를 넘어갈 때만 long을 사용
  • byte, short는 성능보다 저장공간 절약을 우선시할 때 사용


    4. 실수형
  • float, double
  • 빠른 연산속도나 메모리 절약을 우선한다면 float형을 사용
  • 더 큰 값의 범위나 더 높은 정밀도가 필요한 경우에는 double형을 사용
  • 실수형 데이터타입에서는 double형 데이터타입이 기본 데이터타입이다.

참조 타입(Reference Type)

  • 참조 타입은 원시 타입을 제외한 타입들(문자열, 배열, 열거, 클래스, 인터페이스)을 말한다.
  • Java에서 실제 객체는 Heap 영역에 저장되며 참조 타입 변수는 Stack 영역에 실제 객체들의 주소를 저장하여, 객체를 사용할때 마다 참조 변수에 저장된 객체의 주소를 불러와 사용하는 방식이다.

형변환(Casting)

  • 캐스팅(casting)이라고도 부름
  • 변수나 리터럴의 타입을 다른 타입으로 변환하는 것
  • 서로 다른 타입간에 연산을 수행하는 경우, 연산 전에 형변환을 통해 피연산자들의 자료형을 일치시켜야 함

형변환 방법

  • 형변환하려는 변수나 리터럴의 앞에 변환하고 싶은 타입을 괄호와 함께 붙여주면 됨.

  • 이 때 사용되는 (   )는 형변환 연산자라고 불림.
double num = 10.2d; 
float tmp = (float)num; // num의 값은 여전히 10.2d
  • boolean을 제외한 기본형들은 서로 형변환 가능

  • 기본형과 참조형은 서로 형변환 불가

연산자(Operator)

  • 프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산(operation)이라 한다.
  • 연산에 사용되는 표시나 기호를 연산자(operator)라고 한다.
  • 연산되는 데이터는 피연산자(operand)라고 한다.
    예) 산술연산 +, -, *, /, %
종류연산자우선순위
증감 연산자++, --1순위
산술 연산자+, -, *, /, %2순위
시프트 연산자>>, <<, >>>3순위
비교 연산자>, <. >=, <=, ==, !=4순위
비트 연산자&, |, ^, ~~만 1순위, 나머지는 5순위
논리 연산자&&, ||, !!만 1순위, 나머지는 6순위
조건(삼항) 연산자?, :7순위
대입 연산자=, *=, /=, %=, +=, -=8순위

1. 증감 연산자

  • 피연산자의 값을 1씩 증가 또는 감소시키는 연산자
  • 증감 연산자가 변수 앞에 위치하느냐 변수 뒤에 위치하느냐에 따라 결과 값이 달라진다.
// 증감연산자 ++, --
int x = 10;
//int y = x++;  // y = x; x = x + 1;
int y = ++x;    // x = x + 1; y = x;

System.out.println("x = " + x);
System.out.println("y = " + y);


2. 산술 연산자

int x = 1234;
System.out.println("x % 7 = " + (x % 7));  // 0 ~ 6 사이의 값을 반환
System.out.println("x % 2 = " + (x % 2));  // 0 ~ 1 사이의 값을 반환, x값이 홀수인지 짝수인지 구분에 유용

3. 시프트(Shift) 연산자

  • bit단위의 연산처리를 하며 자료의 가공을 위해 오른쪽 또는 왼쪽으로 이동하여 값에 대한 변화를 일으키는 연산자
// 쉬프트 연산자 >>, <<, >>>        
int x = 64;   // -64;
int n = 2;        
System.out.println("x >> n = " + (x >> n)); // 나눗셈, (x / 2^n)
System.out.println("x << n = " + (x << n)); // 곱셈,  (x * 2^n)
System.out.println("x >>> n = " + (x >>> n));

System.out.println("x >> 34 = " + (x >> 34));    // x / 2^(n % 32)
System.out.println("x << 34 = " + (x << 34));
System.out.println("x >>> 34 = " + (x >>> 34));


4. 비교 연산자

  • 결과가 항상 true 또는 false인 논리값(boolean)이어야 한다.


5. 논리 연산자

  • 피연산자의 값이 truefalse인 논리 값을 가지고 다시 한번 조건 연산하는 연산자
  • 논리 연산자의 경우 논리곱(&, &&), 논리합(|, ||) 연산자가 2가지로 사용이 가능하다. 이들의 사용법은 차이가 있으며, 일반적으로 &&, || 이 연산자를 주로 사용한다.


6. 대입 연산자

  • 특정한 상수 값이나 변수 값 또는 객체를 변수에 전달하여 기억시킬 때 사용하는 연산자


7. 비트 연산자

  • 피연산자 즉 연산의 대상이 되는 값들을 내부적으로 bit단위로 변경한 후 연산을 수행하는 연산자


8. 조건(삼항) 연산자

  • 하나의 조건을 정의하여 만족 시에는 ‘참값’을 반환하고 만족하지 못할 시에는 ‘거짓값’을 반환하여 단순 비교에 의해 변화를 유도하는 연산자
  • 피연산자가 3개라 해서 삼항 연산자라고도 부른다.
// 조건 연산자 cond ? true : false
char gender = 'F';
System.out.println(gender == 'M' ? "남성" : "여성");

// 어떤 수가 양수, 음수, 영인지 판별하시오.
int no = -12;
System.out.println(no == 0 ? "영" : ( no > 0 ? "양수" : "음수"));

0개의 댓글