기간 | 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 |