programming/JAVA
Java - 캡슐화 (Encapsulation)
캡슐화란 OOP에서 객체의 데이터와 기능을 하나로 묶고 외부에 노출되지 않도록 숨김 처리하는 것을 말한다. 데이터 보호와 내부적으로 사용되는 데이터에 대한 불필요한 외부 노출을 방지할 수 있다. 캡슐화의 가장 큰 이점으로써, 외부로부터 객체의 속성이나 기능이 변경되지 못하게 막고, 데이터가 변경되더라도 다른 객체에 영향을 주지 않는 독립성을 갖는다. 따라서 OOP의 장점인 코드의 유지보수를 쉽게 하고 코드를 변경하더라도 오류의 범위를 최소화할 수 있다. 패키지 (Package) 패키지는 == 클래스와 인터페이스의 묶음 클래스가 관련된 속성과 기능을 묶어 관리하듯이 패키지는 그런 클래스들을 그룹 단위로 다시 묶어준다. 따라서 패키지를 통해 클래스의 관리를 쉽고 효과적으로 할 수 있다. 내가 폴더에 관련 파..
Java - 상속(Inheritance)
상속 (Inheritance) 상속이란 기존의 클래스를 재 사용하여 새로운 클래스를 만드는 것이다. 따라서 코드의 중복을 제거할 수 있다. 두 클래스를 상위 / 하위로 나누어 상위 클래스의 멤버들을 하위 클래스에게 상속시켜주는 것을 의미한다. 1. 생성자와 초기화 블럭은 상속되지 않는다 - 멤버들만 상속 2. 하위 클래스의 멤버 개수는 상위 클래스보다 항상 같거나 많다. 3. 자바에서는 단일 상속만을 허용한다. * 상속 클래스의 관계는 상위-하위 / 부모-자식 / 기반(base) - 파생된(derived) 클래스로 표현할 수도 있다. 상속을 할때는 extends 키워드를 사용하며, 아래와 같이 정의할 수 있다. class 상속클래스_이름 extends 상위클래스_이름 상위 클래스의 멤버 (필드, 메서드,..
Java - 생성자
생성자 (Constructor) 란? 인스턴스 생성 시 호출되는 인스턴스 변수 초기화 '메서드'이다. 따라서 일반적인 메서드처럼 클래스 안에서 선언된다. 생성자가 인스턴스를 생성하는 것이 아니다! 연산자 new가 인스턴스를 생성한다. new 키워드를 통해 인스턴스를 생성할 때 호출되는 것이 생성자(Constructor) 메서드이고 인스턴스 변수들을 초기화시키는 특수한 목적의 메서드라고 할 수 있다. 구조도 비슷하고 클래스 내에서 선언하는 것도 같지만 생성자는 메서드와는 달리 클래스 명과 동일한 이름을 가져야 하고 '리턴 값이 없다'라는 차이점이 있다. **생성자도 메서드 처럼 오버 로딩이 가능하기 때문에 하나의 클래스 안에 여러 개의 생성자가 존재할 수 있다. **매개변수는 있을 수도 있고 없을 수도 있..
Java - 메서드
메서드 (Method)? 메서드(method)는 특정 작업을 실행하는 일련의 문장들을 하나의 세트로 묶어놓은 것이다. 함수를 생각하면 비슷한데 예를 들어 제곱근을 구하는 메서드 Math.sqrt( )에 16을 넣으면 4를 반환한다. println( ), random( )등도 메서드이다. **다만 함수와 다른 점은 메서드는 입/출력 값이 없을 수 있다는 점 사용 이유 높은 재 사용성 중복된 코드의 제거 프로그램의 구조화 메서드의 구조 메서드의 구조는 선언부(header or method signature )와 구현부(body or method body)로 나눌 수 있다. 반환타입 메서드이름 (타입 변수명, 타입 변수명, ....) ----선언부 { 메서드 호출 시 수행될 코드 ----{ } 내부는 구현부 ..
Java - 필드와 변수
클래스 = {필드(속성) , 메서드(행위, 기능)} 필드(멤버 변수) == 클래스에 포함된 변수의 모임 (인스턴스 / 클래스(static) / 전역) 변수의 종류 변수에는 클래스 변수, 인스턴스 변수, 그리고 지역변수 총 3가지가 있다. 그리고 클래스 변수와 인스턴스 변수는 클래스 영역 안에 존재하므로 필드에 포함된다. 이 변수의 종류를 결정짓는 중요한 포인트는 '변수의 선언된 위치' 이므로 종류를 파악하기 위해선 변수가 어디에서 선언되었는지 확인하는 것이 매우 중요하다 또한 종류에 따라 각각 다른 유효 범위 (scope)를 갖는다. class Variables { // 클래스 영역 (필드) int iv; // 인스턴스 변수 static int cv; // 클래스 변수 (static 변수, 공유 변수) ..
Java - 클래스와 객체
클래스와 객체 클래스와 객체는 제품의 설계도와 제품의 관계라고 보면 편한데, 내 아이폰을 예를 들어보면 아이폰 설계도(클래스)는 아이폰이라는 제품(객체)을 정의한 것이고, 아이폰(객체)을 만드는 데 사용된다. 아이폰 공장을 생각해보면 아래처럼 정리할 수 있을 것 같다. 아이폰 클래스를 가지고 그 클래스 내에 정의된 객체의 기능과 속성을 토대로 아이폰 객체를 찍어낸다. 즉 설계도(클래스)를 잘 만들어 놓으면 제품(객체)을 만드는 일이 쉬워진다. JDK에서는 많은 유용한 클래스 들을 기본으로 제공하며 원하는 프로그램을 더 쉽게 개발할 수 있게 도와준다. 클래스 정의: 객체를 정의해 놓은 것 / 객체의 설계도 / 객체를 찍어내는 틀 용도: 객체를 생성하기 위해 사용된다. * 클래스는 객체 그 자체는 아니며 객..
입력받은 자연수의 소수 판별
코드스테이츠 코플릿 문제 中 자연수 num을 입력받고, num이 소수인지의 여부를 판별 해 boolean으로 반환한다. 먼저 if문으로 필터링을 한다. 2는 소수이므로 바로 true, 1 이거나 2로 나눴을때의 나머지가 0 인지 확인 내가 한 방법 { // 2는 소수라 바로 true를 리턴한다. if ( num == 2) return true; // 1이거나 2로 나눴을 떄 나머지가 0 이면 소수가 아니므로 false를 리턴한다. if (num == 1 || num % 2 == 0) return false; // 2부터 입력받은 자연수 사이의 모든 숫자를 하나씩 나눠서 나머지가 0인지 판별 for (int i = 2; i
Java - Output / Input
Output 3가지의 메서드: System.out.print( ) -> 소괄호 안의 내용을 단순 출력 (줄 바꿈 X) System.out.println( ) -> 소괄호 안의 내용을 출력 후 줄바꿈 System.out.printf( ) -> 형식 지정자(Specifier)를 이용해 여러 형식으로 출력해줌 Specifier Format %b Boolean %n 줄 바꿈 %d 10진수 %o 8진수 %x 16진수 %c 문자 %s 문자열 Input 1. Scanner를 호출한다. 2. Scanner의 객체를 생성한다. import java.util.Scanner; // Scanner 호출 public class consoleTest { public static void main(String[] args) { S..
Java - Type
기본 타입과 참조 타입 (Primitive type & Reference type) 기본 타입 (Primitive Type) 참조 타입 (Reference Type) 데이터의 실제 값 데이터의 주소 값 정수형 (byte, short, int, long), 실수형 (float, double), 문자형 (char), 논리형 (Boolean) 객체의 주소 값을 저장, 8개의 기본 타입을 제외한 나머지 public class main { public static void main(String[] args) { Object object = new Object(); System.out.println(object); } } -->> java.lang.Object@3ac3fd8b -->> @3ac3fd8b 가 메모리에..
Java - 변수 / 상수 / 타입변환
변수 (Variables) 데이터의 저장 공간 (String name1 = "Dog"; 에서 name1이 변수이다) 사용 이유: 메모리에 데이터의 저장공간 확보 협업시에 데이터에 이름 (변수명)을 붙여 소통 용이 데이터의 재사용 *변수명은 camelCase로 주로 사용하는데 두번째 단어부터 대문자로 시작해 구분 * 숫자로 시작하는 변수명이나 예약어는 사용 불가 (int 11go; int byte, int class 등) **변수명 짓는 게 가장 어렵다는 말도 있다. 상수 (Constants) 고정된 값, 프로그램 상에서 변해서는 안 되는 수 (생년월일, 원주율 값, 중력값 등등) 자바에서는 c와 다르게 final 예약어를 쓴다. 상수는 선언과 동시에 값을 초기화 해야한다. 예) final ASTRO_GR..
Java - [문자열] StringTokenizer
StringTokenizer StringTokenizer 클래스는 문자열을 지정한 구분자로 나눠주는 클래스이다. 이렇게 나눠진 문자열을 토큰(Token)이라고 하는데 Tokenizer라는 말 그대로 문자열을 토큰화 하여 쪼갠다라고 생각하면 될 것 같다. 아래 예제를 보면 "This is a string example using StringTokenizer"라는 문자열이 있는데 This - 토큰 / is - 토큰 / a - 토큰 이런 식으로 쪼개진다. 사용을 위해 java.util.StringTokenizer를 import 해야 한다. 아래는 토큰을 하나씩 출력하는 프로그램이다 import java.util.StringTokenizer; public class studying { public static ..