Skills/Java 50

Java - 변수

1. 변수(Variable) 변수는 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미합니다. 다시 말해 변수를 선언하는 것은 해당 자료형의 크기 만큼의 메모리를 사용하겠다는 의미입니다. int(자료형) age(변수 명) = 27;과 같이 선언한다면 위의 그림과 같이 메모리에 할당 될 것입니다. 이 때 변수를 참조 할 때는 메모리의 주소를 참조하는 것이 아닌 해당 주소에 저장된 데이터를 참조하게 됩니다. Parameter, Argument 이 글에서 Pass by value라는 개념을 설명하면서 나온 내용과 동일합니다. Java에서는 변수를 선언 위치에 따라 크게 구분하는데 멤버 변수와 지역 변수입니다. 2. 멤버변수 멤버 변수의 선언 위치는 클래스 영역으로 메소드 밖에서 선언된 ..

Skills/Java 2022.06.02

Java - this

0. 초기화와 생성자 this를 설명하기에 앞서, 생성자에 대해 설명을 해야될 것 같습니다. Java는 객체 지향 프로그래밍 언어로써 초기화에 해당하는 기능이 제공되는데 이를 생성자(Constructor)라고 합니다. 예시를 통해 한번 살펴보겠습니다. class Calculator { int left, right; public Calculator(int left, int right) { this.left = left; this.right = right; } public void sum() { System.out.println(this.left + this.right); } public void avg() { System.out.println((this.left + this.right) / 2); } } ..

Skills/Java 2022.05.31

Java - ceil,round

1. ceil() Java에서 Math.ceil() 메서드는 입력 패러미터보다 크거나 같은 가장 작은 정수 값을 double형으로 캐스팅합니다. 수학에서 올림이라고 생각하면 됩니다. (ceiling == 천장) double d1 = 10.5; double d2 = -10.5; double d3 = -10.6; System.out.println(Math.ceil(d1)); System.out.println(Math.ceil(d2)); System.out.println(Math.ceil(d3)); 다음과 같이 입력하고 출력을 해보겠습니다. 결과는 위와 같습니다. d1 10.5라는 실수형값을 입력하게되면 올림하여 11이라는 값을 출력하게 됩니다. 음수도 마찬가지입니다. 2. floor() floor()메서드..

Skills/Java 2022.05.31

Java - 상속과 조합

1. Inheritance(상속) Java에서는 상속이라는 개념이 존재합니다. 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)라는 개념이 있는데, 자식 클래스는 부모 클래스를 상속받아 그대로 쓸 수 있게 됩니다. 상속을 하는 이유는 이미 있던 클래스를 재사용하여 만들 수 있기 때문에 효율적이고, 개발 시간을 단축시킬 수 있다는 점이 있습니다. But, 상속을 하더라도 자식 클래스가 부모의 모든 것들을 물려받는 것이 아닙니다. 살펴보자면 1) 부모클래스의 private 접근 제한을 갖는 필드 및 메서드는 자식 클래스가 물려받을 수 없습니다. 2) 또한 부모와 자식 클래스가 서로 다른 패키지에 있다면, 부모클래스의 *default 접근 제한을 갖는 필드 및 메서드도 자식클래스가 물려받을 수 없습니다...

Skills/Java 2022.05.29

Java - Stack

https://refreshment-wg.tistory.com/63?category=1010294 Stack & Queue 1. Stack Stack은 선형 자료구조의 일종으로 자료를 쌓아 올리는 형태의 자료구조입니다. Data를 맨 아래부터 쌓기 때문에 가장 먼저 넣은 원소가 늦게 나오고, 나중에 들어간 원소가 가장 먼저 나 refreshment-wg.tistory.com 먼저 Stack에 대한 설명은 위의 글을 보고오시면 될 것 같습니다. 한 줄 요약하자면 LIFO(Last in First Out)의 형태를 가진다는 것입니다. 1. Stack 선언 import java.util.Stack; Stack name = new Stack(); // 예시로 char형 stack 선언 Stack stack = ..

Skills/Java 2022.05.23

Java - Parameter, Argument

Java에서 코드를 작성할 때, Parameter와 Argument라는 것으로 값을 전달하거나 선언을 합니다. 차이점을 한번 알아보겠습니다. 1. Parameter Parameter는 매개변수로 메서드의 입력 변수명입니다. 이는 실제로 메모리에 할당되어 있지 않은 변수로 텅 빈 하나의 공간입니다. import java.util.HashSet; import java.util.Iterator; class Solution { HashSetnumSet=new HashSet(); public boolean isPrime(int num){ if(num==0 || num==1) return false; int lim=(int)Math.sqrt(num); for(int i=2; i

Skills/Java 2022.05.20

Java new 연산자

메모리는 스택과 힙 영역으로 나눠져 있습니다. 스택은 정적(Static)이지만 힙은 참조형입니다.큰 용량을 차지하며 해체하기 전까지는 삭제되지 않습니다. https://refreshment-wg.tistory.com/67 이 글에서 Java에서는 가비지 컬렉션이 힙 영역을 정리한다는 역할을 한다고 했습니다. new는 클래스 타입의 인스턴스(객체)를 생성해주는 역할을 합니다. 이 때 heap 영역에 데이터를 저장할 공간을 할당받고, 그 공간의 참조값(refrence value)를 객체에 반환하고, 이어서 생성자를 호출합니다. aoClass sc=new aoClass(); 위의 코드를 보면, aoClass라는 타입으로 sc라는 객체를 선언한 뒤, new를 사용해 생성자인 aoClass()를 힙 영역에 할당..

Skills/Java 2022.05.10

Scanner & BufferedReader

알고리즘에서 Java로 입력을 받을 때 Scanner를 많이 사용합니다. Scanner는 공란과 줄바꿈을 입력값의 경계로 사용하며, 입력받은 즉시 자료형이 확정이 됩니다. 반면 BufferedReader는 버퍼를 이용해 입출력을 하는 방식입니다. 하드디스크를 비롯 키보드와 같은 외부 장치의 데이터 I/O는 시간이 걸리는 작업입니다. (CPU의 연산속도가 상대적으로 매우 빠름) 즉 키보드를 누를 때 마다 누른 문자의 정보를 이동시키는 것보다, 메모리에 버퍼를 둬서 데이터를 묶어서 전송하는 것이 더 빠릅니다. 여기서 버퍼는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역입니다. 위에서 설명했듯이, Scanner는 공란과 줄바꿈을 경계로 입력 값을 인식하기 때문에..

Skills/Java 2022.05.07

Java 구성 (class, method, instance)

1. Class 클래스는 '유사한 특성을 지닌 객체(Object)들을 묶어놓은 집합체'라고 표현 가능합니다. 예를 들어 게임을 할 때, 플레이어의 이름이나, 정보 등 구조를 명세하는 설계도를 클래스라고 합니다. public class Player{ String name; // 플레이어 이름 int charlv; // 캐릭터 레벨 } 위의 코드에서는 Player라는 클래스에 플레이어의 이름, 레벨이라는 변수들을 선언해주었습니다. 이는 Player라는 이름을 가진 클래스의 구조가 됩니다.  참고로 클래스의 이름과 객체 이름은 명사 혹은 명사구가 적합합니다. Customer, Accoount 등 이 좋은 예이며, Manager, Data, info 등의 같은 단어를 피하고 동사는 사용하지 않는 것이 좋습니다..

Skills/Java 2022.05.06

Java public static void main(String[] args)의 의미

public class Main{ public static void main{String[] args){ } } Java에서 모든 프로그램은 public static void main(String[] args)라는 함수로 시작합니다. 코드에 대해 의미를 살펴보겠습니다. 1. 제한자 먼저 public은 제한자 부분으로 모든 함수의 앞에는 이 함수를 어디에서 접근할 수 있는지 범위를 지정할 수 있습니다. 여기서 접근 제한자는 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 좋지많은 않습니다. 그런 이유에서 프로그래머가 객체들에게 접근 제한을 걸 수 있는데, 이를 Java에서는 접근 제한자라고 합니다. 접근 제한자의 종류로는 1) public : 모든 접근을 허용 2) protected : 같은 ..

Skills/Java 2022.05.04