전체 글 41

[JAVA] Depdency, DI, Composition, Aggregation

1. Dependency (의존성)✔ 개념A 클래스가 B 클래스를 잠깐 사용하는 관계A가 동작할 때 B가 필요하지만, A가 B를 직접 소유하진 않음.즉, A는 B 없이는 기능을 수행할 수 없지만, B가 A와 완전히 묶여 있진 않음.✔ 예제 코드class BBB {    public void bbbMethod() {        System.out.println("BBB 메서드 실행!");    }}class AAA {    public void method1(BBB b) { // 의존성 (Dependency)        b.bbbMethod();  // AAA는 필요할 때만 BBB를 사용    }}public class Main {    public static void main(String[] arg..

[JAVA] 싱글톤

싱글톤    전체 프로그램에서 단 하나의 객체만 만들도록 보장해야하는 경우가 있다. 단 하나만 생성된다고 해서 이 객체를 싱글톤이라고함보통 객체의 생성 비용이 크거나, 공유해야 할 상태가 있는 경우 사용핵심 개념객체 생성 제한  :  private으로 만들어서 외부에서 new 키워드로 객체를 직접 생성하지 못하도록 막음유일한 인스턴스 관리  :  클래스 내부에서 static 변수로 유일한 객체를 저장전역 접근 방식 제공  :  static 메서드를 통해 객체를 가져오도록 함동작 방식외부에서 객체를 얻는 유일한 방법 : getInstance() 메서도 호출getInstance()메소드는 단 하나의 객체만 리턴하기 때문에 아래 코드 변수 1,변수2는 동일한 객체를 참조클래스 변수1 = 클래스. getInst..

[JAVA] 메소드

메소드    객체의 동작에 해당하는 중괄호 {} 블록을 말한다. 중괄호 블록이름이 메소드 이며, 메소드를 호출하면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다.리턴값이 있는 메소드는 반드시 return문을 사용해서 리턴값을 지정(없으면 컴파일 오류)리턴값이 없는 메소드 : void(return 필요 X)메소드 호출리턴타입 메소드이름 ( [매개변수선언, ** } ) {  실행코드 }변수 타입은 메소드 리턴 타입과 동일하거나, 자동 타입 변환이 될 수 있어야한다는 점 주의외부 클래스에서 메소드를 호출하려면 클래스로부터 객체를 생성    2. 메소드 오버로딩클래스 내에 같은 이름의 메소드를 여러개 선언하는 것조건은 매개 변수의 타입,개수,순서 중 하나가 달라야함외부 클래스에서 메소드를 호출하려면 클래..

[JAVA] 클래스

클래스    자바에서는 설계도가 바로 클래스이다. 클레스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다.    클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 한다.형태를 "정의"하는 문법, 데이터의 형태만 정의클래스 선언public class 클래스 이름 {  }인스턴스만 생성 가능그 참조값을 무조건 받아줘야지만 의미 있음클래스명 선언할 때 대문자객체 생성과 클래스 변수클래스로부터 객체를 생성하려면  → new 클래스( ) ;  //이 코드는 생성되자마자 사라짐new 연산자는 힙 영역에 객체를 생성시킨 후 객체의 번지를 리턴하도록 되어있음클래스 변수 = new 클래스 ( ) ;인스턴스생성 문법 = new 클래스명();인스턴스 하나하나 생성된 메모리생성자new 연산자로 호출되는 특별한 중..

[JAVA] 배열

배열이란?    같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터에 인덱스를 부여해놓은 자료구조같은 타입의 데이터만 저장할 수 있음한번 생성된 배열은 길이를 늘리거나 줄일 수 없음배열 선언/생성배열 변수는 참조 변수에 속함 배열도 객체이므로 힙 영역에 생성, 배열 변수는 힙 영역의 배열 객체를 참조배열 변수가 null 값을 가진 상태에서 변수[인덱스]로 값을 읽거나 저장하게 되면 - > NullPointer Exception[ ] : 배열 접근 연산자 int[] arr1 = new int[3];   //힙메모리 생성, 변수 생성, 참조값 넣고        arr1[0] = 70;타입[] 변수 = new 타입[길이]길이는 배열이 저장할 수 있는 값의 개수이미 배열 변수가 선언된 경우에도 new 연산..

[JAVA] Scanner

📌 scanner.nextLine()은 문자열(String) 반환그래서 int inputValue = scanner.nextLine(); 하면 오류 발생!❌ 왜 안 되는가?scanner.nextLine()은 입력을 문자열(String) 로 받음.하지만 int inputValue는 정수(int) 를 저장해야 해서 자료형 불일치 오류가 남. Scanner scanner = new Scanner(System.in);  int inputValue = scanner.nextLine(); // ❌ 오류 발생 (String을 int에 저장할 수 없음)🚨 오류 메시지:Type mismatch: cannot convert from String to int(타입 불일치: String을 int로 변환할 수 없음) 🚀 ..

[2주차] 연산자

연산자 종류연산자피연산자 수산출값기능산술+   -   *    /   %이항숫자사칙연산 및 나머지 계산문자열+이항문자열두 문자열을 연결대입=   +=   -=   *=   /=   %=이항다양우변의 값을 좌변의 변수에 대입증감++   --단항숫자1만큼 증가/감소비교==  >=  >  =  이항boolean값의 비교논리!  &  |  &&  ||단항이항boolean논리 부정, 논리곱, 논리합조건(조건식) ? A : B삼항다양조건식에 따라 A 또는 B 중 하나를 선택  √ 연산의 방향과 우선순위단항,이항,삼항 연산자 순으로 우선순위를 가짐산술,비교,논리, 대입 연산자 순으로 우선순위를 가짐복잡한 연산식에는 괄호 ()를 사용해서 우선순위를 정함피연산자 중 하나라도 문자가 들어가있으면 무조건 문자 연산됨    ..

[JAVA] Garbage Colletion(가비지 컬렉션)

Garbage Colletion    더 이상 사용되지 않는 객체를 자동으로 제거하여 메모리를 효율적으로 관리하는 기능   Java, Pytho, C# 등 메모리를 자동 관리하는 언어에서 사용됨  장점C, C++ 에서는 사용되지 않으며 개발자가 직접 메모리(free() 등) 해야함.Garbage Colletion 동작 방식:객체가 생성됨 → 힙(Heep) 메모리에 저장됨.사용 중인 객체 → 계속 참조됨(제거되지 않음)사용하지 않는 객체 → 참조가 끊어지면 가비지 컬렉터가 자동으로 제거함.메모리가 확보됨 → 새로운 객체를 위한 공간이 생김.Java의 Garbage Colletion 특징JVM(Java Virtual Machine)이 자동으로 실행개발자가 직접 delete 같은 명령을 쓸 필요 없음Stop-..

[JAVA] 형변환 | promotion, type casting

Promotion, Type Casting public class P6 {    public static void main(String[] args) {        int a = 10;        a = 20;        a = 30;        //a = 20.1; //타입 미스매치(중요한 표현) 오류뜸 선언한게 int기 때매 실수형은 못 들어감 정수형만 가능        double b = 20.1; // 변수명 중복 안됨        b = 30.3333;        b = 10;  //타입 미스매치!         System.out.println(b);    }}    1️⃣ Promotion (자동 변환)✅ 작은 데이터 타입 → 큰 데이터 타입 (자동 변환)💡 데이터 손실이 없으므로..

2주차 [개발 환경 세팅하기]

지난주에는 파이썬으로 기초를 맛보기라 했다면 이제 실전으로 자바를 배우기로했다  개발 환경 세팅 하기amazon corretto jdk 17 downloadhttps://corretto.aws/downloads/latest/amazon-corretto-17-x64-windows-jdk.zip위의 링크 참고  jdk17.0.14_7/bin 파일 안에 java : vm(virtual machine)javac : 컴파일러 파일 자바는 버츄얼머신으로 로드하고 실행시킴 개발 툴은 VScode로 진행한다 하셨다extensions 조립이 굉장히 중요함   preferences -> settings -> java configuration runtimes -> editing settings.json 설정환경 변수 설정과..