수업 진행 

1~3교시 교재 진도 ( 자바, 오라클, JSP,  스프링 부트 프로젝트 등 )
4교시 시험 ( 오늘 공부한 것 퀴즈 )
점심 12시45분~13시55분
5교시 웹개발 ( 웹페이지 만들기 ) 안내
6교시 웹 페이지 만들기
7교시 과제 ( 오늘 만든 코드들 외우기 ) 
8교시 코드 리뷰 (자신이 만든 코드 설명하기)

 

 Oracle JDK 설치, Java11버전, 환경변수 설정 

이클립스 설치 및 셋팅. VSCODE 설치 및 셋팅 

강사 개인 1:1 상담 

HTML, CSS 간단하게 해보기

 

<!DOCTYPE html>
<html lang="en">

<style>
    .titles {
        color: white;
        text-align: center;
        padding-bottom: 100px;

        background-position: center;
        background-size: cover;

        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

        .titles > button {
        width: 200px;
        height: 50px;

        background-color: transparent;
        color: white;

        border-radius: 50px;
        border: 1px solid white;

        margin-top: 10px;
        }
S
        .titles > button:hover {
        border: 2px solid white;
        }




    #main { font-size: 100px; text-align: center;}
   
    #tables {background-color: aqua; margin-left: 200px; width: 500px; height: 150px;}
   
    a { text-decoration: none; color: black; }
    a:visited { text-decoration: none; }
    a:hover { text-decoration: none; }
    a:focus { text-decoration: none; }
    a:hover, a:active { text-decoration: none; }
   
   
   
</style>

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>처음</title>
   
</head>
<body>
    <div class="titles">
    <h1>처음 페이지</h1>
    <button>버튼</button>
    </div>

    <hr>    
    <div>
   
    </div>
    <table id="tables" border="1">
        <tr><td><a href="https://www.naver.com/">네이버</a></td><td><a href="https://www.daum.net/">다음</a></td><td><a href="https://www.google.com/">구글</a></td></tr>
        <tr><td>1111</td><td>1111</td><td>1111</td></tr>
        <tr><td>1111</td><td>1111</td><td>1111</td></tr>
    </table>
    <ul>
        <li>사과</li>
        <li>바나나</li>
        <li></li>
    </ul>
    <ol>
        <li>사과</li>
        <li>바나나</li>
        <li></li>
    </ol>
    <button>
        box
    </button>
</body>
</html>

 

 

 

 

 

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-05-23 6일차  (0) 2023.05.23
2023-05-22 5일차  (0) 2023.05.22
2023-05-19 4일차  (0) 2023.05.19
2023-05-18 3일차  (0) 2023.05.18
2023-05-17 2일차  (0) 2023.05.17

프로그램 오류

 

 

컴파일에러 : 컴파일 할 때 에러 ( 구문체크, 번역, 최적화 시 발생되는 에러 ) 실행 전 에러 표시

 

런타임에러 : 실행 중 발생되는 에러

 

 

예외 클래스의 계층 구조

 

 

Exception 과 RuntimeException

 

 

 

예외 처리하기_try_catch문

 

 

 

일치되는 예외처리 있음

 

비정상 종료 : 일치되는 예외처리 없음 ( 실행 중 예외발생 )

 

정상 종료 : 일치되는 예외처리 2번째에 있음 

 

 

 

printStackTrace(), getMessage()

예외 발생 시 예외객체 생성 -> 맞는 예외 catch블록 찾음-> 찾으면 catch블록 참조변수와 예외객체 연결

해당 catch블록 예외객체 사용 가능 

 

printStackTrace() : 예외객체 안에 예외정보 

getMessage() : 예외객체 안에 메시지

 

 

 

멀티 catch 블럭

catch ( 부모 | 자식 참조변수)x : 컴파일러 에러 -> catch (부모 참조변수) o

부모만해도 사용 가능 하니까 ( 의미상 동일 ) 

 

 

 

예외발생시키기 (throw)

 

 

 

checked예외, unchecked예외

RuntimeException을 예외처리 필수로 했다면 모든 코드에 try_catch블록을 사용해야 한다.

그래서 프로그래머가 작성해야되는 RuntimeException은 예외처리를 선택

 

 

 

 

메서드에 예외 선언하기, finally

예외를 발생시키는 키워드 throw와 예외를 메서드에 선언할 때 쓰이는 throws를 잘 구별

둘 다 선언해도 되지만 정석은 필수처리 예외만 선언 ( 체크드예외 ) 

try-catch문이 모든 메서드에 없어서 예외를 떠 넘기다가 마지막에는 JVM기본예외처리기가 처리 함

결과를 보게 되면 예외가 발생한 당시 출력( 예외가 처리된게 아님 실제로 처리 될라면 try-catch문이 필요 )

 

 

 

 

 

 

finally 블럭

 

 

 

사용자정의예외 만들기

포인트는 조상 선택과 String 매개변수가 있는 생성자를 넣어주기 

 

 

 

예외 되던지기 ( 다시 던지기 )

양 쪽에서 분담처리 할 때 사용됨 

 

 

 

연결된 예외

initCause : 원인예외(A)를 (B)에 포함 시킴 

연결된 예외 : 어떤 예외를 다른 예외로 감싸는 거

 

세부적인 예외를 포괄적인 예외로 감쌀 때 사용 

변경 하는 이유는 try-catch문을 필수에서->선택으로 바꾸기 위해서

 

'Java' 카테고리의 다른 글

java.lang패키지와 유용한 클래스(Strung 클래스)  (0) 2023.05.16
내부클래스, 익명클래스  (0) 2023.03.30
객체지향 프로그래밍 II  (0) 2023.03.27
객체지향 프로그래밍 I  (0) 2023.03.15
배열  (0) 2023.03.08

내부클래스( 종류, 특징, 선언 ) 

 

 

내부 클래스 종류는 변수(iv,cv,lv) 개념과 동일 iv, cv(static) -> 클래스 영역, lv ->메서드영역

  

 

 

 

내부 클래스의 제어자와 접근성

외부 class -> default, public만 가능, 내부 class -> 변수처럼 모든 제어자 가능

 

static멤버가 필요하면 static내부클래스이어야 한다.★

static클래스만 static멤버를 정의할 수있다.다른 클래스(iv, lv)에서 사용불가, static클래스도 다른 클래스 사용 불가

 

상수 사용 2가지 방법 ex) card

iv 경우 final int kind; ( static x ) : 카드마다 값이 달라야하지만 한번 값이 결정되면 변경 불가되야 한다.

cv 경우 final static card_num = 52 : 모든 카드 총 갯수 객체상관없이 52장 공통속성 

 

지역 내부 클래스는 메서드내에서만 사용 가능함 외부 출력 불가 

final static은 상수이므로 iv, lv 가능 ( static변수 선언은 불가 ) 

 

 

내부 클래스는 외부 클래스의 private멤버도 접근 가능 ( 클래스 내에 있으니 ) 

외부 클래스의 지역변수는 final이 붙은 변수(상수)만 접근 가능하다.(JDK1.8부터는 final 생략가능)

내부클래스의 객체가 지역변수보다 더 오래 존재 가능

 

 

 

 

 

 

익명 클래스

 

 

 

 

'Java' 카테고리의 다른 글

java.lang패키지와 유용한 클래스(Strung 클래스)  (0) 2023.05.16
예외 처리  (0) 2023.04.03
객체지향 프로그래밍 II  (0) 2023.03.27
객체지향 프로그래밍 I  (0) 2023.03.15
배열  (0) 2023.03.08

상속

 

 

 

 포함관계

 

 

 

클래스 간의 관계 결정하기

 

 

 

단일 상속

다중상속 시 각 각 부모에게 똑같은 메서드가 있을 시 충돌위험 있음  

 

 

 

Object 클래스 - 모든 클래스의 조상

 

 

 

오버라이딩

 

 

 

 

 

오버라이딩의 조건

 

 

 

오버로딩 vs 오버라이딩 ( 실질적으로는 상관 없음 ) 

 

 

 

참조변수 super

 

 

 

super()-조상의 생성자

해결법

1. 부모 클래스 ( Point )에 point(){};기본생성자 추가를 해주던가

2. 자식 클래스( Point3D )에서 super(x,y); 조상의 생성자 Point(int x, int, y)를 호출

Point3D(int x, int y, int z) { this.x = x;, this.y = y;, this.z = z; } → Point3D(int x, int y, int z) { super (x.y); this.z; } 변경

 

 

 

패키지

 

 

default package : 패키지 선언없는 class 파일들 해당 위치에 속하게 됨

com.codechobo.book : 해당 패키지 선언된 파일들 해당 위치에 속하게 됨

 

 

 

클래스 패스

 

클래스 패스에 패키지의 루트 입력전에는 패키지의 루트로 이동 후 파일 실행 가능

 

클래스 패스에 패키지의 루트 입력 

클래스 패스에 패키지 루트 입력 후에는 어느 경로에 있든 파일 실행 가능


 

환경변수 클래스패스값 확인 방법 

set classpath 

 

클래스패스 추가 ( jar파일 추가 예시 ) 

set classpath=C:\java\workspace\ch07\bin;(세미콜론)c;\jdk1.8\work\util.jar 

;(세미콜론)으로 구분자를 하면 뒤 경로로 계속 추가 가능 

 

jar파일을 클래스패스에 추가하기 위해서는 경로와 파일명을 적어주어야 한다.

 

 

 

import문

 

 

 

static import문

코드를 간결하게 할라고 사용 

하지만 클래스이름이 있으면 명확히 무슨 클래스인지 알수있으므로 되도록이면 클래스이름 사용 권장

 

 

 

제어자

하나의 대상에 여러 제어자를 같이 사용은 가능하나 접근제어자는 하나만 가능

순서는 상관없으나 보통 접근제어자를 맨 왼쪽에 그다음에 static 관례적으로 많이 사용

 

 

 

static - 클래스의, 공통적인

 

 

 

final - 마지막의, 변경될 수 없는

 

 

 

abstract - 추상의, 미완성의

 

 

 

접근 제어자

 

패키지 1

 

패키지 2

패키지 1, 패키지 2 구별하면서 접근제한 확인 하기

 

 

 

 

 

캡슐화

범위에 있는 값( ex_hour=0~23 )들로 변수들이 유지가 되야 되는데 = 대입연산자로 직접 접근 시 범위 외에 들어 값들을 막을 수 없음 ( public으로 접근제어자를 설정 해두면 외부로 부터 데이터 보호가 안됨 )

 

해결법 : iv들을 private 접근제어자 설정 ( 외부접근을 막고 ) 메서드를 통한 간접접근만 허용

( if문 사용해서 범위 값 설정  ) 범위 내에 값들만 데이터를 넣을 수 있게 설정 

 

class 내부에서 쓰는 메서드는 public으로 설정 할 필요 없음 private으로 설정

접근제어자는 범위가 좁으면 좁을수록 좋음  필요할때 넓이면 됨

 

 

 

 

다형성(polymorphism) ★

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참조변수의 형변환 ( 1 )

조상 자손 관계 참조변수는 서로 형변환 가능 

자손 자손 관계 참조변수는 서로 형변환 불가

참조변수로 사용할 수있는 멤버의 갯수를 조절 ( 리모컨 변경 ) 

 

 

자손타입 <- 조상타입 ( 형변환 생략 불가 ), 5개 <- 4개 (증가) 안전x,  자손 f2 = ( 자손 )c조상;

자손타입 -> 조상타입 ( 형변환 생략 가능 ), 5개 -> 4개 (감소) 안전o,  조상 c = ( 조상 )f2자손; 

 

 

 

참조변수의 형변환 ( 2 )

참조변수 타입만 따질게 아니라 참조변수가 가르키는 실제 인스턴스멤버들이 무엇인지 확인하고

실제 인스턴스의 멤버에 개수를 넘으면 안된다.

 

 

 

instanceof 연산자

 

 

 

 

매개변수의 다형성

해당 이미지처럼 코드 작성 시 다른 메뉴를 구매하고 싶으면 구매하고 싶은 메서드를 다 추가 해줘야 한다.

이 처럼하게 되면 메뉴가 많거나 메뉴가 추가 됫을 경우 하나씩 다 추가를 해줘야하는 번거로움이 있다.

 

void buy(Tv t) -> void buy(Product p) 자손 클래스를 조상 클래스로 변경

( 해당 메서드 한 줄로 모든 제품 구매 가능 ) 

다형성으로 인해 조상타입 참조변수로 자손타입 객체를 다룰 수 있음 

 

 

 

super(100), super(200) : 조상의 생성자 조상이 초기화 후 

class Product 호출 -> Product(int price) super(100)이 들어감,

bonusPoint 계산후 -> Tv1인스턴스 ( price:100, bonusPoint:10 ) 생성

void buy(Product p)로 이동 p(참조변수 0x100)→Tv1인스턴스(0x100)

 

 

 

여러 종류의 객체를 배열로 다루기

다형성의 장점 : 조상타입 참조변수 p로 자손 타입 객체 여러 종류를 다룰 수 있음 

 

 

Buyer 멤버로 참조변수 cart 추가 Product[10]배열로 설정 각 배열로 구매 가능

 i는 배열 번호 ( i=0 이면 cart[0] )  i를 증가시키면서 배열 0~9까지 차곡 차곡 저장

 

Vector : 가변 배열 가능, 배열의 길이 알아서 조절 , 사용자는 add(newTv()); 로 추가만 해주면 됨

( 11장에서 자세히 설명 ) 

Object elementData[ ]; :  Object[ ] 모든 종류의 객체 저장 가능, 최고 조상이기 때문에 

 

 

 

 

추상 클래스( abstract class )

추상 클래스 = 미완성 설계도 ( 미완성 메서드 포함 ) 

추상 메서드 = { 몸통 } 없는 메서드 

 

 

상속을 통해 추상 메서드를 완성 완전 클래스( abstract 안붙여줘도 됨 ) 

추상메서드 2개를 상속 받았는데 1개만 추상메서드를 구현→ 미완성 클래스 abstract 붙여줘야 됨 ) 

나머지 1개는 안보이지만 존재함 하지만 일부분이 구현이 안되있으므로 미완성 클래스

 

 

 

 

추상 클래스의 작성 ( 1 )

기존 클래스의 공통부분 선언부만 뽑아서 Unit 추상클래스로 정의

int x,y; , void stop() 선언부 모든 클래스에 똑같으니 공통부분으로 빠짐

move(int x, int y) 선언부는 일치하나 각자 움직이는 방식{몸통}이 틀리니  일치 하는 선언부만 뽑아냄

( 해병, 탱크 지상 / 수송선 공중 )

공통부분이 빠져서 코드중복 제거 간결해짐

 

 

Unit에 move 버튼이 있으니까 자손 move 선택 가능

for문 내용은 모든 자손 move(100,200) 이동  

( 해병, 탱크 지상 / 수송선 공중 ) 각자의 메서드로 이동해야되니 Unit에 move 버튼이 있어야 된다. 

Unit 리모콘에는 move버튼이 있으나 Object리모콘에는 move버튼이 없으니 에러

 

 

 

 

추상 클래스의 작성 ( 2 )

추상클래스( 미완성 설계도 )를  만들어두면 변경이 필요한 부분만 변경 가능 

단계별로 미완성설계도를 만들면 변경하고 싶은 부분으로 이동해서 변경 가능

 

추상화된 코드는 구체화된 코드 보다 변경에 유리하다.

 

 

 

인터페이스의 선언 상속, 구현

동그라미 ( 초록, 빨강, 파랑 ) : iv변수(data)

팔각형 ( 노란색 ) : 메서드

팔각형 껍데기( 사이드 ) : 인터페이스

객체끼리 이동할때는 메서드를 이용해서 접근 

 

인터페이스 : 핵심은 추상 메서드의 집합

 

추상클래스와 인터페이스 차이

추상 클래스 : 일반클래스인데 추상메서드를 가지고 있는거, 생성자, iv멤버변수를 가질 수 있다.

인터페이스 : 추상 메서드만 가지고 있고 그외 나머지 것들은 부수적인것, 구현된게 아무것도 없는 것

 

final 상수만 됨 ( 변수, iv, cv 안됨 ) 

모든 멤버가 public

모든 메서드가 추상메서드 ( abstract ) 

그러기 때문에 항상 final, public, abstract는 전부 생략 가능 ( 작성 안해도 됨 ) 예외 없음

 

 

 

 

인터페이스의 상속

인터페이스는 추상메서드의 집합이기 때문에 { 내용 } 이 없으므로 충돌문제 없음 다중상속 가능

 

 

 

인터페이스의 구현

implements ( 구현 ) : 인터페이스의 추상메서드 몸통{ } 만들기 ( 미완성 설계도 완성하기 )  

인터페이스를 구현한다는 것은 추상 메서드를 완성하는 것과 동일 

차이점은 extends 키워드말고 implements 사용

 

 

 

 

인터페이스를 이용한 다형성

 

인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능 ex)Fighter만 가능

인터페이스를 메서드의 리턴 타입으로 지정할 수 있다. ex)Fighter만 가능

 

 

 

인터페이스의 장점 ( 1 ) 

 

 

 

B에 인터페이스 X : A -> B 강한결합 상태, B를 C로 변경할라고 하면 A도 변경이 생김

B에 인터페이스 O : A -> B 느슨한결합 상태, B를 C로 변경할라고 하면 B만 변경, A는 변경 X  

 

 

 

인터페이스의 장점 ( 2 ) 

 

 

인터페이스는 어떤 상속구조에 있어도 구현 가능 ( 인터페이스는 다중 상속 가능 ) 

SCV, Tank, Dropship을 Repairable에 구현 ( 공통점 생김 ) Repairable에 자손이 됨

 

 

 

 

메서드 호출 ( 매개변수Repairable ) Repairable을 구현한 클래스의 객체만 가능   

 

 

 

디폴트 메서드와 static 메서드

'Java' 카테고리의 다른 글

예외 처리  (0) 2023.04.03
내부클래스, 익명클래스  (0) 2023.03.30
객체지향 프로그래밍 I  (0) 2023.03.15
배열  (0) 2023.03.08
조건문과 반복문  (0) 2023.03.03

객체지향 언어

 

1. 6장~7장(다형성 까지 ) 2~3회 반복으로 읽어서 이해하기

2. 6장~7장(다형성 까지 ) 객체지향 개념, 규칙 정리해서 하루에 한번씩 읽기

3. 2번을 꾸준히 진행하면서 다음 챕터 공부

4. 자바의정석3판 공부하면서 JSP, SPRING 이용 실습

5. 디자인패턴, 객체지향 개념 공부 

 

 

 

클래스와 객체

 

 

HW를 분석&관찰 ( 속성, 기능 ) -> SW로 속성은 변수로 기능은 메서드로 구현

 

 

객체와 인스턴스

 

 

 

하나의 소스파일에 여러 클래스 작성

 

 

 

객체의 생성과 사용

 

1. 클래스 작성(설계도) : class Tv { }

2. 객체생성(제품) : Tv t;[참조변수(리모콘)] / t = new Tv(); t;[참조변수(리모콘)] = Tv객체 연결

3. 객체사용(제품사용) : t;[참조변수(리모콘)]으로 변수 -> 메서드 사용 (호출)

 

 

 

 

객체의 생성과 사용 예제

 

객체가 2개 일때

 

 

 

t2 = t1 일때

 

 

 

 

 

 

 

 

객체 배열

 

참조변수 배열 생성 후 new Tv(); 객체를 만들어서 tvArr[0]~tvArr[2] 따로 넣어줘야 됨

 

 

 

클래스의 정의(1)-데이터와 함수의 결합

 

 

 

클래스의 정의(2)-사용자 정의 타입

 

 

 

선언위치에 따른 변수의 종류

 

 

 

 

 

클래스 변수와 인스턴스 변수

 

 

 

 

 

메서드란 ? 

 

 

 

 

 

메서드의 선언부

 

 

 

 

메서드의 구현부

 

 

 

메서드의 호출

 

 

 

메서드의 실행 흐름

 

 

 

 

 

return문

 

 

 

반환값

 

 

 

호출 스택(call stack)

 

 

 

기본형 매개변수 ( 중요 ) 코드만 보고 그려가면서 연습

변수의 값을 읽기만 할 수 있다. ( read only )

1. ParameterTest 클래스 메모리 로드 후 main 메서드 스택 호출 프로그램 시작

2. Data 클래스 메모리 로드 후 Data타입의 참조변수 d가 main메서드의 지역변수로 생성

 Data클래스의 인스턴스가 생성, 생성된 인스턴스의 주소가 참조변수 d에 저장  main(d:0x100)Data인스턴스(0x100)(x)

3. 참조변수 d가 가리키고 있는 인스턴스의 멤버변수 x에 10을 저장 main(d:0x100)→Data인스턴스(0x100)(10)

4. println메서드를 호출(스택에 쌓고) d.x값(10) 출력 후 스택에서 제거

5. change메서드 호출(스택에 쌓고) 참조변수 d가 가리키고 있는 인스턴스의 멤버변수 x(d.x)의 값을 넘겨준다.

    d.x의 값인 10이 change의 매개변수 x에 복사 change(x=10) ( int x ) 기본형 매개변수 

6. change메서드의 지역변수 x에 1000을 저장 change(x=10)change(x=1000)

7. println메서드를 호출(스택에 쌓고) x값(1000) 출력 후 스택에서 제거 후 change메서드가 사용하던 스택 제거

8. main 메서드로 돌아가 change를 호출한 다음 문장이 수행  

9. s.o.p("After change(d.x)"); 스택에 쌓고 After change(d.x) 출력 후 스택에서 제거 

10. s.o.p("main() : x="+d.x); 스택에 쌓고 main() : x= 10 출력 후 스택에서 제거 

11. main 메서드의 마지막 문장까지 수행 완료 main메서드가 종료되고 동시에 프로그램 종료

 

 

 

참조형 매개변수 ( 중요 ) 코드만 보고 그려가면서 연습

변수의 값을 읽고 변경할 수 있다. ( read & write )

1. ParameterTest 클래스 메모리 로드 후 main 메서드 스택 호출 프로그램 시작

2. . Data 클래스 메모리 로드 후 Data타입의 참조변수 d가 main메서드의 지역변수로 생성, Data클래스의 인스턴스가

생성, 생성된 인스턴스의 주소가 참조변수 d에 저장  main(d:0x100)Data인스턴스(0x100)(x=0)

3. 참조변수 d가 가리키고 있는 인스턴스의 멤버변수 x에 10을 저장 main(d:0x100)→Data인스턴스(0x100)(x=10)

4. println메서드를 호출(스택에 쌓고) d.x값(10) 출력 후 스택에서 제거

5. change메서드를 호출(스택에 쌓고), 매개변수로 참조변수 d를 넘겨준다. main메서드의 참조변수 d의 값

(Data인스턴스의 주소)은 change메서드의 매개변수d에 복사(0x100)된다.change(d=0x100)  ( Data d ) 참조형 매개변수

6.  change메서드의 지역변수인 참조변수 d가 가리키고 있는 인스턴스의 멤버변수 x에 1000을 저장

Data인스턴스(x=10)(x=1000)

7. println메서드를 호출(스택에 쌓고) d.x값(1000) 출력 후 스택에서 제거 후 change메서드가 사용하던 스택 제거

8. main 메서드로 돌아가 change를 호출한 다음 문장이 수행

9. s.o.p("After change(d)"); 스택에 쌓고 After change(d) 출력 후 스택에서 제거

10. s.o.p("main() : x="+d.x); 스택에 쌓고 main() : x= 1000 출력 후 스택에서 제거 

11. main 메서드의 마지막 문장까지 수행 완료 main메서드가 종료되고 동시에 프로그램 종료

 

 

 

기본형 매개변수

참조형 매개변수

기본형 매개변수, 참조형 매개변수 차이점

 

 

 

참조형 반환타입( 중요 )

 

 

 

static 메서드와 인스턴스 메서드

 

 

 

 

 

static을 언제 붙여야 할까?

 

 

 

메서드 간의 호출과 참조

 

 

 

 

오버로딩(overloading)

 

 

 

 

 

 

생성자(constructor)

 

 

 

기본 생성자( default constructor )

 

 

 

 

매개변수가 있는 생성자

 

 

 

생성자 this( ) 

 

 

 

 

참조변수 this

우측, 이름이 같기 떄문에 iv, lv 구별하기 위해 this 사용 ( this가 없으면 전부 lv로 간주 ) 

 

 

 

변수의 초기화

 

'Java' 카테고리의 다른 글

내부클래스, 익명클래스  (0) 2023.03.30
객체지향 프로그래밍 II  (0) 2023.03.27
배열  (0) 2023.03.08
조건문과 반복문  (0) 2023.03.03
연산자  (0) 2023.03.01

+ Recent posts