Java 관련
[Java] Calendar 클래스를 이용한 달력(calendar)
https://docs.oracle.com/en/java/javase/11/docs/api/index.html Overview (Java SE 11 & JDK 11 ) This document is divided into two sections: Java SE The Java Platform, Standard Edition (Java SE) APIs define the core Java platform for general-purpose computing. These APIs are in modules whose names start with java. JDK The Java Development Kit (JDK) AP docs.oracle.com api 보는 곳! calendar 클래스는 jaca.ba..
[Java] 달력(calendar) 만들기
/* * ① 서력 기원 연수가 4로 나누어 떨어지는 해는 우선 윤년으로 하고, * ② 그 중에서 100으로 나누어 떨어지는 해는 평년으로 하며, * ③ 다만 400으로 나누어 떨어지는 해는 다시 윤년으로 정하였다. */ 1. DayOfCalendar.java package com.cal01; //달력 만들기 //요일계산 -> year년 month월을 주면, year년 month월 1일의 요일 -> 요일만큼 공백 -> 7개씩 새로운 줄 public class DayOfCalendar { //윤년 계산 private static boolean isLeapYear(int year) { boolean leap = false; if((year % 4 == 0) && (year % 100 != 0) || (year..
[Java] 인터페이스(Interface)
1. 인터페이스란? 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 수 있지만 다중 상속을 할 경우 메소드 출처의 모호성과 같이 여러 문제가 발생할 수 있게 됩니다. 이와 같은 이유로 자바에서는 클래스를 통한 다중 상속을 지원하지 않습니다. 하지만 다중 상속의 이점을 활용하기 위해 인터페이스라는 것을 통해 다중 상속을 지원하고 있습니다. 인터페이스는 위에서 일종의 추상클래스라고 했지만 추상클래스와는 분명 다른 점이 존재합니다. 자바에서 추상 클래스는 추상 메소드를 포함할 수 있지만..
[Java] 메소드(method)
자바에서 class를 구성하는 요소는 필드(field)와 메소드(method)입니다. 메소드는 기능을 위한 명령들의 집합이라고 할 수 있는데요. 메소드를 이용하여 중복되는 코드의 반복적인 프로그래밍을 피할 수 있기 때문입니다. 그렇게 되면 프로그램에 문제가 생기거나 기능을 바꿀 때에도 보다 쉽게 유지 보수가 가능하게 되겠죠? 접근제한자 메모리타입 리턴타입 메소드명(파라미터or아규먼트 -> 매개변수){ //명령 } 메소드의 선언 형태는 위와 같습니다. 대표적인 메소드로 메인메소드가 있는데요. 메인 메소드의 형태를 보면 public(접근제한자) static(메모리영역) void(리턴타입) main(메소드이름)(String[] args(파라미터)){ } 이렇게 되는데요. 접근제한자 : 해당 메소드에 접근할..
[Java] Random()을 이용한 로또 코드(lotto code)
Random()은 숫자가 랜덤으로 나오게 해주는 클래스로 Scanner()와 사용방법은 거의 비슷합니다. java.util.Random을 import 해주고 new 키워드를 사용해 객체를 생성 후 사용 가능합니다. package com.test01; import java.util.Random; public class MTest{ public static void main(String[] args) { Random rd = new Random(); System.out.println(rd.nextInt(100)); } } 해당 코드를 출력하면 0부터 99까지의 숫자 100가지를 랜덤으로 출력시킵니다. 그리고 java.lang.Math 클래스를 이용해서 랜덤 숫자를 뽑아내는 방법도 있는데요. 간단하게 알아..
[Java] 얖은값 복사(Shallow copy), 깊은값 복사(Deep copy)
1. 얕은 값 복사(ShallowCopy) - 주소값 복사 package com.test01; import java.util.Arrays; public class ShallowCopy { //얕은 값 복사(주소값 복사) public static void main(String[] args) { int[] original = {10, 20, 30, 40, 50}; int[] copy = original; System.out.println(Arrays.toString(original)); System.out.println(Arrays.toString(copy)); System.out.println(original); System.out.println(copy); copy[2] = 300; System.out...
[Java] 배열(Array)
배열(Array)이란 같은 타입의 여러 값을 효과적으로 관리하기 위해서 사용하는데요. 배열을 알아보기 전에 메모리 구조부터 알아볼게요. 자바는 JVM(자바 가상 머신)을 통해 모든 프로그램이 실행됩니다. 즉, JVM은 자바 코드를 실행시키기 위한 가상의 기계라고 볼 수 있는데요. 자바로 작성된 모든 프로그램은 자바 가상 머신에서만 실행이 될 수 있습니다. 자바 프로그램을 실행시키기 위해서는 JVM이 반드시 설치가 되어있어야 하죠. 자바 프로그램이 실행되면 JVM은 운영 체제로부터 해당 프로그램을 수행할 수 있도록 메모리를 할당받습니다. 각 메모리의 영역은 static 영역, stack 영역, heap 영역으로 구분하고 있습니다. 먼저 static 영역에는 자바 프로그램에서 사용되는 클래스에 대한 정보와 ..
[Java] Scanner()
저희가 코드를 입력하고 컴파일하여 콘솔 창에 출력하는 과정을 계속했었는데요. 지금까지는 콘솔 창은 출력만 되고 입력이 되지 않았습니다. 하지만 콘솔 창에 입력을 받을 수도 있는데요. 이걸 가능하게 하는 것이 바로 Scanner입니다. Scanner를 사용하여 입력받을 수가 있는데 간단한 예제를 한번 볼까요? Scanner sc = new Scanner(System.in); System.out.println("숫자를 입력해주세요"); int a = sc.nextInt(); System.out.println("입력받은 a의 값 : " + a); sc.close(); 이런 형태로 사용됩니다. Scanner sc = new Scanner(System.in); 먼저 이 부분은 Scanner를 사용할 거라고 알..
[Java] for문, 별찍기
for문을 이용해서 다음과 같이 *을 출력하세요 //문제1. int num = 1; int xSum = 0; for(int i = 1; i
[Java] 제어문 - 반복문(for 문)
1. for 문 for(초기값; 조건식; 증감식) { 명령; } for 문의 기본 형태는 다음과 같습니다. 먼저 초깃값을 읽고 조건식이 참인지 아닌지를 판단하여 참일 경우 명령을 수행합니다. 명령 수행 후 증감식을 통해 값을 증가하거나 감소하고 다시 조건을 봅니다. 이러한 과정을 거짓일 때까지 과정 한 후 거짓이면 해당 문법에서 빠져나오게 되는 과정입니다. 잘 이해가 안 가신다고요? 코드로 확인해보겠습니다. for(int i = 1; i