클라우드 스쿨/강의 정리

6주차 - JAVA

qqlzzb 2023. 11. 22. 09:52
기간 230612 - 230616
배운 내용 JAVA

 

JAVA

1. JAVA의 특징

1) oop. 강력한 객체지향. 전부 클래스 안에
2) 플랫폼(hw+os)에 독립적
hw, os 종류 매우 다양. 플랫폼 다르면 기계어 다름. 포팅(porting)이 어렵다
JVM만 있으면 한번 컴파일한 거 어떤 플랫폼에서도 실행 가능.

 

2. JVM / JRE / JDK

JVM : 기계어 통역, 메모리 관리, Garbage collection(가비지 컬렉션)을 수행

JIT : 인터프리터(JVM 안에 있음)

 

JVM 안에
1. class loader
2. bytecode 검증기
3. JIT 컴파일러

JRE(Java Runtime Environment)

: JVM + ... 자바실행환경 (운영시)

java 프로그램 실행하는 데 필요


JDK(Java Development Kit)

: JRE + 개발 유틸리티 (개발 시)

java 프로그램을 개발하는 데 필요

 

3. 변수

기본형 - 변수에 값을 저장.
참조형 - 변수에 주소를 저장. 주소가 가리키는 곳에 값이 있음

java는 문자 유니코드로 저장. 유니코드는 2byte라서 char는 한 글자 저장하는데 2byte 필요

실수의 default는 double
float f = 3.14 하면 오류
3.14는 기본적으로 double형으로 생성
float f = 3.14f라고 해야 함
double이 디폴트지만 명시해주고 싶다면 3.14d

e3 = 10^3


byte / short 연산 시 결과 int형으로 바꿔줌

묵시적 형변환 : 큰 자료형에 작은 자료형 대입
명시적 형변환 : (자료형) 변수/값

4. Shift 연산

x>>2  ->  x*2^-2(x/2^2)
>>> 를 사용하면 부호비트까지 shift. 나눗셈/곱셈 위한 게 아니라 비트 이동시키려 할 때 이용

 

5. label

outer: for(int i=0; i<10; i++)
        {
            for(int j=0; j<10; j++)
            {
                if(j==1) {
                    break outer;
                }
            }
        }

첫 번째 for문에 lable 주면 break나 continue 할 때 해당 for문 지정 가능

6. 클래스

클래스는 관련 있는 데이터와 함수 묶음.

하나의 파일에 public class 한 개만 올 수 있다.
public class이름과 파일 이름이 다르면 안 됨.
하나의 파일에 class는 여러 개 가능

 

public class EX02 {
}
class AA {
}

 

위와 같이 클래스가 있으면 컴파일 시
EX02.class
AA.class 생성
=> 클래스마다 생성

public class Ex02_FilenameEx {
    public static void main(String[] args) {
        System.out.println("EX02");
    }   
}

class AA{
    public static void main(String[] args) {
        System.out.println("AA");
    }
}

 

이렇게 두 개 다 메인 가지면 파일이름과 같은 클래스의 메인 수행 => EX02 출력
터미널에서 실행(JAVA/bin/java day02.AA)하면 각각 실행 가능

7. 자바의 변수의 종류

1) 클래스(static) 변수
2) 인스턴스 변수
3) 지역 변수

지역변수는 변수 선언을 메서드 안에서 하면 생성
클래스/인스턴스 변수는 메소드 밖에서 생성
자신 감싸는 block 내에서만 유효.
반드시 초기화해야 함.

 

8. 자바 메모리 영역

1) Method Area : static 변수, class 정보(바이트 코드..)
2) Heap : 객체 (instance 변수)
3) Stack : 지역변수

class Emp { //Emp라는 클래스. 데이터 타입
    int empno; //instance 변수
    String name; //instance 변수
    String dept; //instance 변수
    static int cnt; //사원수. 모든 객체가 같은 값을 가짐. 모든 객체가 공유
}

 

9. java 배열

1) 배열 변수 선언 (모든 배열 변수는 reference type)

int [] data;
int data [];
Emp[] employees; // 객체도 마찬가지


2) 배열 객체 할당

data = new int[3];
// heap 영역에 생성. 자동초기화
employees = new Emp[2];


3) 값 할당

data[0] = 10;
employees[0] = new Emp[0];


1, 2, 3 동시에

int[] data = {1,2,3};
data = new int[] {1,2,3};

10. 2차원 배열

1) 2차원 배열 변수 선언

int[][] data2D;
int data2D[][];
int[] data2D[];


2) 배열 객체 할당

data2D = new int[2][3];

data2D = new int[2][]; // int 배열 2개 저장하는 변수 생성
data2D[0] = new int[3];
data2D[1] = new int[2];
// 행별로 열의 개수가 다르게도 만들 수 있음. 지그재그 배열


3) 값 할당

data[0][1] = 10;


11. 배열 정렬

-> Arrays.sort(배열)

 

Integer data [] = {1,2,3,4,5,6};
Arrays.sort(data,collections.reverseOrder());
-> 내림차순 정렬(배열을 Integer로 선언해야)

 

12. Exception

try{
   1
   2 //예외 발생
   3
}catch(Exception e){
   4
}
5

 

2번에서 예외 발생 시 3번 건너뛰고 4,5번 실행

 

13. 기타

static 메서드에서는 this. 사용불가. static은 메서드 area에 있어서 현재 객체를 가리키는 this를 사용할 수 없음
클래스 이름.변수 <--이렇게 사용해야 함

생성자에서 생성자 호출 가능
생성자에서 메서드 호출 불가능

정적바인딩 : 컴파일 시 타입에 따라 바인딩. static
동적바인딩 : 실행 시 실제 객체를 확인한 후 메서드

재정의 시 @Override 붙는 이유 : 
@ <-- 사람이 아니라 컴파일러와 실행환경이 보는 주석
@Override 하면 컴파일러에게 '이거 재정의하는 거야'라고 정보를 주는 것
만약 함수명에 오타가 나거나 대소문자 틀린 경우 @override라고 해주면 재정의 한다는 의미이므로 컴파일 오류 내줌

'클라우드 스쿨 > 강의 정리' 카테고리의 다른 글

8주차 - DB  (0) 2023.11.24
7주차 - JAVA  (0) 2023.11.23
5주차 - React  (0) 2023.11.21
4주차 - Node.js  (0) 2023.11.20
3주차 - AWS, Node.js  (0) 2023.11.19