맞는데 왜 틀릴까..?

Java 108

[Java] Multithread Programming 2 - multiBank

multithread programming을 이용해 계좌 A에서 B로 이체 후, A와 B의 계좌 잔액을 들여다보는 프로그램을 만들어보자 Account 클래스 계좌 Account 클래스 생성 입금과 출금, 잔액을 보여주는 메소드 생성 public class Account { String accountNo; String ownName; int bal; Account(String accountNO, String ownName, int bal){ this.accountNo = accountNO; this.ownName = ownName; this.bal = bal; } void printAccount() { System.out.println("계좌번호: " + accountNo); System.out.print..

Java 2022.12.18

[Java] Multithread Programming

Multithread thread가 둘 이상인 프로그램을 Multithread라고 한다. main 메소드의 첫 번째 명령문부터 실행 (main thread) 이 시작된다. main thread 는 program 이 시작되면 자동으로 시작되지만, 다른 thread 는 main thread 에서 만들어 시작해야 함. 이 thread 들은 시작되고 나면 main thread 와 동등한 레벨이 됨. main thread 가 끝나더라도 다른 thread 는 실행을 계속할 수 있음. main thread 가 끝났다고 해서 program 이 끝나는 것이 아니라, 모든 thread 가 끝나야만 완료되는 것임. Multithread programming은 아래 두 가지 방법으로 작성할 수 있다. java.lang.Thr..

Java 2022.12.18

[Java] Vector

벡터 Vector 클래스는 java.util 패키지에 있는 컬렉션의 일종으로 가변 크기의 배열을 구현하고 있다. 요소의 개수가 늘어나면 자동으로 배열 크기가 늘어나고 어떤 타입의 객체라도 저장 가능하다. 정수와 같은 기초 데이터도 오토박싱 기능을 이용하여 객체로 변환되어 저장된다. ArrayList와 거의 동일하나 Vector는 항상 동기화되어 있어서 스레드 간 동기화를 지원하지만 ArrayList는 지원하지 않는다. 또한 Vector가 ArrayList 보다 속도가 더 느리다. Vector 테스트 벡터 객체 vc에 정수형, 상수형을 넣어보자. import java.util.Vector; public class VectorTest { public static void main(String[] args) ..

Java 2022.12.18

[Java] 제네릭 프로그래밍, ArrayList

제네릭 프로그래밍 다양한 종류의 데이터를 처리할 수 있도록 클래스와 메소드를 작성하는 기법 제네릭 클래스 제네릭 프로그래밍을 활용하여 Box 클래스를 하나의 클래스로 여러 타입이 동작할 수 있도록 구현함 class Box{ private T data; //String, Integer도 클래스 이므로 가장 상위 클래스인 object로 선언해도 동작함 public T get() { return data; } public void set(T data) { this.data = data; } } public class MyBox { public static void main(String[] args) { Box b = new Box(); b.set("Hello World!"); //문자열 객체 저장 String..

Java 2022.12.18

[Java] 패키지

패키지 클래스와 인터페이스가 너무 많아지면 관리 하기 어렵고, 중복되지 않게 이름 붙이기도 어려움. 클래스나 인터페이스의 컴파일된 클래스(.class) 파일들을 하나의 디렉토리에 묶어 놓은 것. 계산기 프로그램 위와 같이 PackageEx 라이브러리에 서로 다른 패키지 app, lib를 만들고 각각 GoodCalc, Calculator를 작성하여 계산기 프로그램을 만들어보자! Calculator 클래스 추상 클래스 Calculator을 lib 패키지에 선언 package lib; public abstract class Calculator { public abstract int add(int a, int b); public abstract int subtract(int a, int b); public ab..

Java 2022.12.04

[Java] Interface - 도서 관리 프로그램

다중 상속이 가능한 인터페이스를 활용하여 도서 관리 프로그램을 작성해 보자 Lendable 인터페이스 CheckIn, CheckOut 함수를 추상 메소드로 가지는 대출가능 관리 인터페이스 Lendable 선언 public interface Lendable { final static byte BORROWED = 1; //상수지정 final static byte NORMAL = 0; abstract void checkOut(String borrower, String date) throws Exception; //abstract 생략가능, 추상메소드에는 public 생략가능 abstract void checkIn(); } CDInfo 클래스 CD 정보를 가지는 클래스 public class CDInfo { S..

Java 2022.12.04

[Java] Interface

Interface Java는 클래스의 다중 상속을 허용하지 않기 때문에 다중 상속 기능이 필요한 경우에 클래스 대신 interface를 활용하여 구현한다. interface의 특징 멤버는 추상 메소드와 상수로만 구성된다. 모든 메소드는 추상 메소드이며 선언시 abstract 생략 가능 모든 메소드는 public이며 선언시 public 생략가능 상수도 public static final을 생략하여 선언할 수 있음 인터페이스의 객체를 생성할 수 없다. 다른 인터페이스에 상속될 수 있다. public interface Clock { public static final int ONEDAY = 24; abstract public int getMinute (); abstract public int getHour (..

Java 2022.12.04

[Java] 상속 - 메시지 전송 프로그램

상속과 추상 클래스를 활용하여 다양한 메시지 전송 프로그램을 작성해보자. 추상 클래스 MsgSender 메세지 전송의 기본적인 기능을 가지는 MsgSender를 추상 클래스로 선언 abstract class MsgSender { String title; String sendName; public MsgSender(String title, String sendName) { this.title = title; this.sendName = sendName; } abstract void sendMsg(String recipnt); } EmailSender 클래스 추상 클래스인 MsgSender를 상속받아 데이터 필드를 추가하고 sendMsg 함수의 구체적인 기능을 구현하는 EmailSender 클래스 생성 pu..

Java 2022.12.04

[Java] 상속 - 계좌 프로그램

상속을 활용하여 다양한 계좌 프로그램을 작성해보자. Account 클래스 가장 기본 계좌 클래스인 Account.java 작성 public class Account { //final을 추가하면 상속이 금지됨 //abstract를 추가하면 객체가 추상화 되어 상속등 활용은 가능하지만 그자체의 객체 생성은 하지 못한다 String accountNo; String ownName; int bal; Account(String accountNO, String ownName, int bal){ this.accountNo = accountNO; this.ownName = ownName; this.bal = bal; } void printAccount() { System.out.println("계좌번호: " + acco..

Java 2022.12.02

[Java] 오버 로딩, 오버 라이딩

오버 로딩 정수형 + 정수형 정수형 + 실수형을 모두 수행하는 class Calc를 만들어보자 class Calc{ //모든 class에 extends Object가 생략되어 있다. int x,y=0; public void add(int x, int y) { this.x = x; this.y = y; int result = x+y; System.out.println(result); } public void add(int x, double y) { //함수 오버로딩 double result = x+y; System.out.println(result); } public String toString() { return getClass().getName() + "(" + x + "," + y + ")"; } }..

Java 2022.10.22