본문 바로가기

분류 전체보기37

8. final - final 변수와 상수1~2 / final 변수와 참조 / 정리 8-1. final 변수와 상수1FinalLocalMain.java (지역변수)package final1;public class FinalLocalMain { public static void main(String[] args) { // final 지역 변수1 final int data1; data1 = 10; // 최초 한번만 할당 가능 //data1 = 20; // 컴파일 오류 // final 지역 변수2 final int data2 = 10; //data2 = 20; // 컴파일 오류 method(10); } // final 매개변수 static void method(final .. 2025. 2. 19.
7. 자바 메모리 구조와 static - 자바 메모리 구조 / 스택과 큐 자료 구조 / 스택 영역 / 스택 영역과 힙 영역 / static 변수1~3 / static 메서드1~3 / 문제와 풀이 7-1. 자바 메모리 구조자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나뉨메서드 영역: 클래스 정보를 보관. 이 클래스 정보가 붕어빵 틀이다.스택 영역: 실제 프로그램이 실행되는 영역. 메서드를 실행할 때 마다 하나씩 쌓인다.힙 영역: 객체(인스턴스)가 생성되는 영역. new 명령어를 사용하면 이 영역을 사용. 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간. 참고로 배열도 이 영역에 생성된다. 메서드 영역(Method Area): 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리. 이 영역은 프로그램의 모든 영역에서 공유.클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재.static 영역: static 변수들을 .. 2025. 2. 15.
6. 접근 제어자 - 접근 제어자 이해1~2 / 접근 제어자 종류 / 접근 제어자 사용(필드, 메서드) / 접근 제어자 사용(클래스 레벨) / 캡슐화 / 문제와 풀이 6-1. 접근 제어자 이해1접근 제어자(access modifier)를 사용하면,해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한 가능 스피커에 들어가는 소프트웨어를 개발할 때, 스피커의 음량이 100을 넘어가면 부품들이 고장난다.Speaker.java (volume 100 제한)package access;public class Speaker { int volume; Speaker(int volume) { this.volume = volume; } void volumeUp() { if (volume >= 100) { System.out.println("음량을 증가할 수 없습니다. 최대 음량입니다."); .. 2025. 2. 11.
5. 패키지 - 시작 / 패키지(import) / 패키지 규칙 / 패키지 활용 5-1. 패키지 시작쇼핑몰 시스템을 개발한다고 가정했을 때, 기능이 점점 추가되어 프로그램이 아주 커지게 됨매우 많은 클래스가 등장하고 이를 관련있는 기능들끼리 분류해서 관리 => 패키지pack.Data.java (패키지 위치에 주의)package pack; // 패키지를 사용하는 경우 항상 코드 첫줄에 package pack과 같이 패키지 이름 입력public class Data { public Data() { System.out.println("패키지 pack Data 생성"); }}pack.a.User.javapackage pack.a;public class User { public User() { System.out.println("패키지 pack.a 회원.. 2025. 2. 9.
4. 생성자 - 생성자가 필요한 이유 / this / 생성자(도입) / 기본 생성자 / 생성자(오버로딩과 this() ) / 문제와 풀이 4-1. 생성자 - 필요한 이유객체를 생성하는 시점에 어떤 작업을 하고 싶다면 생성자(Construct)를 이용 MemberInit.java (클래스)package construct;public class MemberInit { String name; int age; int grade;}MethodInitMain1.javapackage construct;public class MethodInitMain1 { public static void main(String[] args) { MemberInit member1 = new MemberInit(); member1.name = "user1"; member1.age = 15; member.. 2025. 2. 8.
3. 객체 지향 프로그래밍 - 절차 지향 프로그래밍1(시작) / 절차 지향 프로그래밍2(데이터 묶음) / 절차 지향 프로그래밍3(메서드 추출) / 클래스와 메서드 / 객체 지향 프로그래밍 / 문제와 풀이 3-1. 절차 지향 프로그래밍1 - 시작절차 지향 프로그래밍 vs 객체 지향 프로그래밍 절차 지향 프로그래밍절차를 지향하는, 실행 순서를 중요하게 생각하는 방식프로그램의 흐름을 순차적으로 따르며 처리하는 방식, "어떻게"를 중심으로 프로그래밍데이터와 해당 데이터에 대한 처리 방식이 분리 객체 지향 프로그래밍객체를 지향하는, 객체를 중요하게 생각하는 방식실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍하는 방식"무엇" 을 중심으로 프로그래밍데이터와 그 데이터에 대한 행동(메서드)이 하나의 '객체' 안에 함께 포함MusicPlayerMain1.java (절차 지향 음악 플레이어1)package oop1;public class MusicPlayerMain1 { .. 2025. 2. 7.
2. 기본형과 참조형 - 기본형vs참조형1(시작) / 기본형vs참조형2(변수 대입) / 기본형vs참조형3(메서드 호출) / 참조형과 메서드 호출(활용) / 변수와 초기화 / null / NullPointerException / 문제와 풀이 2-1. 기본형 vs 참조형1 - 시작변수의 데이터 타입기본형(Primitive Type):int, long, double, boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입기본형은 숫자 10, 20과 같이 실제 사용하는 값을 변수에 담고, 해당 값을 바로 사용할 수 있다.기본형을 제외한 나머지는 모두 참조형이다.기본형은 소문자로 시작.참조형(Reference Type):Student student1, int[ ] students 와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입참조형은 실제 객체의 위치(참조, 주소)를 저장한다. 객체와 배열이 있다.객체는 . (dot)을 통해서 메모리 상에 생성된 객체를 찾아 사용한다.배열은 [ ]를 통해서 메모리 상에 생성된 배.. 2025. 2. 6.
1. 클래스와 데이터 - 클래스 존재 이유 / 클래스 도입 / 객체 사용 / 클래스,객체,인스턴스 정리 / 배열 도입(시작) / 배열 도입(리팩토링) / 문제와 풀이 1-1. 클래스가 필요한 이유 (존재 이유)ClassStart1.java (변수 사용)package class1;public class ClassStart1 { public static void main(String[] args) { String student1Name = "학생1"; int student1Age = 15; int student1Grade = 90; String student2Name = "학생2"; int student2Age = 16; int student2Grade = 80; System.out.println("이름:" + student1Name + " 나이:" + student1Age + .. 2025. 2. 4.
9. 메서드 - 메서드 시작 / 메서드 사용 / 메서드 정의 / 반환 타입 / 메서드 호출과 값 전달 1~2 / 메서드와 형변환 / 메서드 오버로딩 / 문제와 풀이 1~2 9-1. 메서드 시작Method1.javapackage method;public class Method1 { public static void main(String[] args) { // 계산1 int a = 1; int b = 2; System.out.println(a + "+" + b + " 연산 수행"); int sum1 = a + b; System.out.println("결과1 출력:" + sum1); // 계산2 int x = 10; int y = 20; System.out.println(x + "+" + y + " 연산 수행"); int sum2 = x.. 2025. 1. 23.