기초를 잘 이해해야 하는 것은 너무나 당연한 사실이다. 기반에 따라 학습 방법이 달라 지고, 문제 해결 능력이 강화된다. 물론 다른 언어를 잘 알고 있고 개발 경험이 많더라도 자바 기반의 프로그램을 작성하는 데에는 한계가 존재한다.
기본을 이해하는 것이 기초의 핵심이다.
Basic Syntax 에서는 기본 용어, 명명 규칙, 예약어, 조건, 함수, 데이터 구조, 객체 지향 프로그래밍, 패키지 등을 배우게 된다.
- To print output use —> System.out.println();
- To take input from user —> Scanner or BufferedReader class can be used
자세한 내용은 다음 레퍼런스에서 학습할 수 있다.
- Basic Java Syntax (링크)
이에 대한 내용은 방대하여 아래에 정리할 것이다. - Java - Basic Syntax (링크)
Tutorialspoint 에서 만든 영상으로 8분간 자바에 대해 설명한다.
대소문자 구분 방법과 Class, Mthod, File 이름 규칙에 대한 설명과 스페셜 키워드, 주석에 대해 설명한다. - Java Tutorial for Beginners (링크)
자바 개발자인 Alex Lee 의 유튜브 영상으로 자바를 빠르고 쉽게 이해할 수 있도록 촬영한 영상이다.
13분의 영상을 통해 자료형(정수형, 실수형)을 설명하며 객체와 관련하여 Class, Method 와 조건문, 반복문, 예외처리 설명한다.
- 클래스(Class)
클래스는 클래스(객체) 인스턴스의 blueprint(plan) 이며 공통 속성과 메서드를 공유하는 논리적 템플릿으로 정의할 수 있다.
Example 1: House의 Blueprint 는 클래스이다.
Example 2: Real world 에서 Alice 는 "Human" Class의 Object 이다. - 객체(Object)
객체는 클래스의 인스턴스입니다. 행위와 상태를 가지고 있는 실체이다.
Example 1: 개, 고양이, 원숭이 등은 "동물" 클래스의 객체이다.
Example 2: 행위의 예로는 "도로를 달리고 있다" 가 있다. - 메소드(Method)
객체의 행위가 메소드이다.
Example 1: 연료 표시기는 자동차에 남아 있는 연료의 양을 나타낸다. - 인스턴스 변수 (Instance variables)
모든 객체에는 고유한 인스턴스 변수 세트가 있다. 객체의 상태는 일반적으로 이러한 인스턴스 변수에 할당된 값에 의해 생성된다.
Example 1: 콘솔에서 Java 프로그램을 컴파일하고 실행하는 단계
// javac GFG.java
// java GFG
import java.util.*;
public class GFG {
public static void main(String[] args)
{
System.out.println("GeeksforGeeks!");
}
}
참고 : 클래스가 Public 인 경우 파일 이름은 클래스 이름이어야 한다.
- 자바의 주석
자바에는 3가지 유형의 주석이 존재한다. 로버트 마틴 파울러가 주석을 권장하지 않기 때문에 패스한다. - 소스 파일 이름
소스 파일의 이름은 확장자가 '.java' 가 되며 public class 가 없는 경우 파일 이름은 다른 것이 될 수 있다.
예를 들어 GFG 라는 Public Class 가 존재할 경우 파일 이름은 GPG.java 가 되어야 한다. (gpg.java 는 불가능하다.) - 대소문자 구분
Java 는 대소문자를 구분하는 언어이다. 즉, 식별자 AB, Ab, aB 가 Java 에서는 다르다.
예를 들어 System.out.println("GeeksforGeeks"); 는 올바른 표현이지만 System 의 S 가 소문자가 되면 잘못된 표현이다. - 클래스 이름
i. 클래스의 첫 글자는 대문자여야 한다. (소문자는 허용되지만 권장되지 않음)
ii. 클래스 이름에 여러 단어가 사용되는 경우 각 내부 단어의 첫 글자는 대문자여야 한다. (카멜 케이스) 밑줄은 허용되지만(스네이크 케이스) 권장하지 않는다. 숫자와 특수문자도 허용된다. 하지만 특수문자는 특별한 목적(내부 및 익명 클래스)으로 사용되므로 클래스 이름에서는 사용하지 않는 것이 좋다. - public static void main(String [] args)
main() 메소드는 Java 프로그램의 진입점이며 main 에서부터 시작된다. - 메소드 이름
i. 모든 메소드 이름은 소문자로 시작해야 한다.(대문자도 허용되지만 소문자를 권장함)
ii. 여러 단어를 사용하여 메서드 이름을 구성하는 경우 내부 단어의 각 첫 글자는 대문자여야 한다. 밑줄은 허용되지만 권장하지는 않는다. 숫자와 특수 기호도 허용된다. - 자바의 식별자
식별자는 지역 변수, 인스턴스 및 클래스 변수, 레이블의 이름일 뿐만 아니라 클래스, 패키지, 모듈 및 메서드의 이름이기도 하다. ASCII 하위 집합뿐만 아니라 모든 유니코드 문자가 유효하다.
i. 모든 식별자는 문자, 특수 기호 또는 밑줄( _ )로 시작할 수 있다. 하지만 관례에 따르면 변수의 경우 문자는 소문자여야 한다.
ii. 식별자의 첫 번째 문자 다음에는 문자, 숫자, 특수 기호 및 밑줄을 조합하여 사용할 수 있다. 변수 이름에는 밑줄을 사용하지 않는 것이 좋습니다. 상수(static final attributes 및 enums)는 모두 대문자여야 한다.
iii. 가장 중요한 것은 식별자가 대소문자를 구분한다는 것이다.
iv. 키워드는 예약어이고 특별한 의미를 갖고 있으므로 식별자로 사용할 수 없다. - 자바의 공백
주석과 함께 공백만 포함된 줄은 빈 줄로 알려져 있으며 Java 컴파일러는 주석을 빈줄로 무시한다. - 접근 제어자(Access Modifiers)
이 제어자는 클래스와 메소드의 범위를 제어한다.
- 접근 제어자 : default, public, protected, private.
- 비 접근 제어자 : final, abstract, static, transient, synchronized, volatile, native. - 접근 제어자 이해하기
클래스, 패키지, 하위 클래스의 외부 패키지, 외부 패키지 등으로 나눌 수 있다. 이에 대핸 표는 마지막에 볼 수 있다. - 자바 키워드
키워드 또는 예약어는 일부 내부 프로세스에 사용되거나 사전 정의된 일부 작업을 나타내는 언어의 단어이다. 따라서 이러한 단어는 변수 이름이나 개체로 사용할 수 없다.
접근 제어자 표
Access Modifier | Within Class | Within Package | Outside Package by subclass only | Outside Package |
Private | Yes | No | No | No |
Default | Yes | Yes | No | No |
Protected | Yes | Yes | Yes | No |
Public | Yes | Yes | Yes | Yes |
자바의 스페셜 키워드
bstract | assert | boolean | break | byte |
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | short | static | strictfp | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
자바 기본기에 대한 아티클과 유튜브 영상을 보고 90프로는 이미 알고있는 내용이었다.
하지만 접근 제어자의 Default 라는 개념은 처음 알게 되었다. 이 부분에서 유익하였으며 앞으로의 시간을 어떻게 효울적으로 사용해야 할지 학습을 통해 개선해 나아가야 겠다.
package house; // 패키지가 동일하다.
public class HousePark {
String lastname = "park";
public static void main(String[] args) {
HouseKim kim = new HouseKim();
System.out.println(kim.lastname); // HouseKim 클래스의 lastname 변수를 사용할 수 있다.
}
}
HouseKim과 HousePark의 패키지는 house로 동일하다. 따라서 HousePark 클래스에서 default 접근 제어자로 설정된 HouseKim의 lastname 변수에 접근이 가능하다
참고자료
'Programming > 스프링 부트(Spring Boot)' 카테고리의 다른 글
리액티브 프로그래밍 RxJS Marbles 주요 연산자 자바로 구현하기 (1) | 2024.05.02 |
---|---|
[Spring Boot] - 003 DataTypes, Variables 데이터 유형 및 변수 (0) | 2024.04.09 |
[Spring Boot] - 001 Spring Boot 개발자 로드맵 (0) | 2024.03.26 |
[Spring Boot] - Hikari (0) | 2024.03.03 |
[Spring Boot] - Valid Annotation 정리 (0) | 2024.02.24 |