- 자바는 컴파일러 언어다 (컴퓨터와 사람사이의 다리같은 역할이다)
- 이식성이란 서로 다른 실행환경을 가진 시스템 간에 프로그램을 옮겨 실행 할 수 있는 것을 말한다
- 객체지향프로그래밍이란 :
프로그램을 개발하는 기법으로 부품에 해당하는 객체를 먼저 만들고
이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법. 쉽게 말해서 공산품 조립
이때 사용되는 언어를 객체지향언어라고한다.
자바는 100퍼센트 객체 지향 언어이다.
객체를 만들기 위해 설계도인 클래스를 작성해야 하고,
객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다.
처음부터 객체를 고려하여 설계되어
캡슐화, 상속, 다형성 기능을 다른언어보다 가장 완벽하게 지원
캡슐화 : 연관된 목적을 가지는 변수와 함수를 하나의 클래스로 묶어
외부에서 쉽게 접근하지 못하도록 은닉하는 것이다.
상속 : 상위 클래스의 모든 멤버를 하위 클래스가 물려 받는 것.
다형성(polymorphism) : 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미
- 함수적 스타일 코딩 : 객체지향적개념X , c의 단순한 함수 위주의 코딩
11버전에서는 함수적 스타일 코딩방식인 람다식(Lambda Expressions)을 지원
람다식을 사용하는이유 :
컬렉션 요소를 필터링, 매핑, 그룹핑, 집계처리시 하는데 쉬워지고 코드가 매우 간결해진다.
Collection이란?
객체의 모음, 그룹
- 메모리를 자바가 직접 자동으로 관리
객체 생성 시 자동적으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면
쓰레기수집기garbage collector를 실행시켜 자동으로 사용하지 않는 객체를 제거해준다.
- 멀티스레드(Multi Thread) <자바의 핵심>
동시에 여러가지 작업 , 대용량 작업을 빨리 처리할경우 > 병렬처리필요 > 멀티스레드 필요
운영체제 별로 멀티스레드를 이용하는 API가 다름 > Java API로 일관된 생성 및 관리
프로세스가있고 프로세스마다 스레드가있다.
* API (Appliction Programming Interface)란?
라이브러리로 프로그램에서 자주 사용되는 클래스 및 인터페이스의 모음
JAVA SE(JDK)를 설치하면 자바시스템을 제어하기 위한 API를 제공
- 동적로딩 : 프로그램 실행 도중에 클래스를 메모리로 로딩을 해서 사용하는 것
- 자바는 오픈소스언어이므로 자바로 개발된 라이브러리도 오픈소스가 많다.
우리는 개발자기 때문에 JDK 사용
자바소스파일 (.java) > 컴파일러 (javac) > 바이트코드파일 (.class) > 자바가상기계 (java) > 기계어 > 실행
클래스 블록
public class Hello {
} //파일명:Hello.java
메소드블록
public static void main (String[] args){ //main은 메소드이름, (String[] args)은 매개변수
System.out.println("Hello,Welcome to the java world!"); //출력할문자열
}
1. hello.java 소스파일 생성 → 코드작성
2. Javac Hello.java cmd에 치고 엔터 해주면 컴파일러 완성 → Hello.class 바이트 코드 파일 생성
3. Java Hello JVM 구동명령어(java.exe) *exe는 생략가능
→ cmd에 명령어 치고 엔터하면 출력되어야 할 것들이 실행된다.
자바소스파일 (.java) > 컴파일러 (javac) > 바이트코드파일 (.class) > 자바가상기계 (java) > 기계어 > 실행
실행될때는, main이라는 메소드부터 시작해서 아래로 쭉 실행된다.
- class를 실행하는 순간 메모리로 올라간다
- class는 설계도면이라고 생각하면 된다.
- 자바는 자바스크립트와 다르게 타입을 맞게 지정해주어야 한다.
- 자바로만들어진 프로그램은 어떤 것이든 main이 무조건 시작점이다. 그 기준으로 실행한다.
- 자바는 규칙성이 명확해 에러잡기좋다.
자바는 엄격하여 꼭 세미콜론;을 넣어 잘 작성해야한다.
정수계산 int사용 보통은 거의 int를 사용한다.
첨부 이미지출처 : 이것이자바다
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 객체 지향 OOP ! 개념 이해 추가 정리 ☑ (0) | 2022.06.14 |
---|---|
[JAVA] 자바 객체와 클래스 ! 개념 이해 추가 정리 ☑ (0) | 2022.06.13 |
[JAVA] 22-06-13 자바의 시작과 Scanner ☑ (0) | 2022.06.13 |
[JAVA] 22-06-13 자바 변수와 데이터 타입 ☑ (0) | 2022.06.13 |
[JAVA] java 11 oracle 사이트 다운로드와 환경 변수 (0) | 2022.06.13 |