프로그래머스 초급

park·2022년 11월 16일

자바는 플랫폼에 독립적이다. (윈도우, 리눅스, 맥 등 어떤 플랫폼에서 실행 가능)
객체지향 프로그래밍이다. (재활용성, 직관성이 강하다.)
Garbage Collector가 메모리를 자동적으로 정리해준다.

JVM → 자바로 만들어진 프로그램을 실행해주는 프로그램
JDK → java develpoment kit(자바 개발자 도구)

코드 작성 → 코드 컴파일 → JVM 실행

변수
변수란 값을 저장할 수 있는 메모리 공간을 의미
변수 = 값(date)를 저장할 수 있는 메모리 공간, 값이 변할 수 있는 수

java 식별자 명명 규칙
하나 이상의 글자로 이루어져야 함
첫번째 글자는 문자 이거나 , _ 이어야 함 두번째 이후의 글자는 숫자, 문자, $, _ 이어야 함, _ 이외의 특수문자 사용 불가능
첫 번째 문자가 소문자인 명사로 정함
여러 단어로 구성된 이름의 경우 두번째 단어부터 첫 글자를 대문자로 함

상수
한번 저장한 데이터 값을 변경할 수 없다. 변하지 않는 값
값을 넣는다 = 초기화 한다.
상수의 선언 final
여러 단어로 구성된 이름의 경우 단어 사이에 _ 를 써서 구분한다.
값이 변하면 위험한 경우에 상수를 사용



값 자체를 리터럴이라고 부른다.
long타입에는 마지막에 L을 넣어줘야 한다.
float타입에는 마지막에 F을 넣어줘야 한다.


묵시적 형 변환
→ 크기가 작은 타입을 크기가 더 큰 타입으로 바꿀 때에는 묵시적으로 형을 바꾸어 준다.

명시적 형 변환(강제 형 변환)
→ 크기가 더 큰 타입을 작은 타입으로 바꿀 때에는 명시적으로 변환 해주어야 한다.

연산: 데이터를 처리하여 결과를 산출하는 것
연산자: 연산에 사용되는 표시나 기호
피연산자: 연산 대상이 되는 데이터(리터럴, 변수)
연산식: 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것

조건문(if, switch)
어떤 문장은 수행하고 싶고, 어떤 문장은 수행하고 싶지 않을 때 사용

두개가 반대의 값일 때 false, true → true
두개가 같은 값일 때 (true, true), (false,false) → true, false

삼항 연산자

조건식? 피연산자1 : 피연산자2

SWITCH


반복문

while, do while, for문


배열


클래스

자바 → 클래스로 되어 있다.
클래스 → 속성(값)과 메서드(함수 같은 것, 기능을 취하는것)으로 구성

객체지향 프로그래밍
자바는 객체를 만들기 위해 반드시 클래스를 먼저 만들어야 한다.
클래스는 객체를 만들기 위한 일종의 틀이다.
*붕어빵이 객체라면, 붕어빵 틀은 클래스

ex)

1. 자동차 클래스 생성
2. Car.java란 파일을 만든다.
3. 저장을 하면 이클립스는 컴파일하여 디스크에 Car라는 클래스를 생성한다.
4. 자동차 클래스가 생성되었다고 해서 자동차가 만들어진 것은 아니다.

Car객체 생성하기(자동차 만들기)

클래스가 모두 참조형 타입이 될 수 있다.
항상 객체를 생성할 때는 new라는 키워드를 이용해야 한다.
new연산자는 new연산자 뒤에 나오는 생성자를 이용하여 메모리에 객체를 만들라는 명령 → new는 클래스를 메모리에 올려주세요!라는 뜻
메모리에 만들어진, 올라간 객체를 인스턴스(instance)라고 한다.
→ 메모리에 올라간(인스턴스를 가리키는 변수 = 참조하는 변수 = 레퍼런스하는 변수)
객체를 참조하는 변수가 c1, c2이다.
Car라는 객체가 2개가 만들어지고 각각의 객체를 참조하는 c1, c2 변수가 선언됩니다.

기본형 타입은 참조가 아니다.
클래스 배열 등 모두 참조형이다.
"참조한다. 래퍼런스한다."는 변수가 인스턴스를 가지고 있는 것이 아니라 가리킨다 라는 의미다.

str이라는 변수는 메모리의 위치 값이 저장된다. 어떤 메모리의 저장되는지 알 수 없다. str변수는 string 인스턴스를 참조한다. 모든 클래스는 참조형이다.


equals 메소드는 비교하고자 하는 대상의 내용 자체를 비교하지만,
== 연산자는 비교하고 하는 대상의 주소 값을 비교한다.

객체지향 언어라는 의미는 하나의 사물을 하나의 클래스로 설명하는 언어


메소드

입력 값 → 결과 값

클래스가 가지고 있는 기능(클래스 내부에서 선언이 된다.)
리턴 타입 → 어떤 결과 값으로 돌려줄 것이냐

public 리턴 타입 메소드명(매개변수 들){필요한 기능들 구현}

리턴 타입이 없을 때는 void(리턴 타입이 없음) 라고 명시해 준다.
*정수를 받아들인 후, 리턴하지 않는 메소드
-받아들이는 값은 어떤 타입이라도 상관없다.
-받아들이는 값의 수는 여러 개일 수 있다. 여러 개일 경우 콤마(,)로 구분한다.

아무것도 받아들이지 않고, 정수를 반환하는 메소드
-리턴 하는 값 앞에 return이라는 키워드를 사용한다.
-메소드 이름 앞에는 리턴하는 타입을 적어준다.
-리턴 타입은 하나만 사용할 수 있다. 리턴 하는 타입은 어떤 타입이라도 상관없다.


모든 클래스는 인스턴스화 하지 않은 채로 사용할 수 없다.
키워드 static을 사용하면 인스턴스화 하지 않아도 사용할 수 있다.
클래스 변수 → static한 변수, 값을 저장할 수 있는 공간이 하나밖에 없어서 값을 공유한다.


enum 열거형


생성자


매개변수가 없는 생성자는 기본 생성자, 생성자가 하나라도 만들면 기본생성자는 기본적으로 생성자가 만들어지지 않는다.
생성자가 하는일은 객체가 될 때 필드를 초기화 하는 역할

오버로딩

타입과 매개변수 수가 중요하다. 매개변수 이름은 중요하지 않다. 타입이 달라야 한다.
이용하기 위해서는 해당 클래스가 만들어져 있어야 한다. 클래스 만드는 방법은 클래스 타입, 변수명, new, 클래스가 가지고 있는 생성자 이름

this

객체 자신을 참조하는, 내 구성요소, 내것 의미를 갖는다.
객체 자신을 참조하는 키워드


패키지


클래스 관리를 위해 사용하는 패키지, 관련된 클래스들을 폴더별로 관리하기 위해 패키지

부모가 가진 메서드 이외에도 추가 메서드를 선언하는 것을 “확장 하였다”라고 한다.


클래스는 필드와 메소드를 가진다. 캡슐화 → 관련된 내용을 모아서 가지고 있는 것


접근제어자


접근제한자는 필드뿐만 아니라 메소드에도 적용할 수 있다.

추상클래스는 부모로써 역할은 가능하지만 추상클래스 자체를 이용해서 객체를 생성하는 것은 안된다.


생성자

객체가 생성될 때 반드시 생성자를 실행하고 생성된다!!!!!!!!!!!
생성자가 하는 일은 객체를 초기화 하는 일
super() ← 부모 생성자 호출

오버라이딩


인터페이스


구현은 하지않고 기능들만 쭉 선언해서 가지고 있는 것을 인터페이스 라고 한다.
기능들을 모아둔 것

*클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있음

다중상속이라는 이점을 버릴 수 없기에 인터페이스 사용

자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함
하지만 인터페이스는 오로지 추상 메소드와 상수만을 포함

인터페이스의 장점

인터페이스를 사용하면 다중 상속이 가능할 뿐만 아니라 다음과 같은 장점을 가질 수 있습니다.

  1. 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능합니다.

  2. 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축할 수 있습니다.

  3. 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍이 가능합니다.


내부클래스


예외

0개의 댓글