일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Java 로드맵
- 화살표 함수 this
- 스프링 데이터 전달
- Test NullPointerException
- ajax 장점
- 주요 네트워크 종류
- php 통신
- 스프링 HTTP 통신
- http 버전별 개선점
- 데이터베이스 언어 종류
- 컬렉션 배열 변환
- 데이터베이스 설계 순서
- ajax 단점
- mod_php vs php-fpm
- ajax 통신
- php 통신구조
- jwt 특징
- php 통신흐름
- ajax 특징
- AWS EC2 Spring 서버
- Java Roadmap
- http 버전별 단점
- 네트워크 구성 요소
- AWS Spring MySQL Redis
- jwt 탄생배경
- 배열 컬렉션 변환
- http 변화
- unknown database
- 테스트 필드주입 Null
- 스프링 값 받아오기
- Today
- Total
zkvn99
[Java] Basic Syntax 본문
Java는 정적 유형의 객체 지향 프로그래밍 언어이며, 플랫폼 독립적이다.
정적 유형은 프로그램의 변수와 표현식의 데이터 유형이 컴파일 시점에 결정되는 것
Java는 변수의 데이터 유형을 명시적으로 선언하여 정적 유형 언어라서
컴파일 시점에 타입 오류를 찾아내고 런타임 중에 발생할 수 있는 일부 오류를 사전에 방지함
플랫폼 독립적인 이유
Java의 개발 및 실행에 중요한 역할을 하는 도구들 덕분이다.
JDK(Java Development Kit) : Java 개발을 위해 필요한 도구들을 제공하는 패키지
- javac : Java 언어로 작성된 소스 코드를 컴파일하여 바이트 코드로 변환
JRE(Java Runtime Environment) : Java 프로그램의 실행 환경을 제공하는 패키지
- JDK에 포함된 컴파일러와 개발 도구들을 제외한 부분만 포함
- JVM : 바이트 코드를 읽어 들여 해당 플랫폼에 맞게 인터프리터 방식으로 실행하며, JIT(Just-In-Time) 컴파일러를 사용하여 바이트 코드를 기계어로 변환하여 실행
JVM(Java Virtual Machine) : Java 프로그램을 실행하는 데 사용 (운영체제와 Java 프로그램 간의 중간 계층)
- 바이트 코드 실행 : .class 파일에 있는 바이트 코드를 실행하는 데 사용
정리하자면,
- Java로 작성된 소스 코드 .java 파일
- JDK에 포함된 javac가 .java를 바이트 코드로 변환 .class 파일 (JVM에서 실행할 수 있는 중간 단계 코드)
- JVM이 바이트 코드를 읽어들여 해당 플랫폼에 맞게 해석하고 실행하면서 JIT 컴파일러를 사용하여 바이트 코드를 해당 플랫폼의 기계어로 동적으로 변환하고 최적화
Java에는 Primitive types과 Reference types의 두가지 데이터 유형 범주가 있다
Primitive types
Java 언어에서 미리 정의한 데이터 유형으로, 변수가 직접 값을 저장
정수형 (Integer Types) : byte, short, int, long
부동 소수점형 (Floating-Point Types) : float, double
문자형 (Character Type) : char
논리형 (Boolean Type) : boolean
메모리에 고정된 크기로 저장되며, 값이 바로 저장됨 -> 변수에는 실제 값 자체가 저장
스택 메모리에 저장 - 스택 메모리는 크기가 제한적이지만 데이터의 할당과 해제가 빠르고 접근 시간이 빠름
Reference types
객체가 가리키는 참조를 변수에 저장 - 즉, 변수에는 객체의 메모리 주소가 저장
- 객체는 힙 메모리에 생성되고, 변수는 해당 객체의 주소를 가리킴
// Person 클래스 정의
class Person {
String name;
int age;
}
// Person 클래스의 인스턴스 생성
Person person = new Person();
person.name = "John";
person.age = 30;
// person 변수는 해당 인스턴스의 주소를 가리킴 (Person 클래스의 객체를 참조하는 참조 변수)
참조 데이터 유형에는 사용자가 정의한 클래스, 인터페이스, 배열, 열거형(Enum) 등이 포함
힙 메모리는 동적으로 할당되는 메모리 영역으로, 객체와 배열 등의 데이터가 저장
Java의 가비지 컬렉터에 의해 사용되지 않는 객체들이 자동으로 해제
정리하자면
- 변수명과 원시 타입의 데이터는 스택에 저장
- 모든 객체 타입(String,Integer,ArrayList ..)은 힙에 저장
Identifier
대소문자를 구분 ex) count != Count
시작 문자는 문자로 시작해야 하며, 숫자로 시작할 수 없음
길이에 제한이 없지만 64KB 이상의 크기를 가진 식별자를 지원하지 않음
예약어 사용 금지
특수문자 _ $ 외의 문자는 사용 불가능
클래스 이름은 대문자로 시작해야 하며, 카멜 표기법을 따름 ex) Person, CarFactory
변수와 메서드 이름은 소문자로 시작해야 하며, 카멜 표기법을 따름 ex) age, printMessage
상수 이름은 모두 대문자로 작성하며, 단어들은 밑줄로 구분 ex) MAX_SIZE, PI_VALUE
식별자와 네이밍 규칙을 따르면 가독성 향상 및 유지보수 측면에서 용이함
Reserved Keywords
abstract | continue | for | new | switch |
assert(디버깅) | default | if | package | synchronized (동기화) |
boolean | do | goto | private | this |
break | double | implements | protected | throw |
byte | else | import | public | throws |
case | enum (열거형) |
instanceof | return | transient |
catch | extends | int | short | try |
char | final | interface | static | void |
class | finally | long | strictfp (부동 소수점 연산) |
volatile (변수가 캐시 X) |
const (Java 10~ 사용 X) |
float | native (외부 메서드 호출) |
super | while |
Java Program Structure
Java 프로그램의 기본 단위 - Class
- 클래스의 이름은 유효한 식별자여야 함 (위에 Identifier 참고)
- 클래스는 접근 제어자를 가져야 함 (public, protected, default, private)
- 클래스 파일의 이름은 해당 클래스 이름과 동일해야 함
public class ClassName { // ClassName - 클래스 이름
public static void main(String[] args) { // 메인 메서드 (프로그램의 진입점)
int i = 5; // 멤버 변수
int j = 3;
double k = a + b;
System.out.println( i + " + " + j + " = " + k); // 8.0
}
} // 중괄호로 감싸진 코드의 묶음 : 코드 블록 (변수의 스코프를 결정하는데 영향)
kamranahmedse의 자바 로드맵을 기반으로한 학습입니다
https://github.com/kamranahmedse/developer-roadmap
GitHub - kamranahmedse/developer-roadmap: Interactive roadmaps, guides and other educational content to help developers grow in
Interactive roadmaps, guides and other educational content to help developers grow in their careers. - GitHub - kamranahmedse/developer-roadmap: Interactive roadmaps, guides and other educational c...
github.com
* 참고 자료
https://www.baeldung.com/java-syntax
'Language > Java' 카테고리의 다른 글
[Spring] 데이터 전달 (0) | 2023.09.16 |
---|---|
[Java] Exception Handling (1) | 2023.08.01 |
[Java] 코딩테스트 자주 쓰는 메서드 (0) | 2023.06.27 |
[Java] Array & Collection (0) | 2023.05.27 |
[Java] int 배열 vs Integer 배열 (0) | 2023.05.26 |