염몽 개발일지
Java. 동기화 - synchronized
Study/Java 2024. 8. 25. 14:06

Synchronizedsynchronized 메서드import static util.MyLogger.log;import static util.ThreadUtils.sleep;public class BankAccountV2 implements BankAccount { private int balance; public BankAccountV2(int initialBalance) { this.balance = initialBalance; } @Override public synchronized boolean withdraw(int amount) { log("거래 시작: " + getClass().getSimpleName()); // 잔고가 출금액..

article thumbnail
Java. Calendar 클래스의 add 와 roll 메소드
Study/Java 2023. 4. 3. 01:45

며칠 뒤, 일주일 전 등 날짜를 계산할 때 add()와 roll() 를 사용한다. - add() 메소드 : 특정 필드의 값을 증가 또는 감소 시키는 것이다. (다른 필드에 영향 O) 8월 31일에서 add를 사용하여 1을 더하면 9월 1일이 된다. - roll() 메소드 : 특정 필드의 값을 증가 또는 감소 (다른 필드에 영향 X) 8월 31일에 roll() 메소드로 1일을 더하면 8월은 그대로고 일만 1일로 변환이 된다. 캘린더를 출력하는 코드를 작성해보자! import java.util.Calendar; public class Main { public static void main(String[] args) { //지정하고 싶은 연,월 int year = 2023; //args[0] int month..

Java. 오버로딩 (overloading)
Study/Java 2022. 4. 2. 19:04

오버로딩 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다. 한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것을 '메서드 오버로딩' 또는 '오버로딩' 이라고 한다. 같은 이름의 메서드를 정의한다고 해서 무조건 오버로딩인 것은 아니다. 오버로딩이 성립되려면 아래와 같은 조건이 성립되어야 한다. 메서드 이름이 같아야한다. 매개변수 개수 또는 타입이 달라야 한다. 반환 타입은 관계없다. 이어서 아래의 코드도 오류가 난다. public class Main { public void test(Test t) { Test.add(3, 3); } } class Test { static long ..

Java. static 메서드와 인스턴스 메서드
Study/Java 2022. 4. 2. 00:38

인스턴트 메서드 인스턴스 생성후, '참조변수.메서드이름()' 으로 호출 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드 메서드 내에서 인스턴스 변수(iv) 사용가능 static 메서드 (클래스 메서드) 객체 생성없이 '클래스이름.메서드이름()' 으로 호출 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드 메서드 내에서 인스턴스 변수(iv) 사용불가 static 메서드와 인스턴스 메서드의 차이점은 인스턴스 변수(iv)를 사용하냐 안하냐의 차이다. 사용하면 인스턴스 메서드이고, 사용하지 않는다면 static 메서드이다. class MyMath { long a, b; long add() { //인스턴트 메서드 return a + b; //a,b는 인스턴스 변수(iv) 이다. } static ..

Java. return문, 반환값
Study/Java 2022. 3. 31. 02:07

return문 현재 실행 중인 메서드를 종료하고 호출한 메서드로 되돌아간다. void문은 마지막에 return문을 생략해도 된다. void printGugudan(int dan) { if (!(1 < dan && dan b) return a; else return b; } 반환값 반환타입이 void가 아닐때, return문옆에 써주는 값이 반환값인데 return문 옆에 반환값을 써줘야하고 반환값과 반환타입이 일치(자동형변환) 해야한다. - 자동형변환값은 상관없다. char,byte,short // 두 개의 정수를 받아서 그 차이를 절대값으로 반환 int diff(int a, int b) { int result = abs(a - b); return result; // 위 두개의 문장을 아래와 같이 한줄로 ..

Java. 메서드
Study/Java 2022. 3. 31. 00:30

메서드란? 문장들 {} 을 묶어놓은 것이라 생각하면 쉽다. - 작업단위로 문장들을 묶어서 이름 붙인 것이다. 메서드는 클래스안에 반드시 들어가있어야 한다. 메서드의 장점 코드의 중복을 줄일 수 있다. 코드의 관리가 쉽다. 코드를 재사용할 수 있다. 코드가 간결해서 이해하기 쉬워진다. 이외에도 메서드의 기능들은 많이 존재한다. 값(입력)을 받아서 처리하고 결과를 반환(출력) 한다. 메서드의 작성 반복적으로 수행되는 여러 문장을 메서드로 작성 하나의 메서드는 한 가지 기능만 수행하도록 작성 메서드 = 선언부 + 구현부 반환타입 메서드이름 (매게변수 목록 (입력)) // 선언부 { //메서드 호출시 수행될 코드 구현부 } 매게변수는 0개 ~ n개까지 넣을 수 있다. 하지만 출력값은 0 ~ 1개까지만 가능하다...

Java. 클래스와 인스턴스
Study/Java 2022. 3. 30. 23:51

객체지향 프로그래밍 (OOP) 캡슐화 상속 추상화 다형성 객체지향의 언어 장점 1. 코드의 재사용성이 높다. 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다. 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. 3. 신뢰성이 높은 프로그래밍을 가능하게 한다. 제어자의 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다. 클래스란? 설계도 데이터와 함수의 결합 사용자 정의 타입 인스턴스와 인스턴스화 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화 라고 하며 어떤 클래스로 부터 만들어진 객체를 인스턴스라고 한다. 클래스 변수는 (class variab..