Java 12

Java - Static과 JVM 메모리 모델 / class, object, instance의 상호관계

메인(시작)클래스는 왜 객체생성없이(New) 실행이 되나요?Java에서 메인(시작) 클래스는 특별한 역할을 맡고 있기 때문에, 객체를 생성하지 않고도 실행할 수 있습니다. 그 이유는 main 메서드가 정적(static) 메서드로 선언되어 있기 때문입니다. 자세히 설명하겠습니다:1. static 키워드의 의미Java에서 static 키워드는 클래스 수준에서 접근 가능하다는 뜻입니다.즉, static으로 선언된 메서드나 변수는 특정 객체(instance)에 속하지 않고, 클래스에 직접 속합니다.따라서 객체를 생성하지 않고도 클래스 이름만으로 접근할 수 있습니다.class MyClass { static void sayHello() { System.out.println("Hello, World..

Java 2024.12.02

Java - Constructor 생성자 메서드 / 클래스 모델 DTO, VO, DAO, Utility

생성자 메서드 (Constructor)**생성자(Constructor)**는 객체가 생성될 때 호출되는 특별한 메서드입니다. 생성자는 객체를 초기화하는 역할을 하며, 클래스의 이름과 동일한 이름을 가지는 메서드입니다. 자바에서는 생성자를 명시적으로 정의하지 않아도 기본 생성자가 자동으로 제공됩니다.특징클래스 이름과 동일:생성자의 이름은 반드시 클래스 이름과 동일해야 합니다.리턴 타입을 명시하지 않습니다(리턴 타입 자체가 없음 - return 이 없다고 해서 void 를 쓰면 안 되는 ).객체 초기화:객체 생성 시 호출되며, 객체의 필드(멤버 변수)를 초기화하거나 특정 작업을 수행할 수 있습니다.자동 호출:객체가 생성될 때 자동으로 호출됩니다.개발자가 명시적으로 호출할 수는 없습니다.종류:기본 생성자(De..

Java 2024.12.01

Java - 객체를 접근하는 권한 / Access Modifier / Package란? / 클래스 접근하는 방법

Java에서 Access Modifier는 클래스, 변수, 메서드, 또는 생성자에 대한 접근 수준을 제어하는 데 사용됩니다. 이를 통해 **캡슐화(encapsulation)**를 구현하고, 프로그램의 보안성과 안정성을 강화할 수 있습니다. Java는 네 가지 주요 접근 제어자를 제공합니다: public, protected, default(명시하지 않을 경우), 그리고 private. 이를 각 접근 수준에 따라 정리하고, 보호와 보안적 측면도 함께 설명하겠습니다.1. Access Modifier의 종류와 특징     Modifier같은 클래스같은 패키지다른 패키지의 서브클래스다른 패키지publicOOOOprotectedOOOXdefaultOOXXprivateOXXX1.1 public특징: 어디서든 접근 가..

Java 2024.11.29

Java - Method / static 정적/ parameter passing 매개변수 전달기법 / method overloading 메서드 중복정의 /

1. 메서드란?**메서드(Method)**는 클래스(Class) 내부에 정의된 코드 블록으로, 특정 작업을 수행하는 데 사용됩니다.메서드는 **일련의 명령어(코드)**를 묶어서 이름을 부여한 것으로 이해하면 됩니다.즉, 메서드는:코드를 재사용 가능하게 만들어줍니다.프로그램을 더 구조적이고 읽기 쉽게 설계하도록 도와줍니다.필요한 값(데이터)을 받아 계산하거나 작업을 수행한 뒤, 결과를 반환하거나 단순히 작업을 끝낼 수 있습니다.2. 메서드의 구성 요소Java에서 메서드는 아래와 같은 구조로 이루어져 있습니다:[접근제어자] [반환타입] [메서드 이름](매개변수 목록) { // 메서드의 내용 (명령어들) return 값; // 반환 타입에 따라 반환할 값 (void일 경우 생략)}각 구성 요소를 하..

Java 2024.11.28

Java - if, swich-case, for, while, break, continue

Java의 조건문과 반복문은 논리적인 사고를 활용하여 문제를 해결하는 데 필수적인 도구들입니다. 각 요소를 자세히 살펴보고 예제를 통해 이해해 봅시다.1. 조건문(1) if-else 문특정 조건이 참인지 확인하고, 조건에 따라 다른 코드를 실행합니다.기본 구조:if (조건식) { // 조건식이 참일 때 실행} else { // 조건식이 거짓일 때 실행}예제:int age = 20;if (age >= 18) { System.out.println("성인입니다.");} else { System.out.println("미성년자입니다.");}(2) switch-case 문하나의 변수에 대해 여러 값을 비교할 때 사용됩니다.if-else보다 코드가 간결해집니다.기본 구조:switch (변수) ..

Java 2024.11.26

Java - 연산자 (증가 연산자/ 감소 연산자/ 삼항 연산자)

증가 연산자, 감소 연산자, 삼항 연산자에 대해서 설명해줘Java에서 증가 연산자, 감소 연산자, 그리고 삼항 연산자는 코드에서 간결하고 효율적인 연산을 가능하게 해주는 중요한 연산자들입니다. 아래에 각각에 대해 상세히 설명하겠습니다.1. 증가 연산자 (Increment Operator)사용법:++ 연산자는 변수의 값을 1만큼 증가시킵니다.종류:전위 증가 연산자 (++variable)값을 증가시킨 후에 해당 값을 사용합니다.후위 증가 연산자 (variable++)현재 값을 먼저 사용한 후에 값을 증가시킵니다.예제 코드:int x = 5;// 전위 증가 연산자int y = ++x; // x는 먼저 6이 되고, y에 6이 할당됩니다.System.out.println("x: " + x + ", y: " + y..

Java 2024.11.25

Java - Scanner / (메모리 heap 영역)

Scanner 클래스는 Java에서 표준 입력 (키보드 입력)을 처리하기 위해 제공되는 유틸리티 클래스입니다. 주로 사용자가 데이터를 입력할 수 있도록 설계된 프로그램에서 사용됩니다. java.util 패키지에 포함되어 있으며, 다양한 데이터 타입의 입력을 처리할 수 있습니다.1. Scanner 클래스의 기본 개념Scanner는 Java의 표준 입력 스트림(System.in)을 통해 데이터를 읽습니다.사용자가 입력한 문자열을 파싱하여 원하는 데이터 타입으로 변환할 수 있습니다.공백(스페이스, 탭, 줄바꿈) 단위로 데이터를 구분하여 입력을 처리합니다.2. Scanner 클래스 사용법기본 구조import java.util.Scanner;public class Main { public static voi..

Java 2024.11.23

Java - Array - /Array vs. Class / array의 크기, 초기화, 기본값 / 2차원 배열과 다차원 배열 / Jagged array 가변 배열

클래스 구조개념클래스는 사용자 정의 데이터 타입으로, 데이터(필드)와 데이터를 다루는 메서드(기능)를 포함합니다. 객체 지향 프로그래밍의 핵심이며, 데이터를 구조화하고 기능을 캡슐화하는 데 사용됩니다.특징데이터와 메서드의 조합:클래스는 여러 데이터 필드와 메서드를 포함할 수 있습니다.예: name, age와 같은 데이터와 이를 조작하는 메서드를 포함.다양한 데이터 타입:클래스는 여러 데이터 타입의 필드를 포함할 수 있습니다.예: String, int, double, 심지어 다른 클래스도 포함 가능.객체 단위로 동작:클래스는 객체를 생성하여 사용하며, 객체는 클래스의 인스턴스입니다.구조화된 접근:클래스 내부의 필드와 메서드는 접근 제한자(private, public)로 보호할 수 있습니다.예제// 클래스 ..

Java 2024.11.22

Java - 문자자료형 공부 / 자료형과 형변환 casting / 새로운 자료형의 필요성 / 객체와 클래스에 대한 공부 /

char - 문자자료형! 문자를 숫자로 맵핑을 해놨다. - 이걸 수치형자료라고도 함.그래서 이런게 가능함.char c = 'A';라고 해서 c 를 출력하면 A 가 나온다.그런데,'A' 는 문자인데,int a = 'A';라고 하면 말이 되는가?정수형과 문자형은 자료형이 다른데?하지만, 'A' 는 아스키코드라고 문자랑 숫자로 맵핑을 해놓았어서,'A'에 해당하는 65 이라는 숫자가 있다.그래서int a = 'A' 라고 하면, a 에 'A' 를 저장(할당)하는게 아니라, 65 을 저장하는 것.그래서 a 를 출력하면, 아스키코드 수치인 65가 출력된다. 그리고 int b = 'B' + 1;이것도 가능하다. b 를 출력하면 66 + 1 이라서 67이 출력된다.    그 문자-숫자 표가 아스키코드에 있다. ASCII..

Java 2024.11.21

Java - JVM / 프로그래밍의 3대 요소 (변수 Variable, 자료형 Data Type, 할당 Assign) / 자료형에 대한 공부 / 수의 표현(2진수, 8진수, 16진수)

개발자에 의해서 Java Program 코드가 작성되었다..java 그것을 compile 하면, .class 파일로 bytecode로 변환이 된다. 그걸 중간어 코드라고 부름.그리고 그걸,JVM (Java Virtual Machine) 이 한 번 더 compile을 해서 .exe 파일로 컴파일해서 메모리에 로딩해서 실행한다.그러니까, Window, Mac, Linux 라는 OS가 있으면, 각각의 OS 에 맞는 JVM 이 설치가 되어 있으면개발자가 작성한 .java 코드 파일은 어떤 OS에 가더라도 실행이 가능하다.왜? 각각의 OS에 맞는 JVM이 있어서 걔네들이 2차 컴파일을 해서 각각의 OS에 맞게 .exe 파일로 만들어줄 거니까.그래서 OS 독립적이라는 것.이를 포함한 Java의 대표적인 특징들은 다..

Java 2024.11.20