😀 역시 모든 코딩공부는 설치부터 시작한다. 자바언어 자체를 한번 설치해야하고, 그 다음 통합개발환경(IDE)를 설치해줘야한다.본인 운영체제에 맞는 jdk를 설치cmd창에서 설치 확인보면 zip이랑 exe가 있는데 설치파일과 압축파일의 차이인데 그냥 설치형으로 받으면
객체 지향 프로그래밍 언어소스코드 → 컴파일 → .class → jvm → 프로그램소스코드 : 사람이 이해할 수 있는 프로그래밍 언어로 구성됌.컴파일 : 소스코드를 컴퓨터가 이해할 수 있는 컴퓨터 언어로 만들어줌 .class : 컴파일러의 결과, 컴퓨터가 알아들을 수
🔥들어가면서🔥 📕 Java 데이터 타입 🎁 유용한 기능 Math. n 🎁 length replace
문자들로 구성된 문장 ""를 사용해서 표현 자료형 String을 사용해서 선언한다.선언방법에는 두가지가 있다.객체 생성없이 고정된 값을 그대로 대입하는 빙법이다."Happy Java"라는 문자열을 특정 메모리 공간에 저장하고 다음에 다시 동일한 문자열이 선언될 때 이
두개의 문자열이 동일한지를 비고하여 결과값을 리턴한다. (문자열끼리만 사용가능)new메소드를 사용해 만든 문자열이더라도 문자열이 동일하면 true리턴반환값은 boolean✍️예시코드==는 동일한 객체인지를 판단한다. (메모리값 주소 확인)✍️ 예시코드문자열과 다른 객체
🔥오늘의 목표🔥 📕 형 변환 변수의 자료형이 다를 때 자료형을 바꾸는 것을 말한다. 묵시적 형 변환과 명시적 형 변환이 있다. 📖 묵시적 형변환 컴파일러에서 자동으로 형 변환을 하는 경우 📒 작은 자료형에서 큰 자료형으로 대입하는 경우 byte → in
주어진 조건에 따라서 다른 문장을 수행하도록 한 것.블록 : { }으로 수행할 문장을 묶음조건문 : 비교 연산자를 사용해서 참과 거짓을 판별, 세미콜론 ;이 붙지 않는다.⚠️ 하나의 상위 조건식을 만족하면 이후의 조건은 비교하지 않고 빠져나온다.조건식 1을 만족하면 이
조건식이 true 동안 수행한다. 조건식이 flase면 탈출한다.while문 내의 변수는 그 전에 미리 초기화를 해야한다.📒 무한 반복문 : 조건식이 계속 true인 경우반복 수행 후 조건검사를 한다.(반복 수행문 1회 수행을 보장함)⚠️ while (조건식); 에
🔥오늘의 목표🔥 📕객체 지향 언어 : JAVA 📖 절차 지향 프로그래밍 VS 객체 지향 프로그래밍 절차 지향 프로그래밍 : 일어나는 일을 순서대로 프로그래밍한다. 객체 지향 프로그래밍 : 객체를 정의하고 객체 간 협력을 프로그래밍한다. 🔍 자바로 프로그래
: 객체의 속성과 기능을 코드로 구현한 것이다. "클래스를 정의한다." = 객체를 클래스로 구현한 것클래스는 특정 변수(속성)과 특정 기능을 가질 수 있다.클래스이름은 대문자로 시작한다..java파일은 이름이 동일한 public class를 가진다. ✍️ 예제코드👉
클래스 내부에서 선언된 메소드함수의 입력으로 받는 변수이다.매개변수의 자료형과 이름을 같이 써야한다.✅ 매개변수 값은 없을 수도 있다. 대신 괄호 ()는 써야함.return예약어를 통해 값을 반환할 수 있다.이때 함수반환형은 반환형의 자료값에 따라 써야한다.✅ 반환값이
📕인스턴스
변수와 메소드에 붙여서 쓸 수 있다. static변수는 메모리에 딱 한번 할당되어 모든 클래스에 공유되어 사용된다.같은 클래스에서 생성된 인스턴스들이 같은 값을 공유하게 된다.static변수 = 클래스 변수 = 정적 변수✍️ 설명 코드👉 인스턴스변수는 각각 다른 값을
생성된 인스턴스 스스로를 가리키는 예약어이다.활용 방법
객체의 인스턴스가 오직 1개만 생성되는 패턴이다.🤔고민해보기객체의 인스턴스가 하나만 만들어지게 제한을 두려면 어떻게 해야할까?➡️ 외부에서 생성자를 통해서 만들 수 없게 만들어야한다. (private를 이용해 생성자 접근을 제한함)private가 있는 생성자를 어디서
⚾들어가면서⚾
기본자료형 복사클래스형 복사기본자료형은 따로 깊은 복사가 필요없다. Java지만 다른 언어로 작성된 메소드이다.더알아보기바로 배열에 대입할 수는 없는 것 같고, 선언된 배열을 가지고 메소드만 작성해서 사용하는 듯하다.대상배열을 쓰지 않는 대신 대상배열에 대입해야한다.
배열요소로 다른 배열을 가지는 배열을 가진다.배열의 요소로 1차원 배열을 가지는 것이다.2차원 배열 선언하기1\. 자료형 배열이름;2\. 자료형 배열이름;3\. 자료형\[] 배열이름\[];2차원 배열 생성하가배열이름 = new 자료형행;동시에 배열 생성하기2차원 배열을
🥲들어가면서🥲
자식클래스(하위클래스)가 부모클래스(상위클래스)를 상속받는다. 상위클래스 : 덜 구체적이다.하위클래스 : 상위클래스의 멤버변수와 메소드를 상속받아 더욱 구체적이다. (하위클래스는 상위클래스의 멤버변수나 메소드를 사용할 수 있다. )🔍 필요한 추가 속성과 기능을 하위클
상속관계에 있는 클래스에서 상위클래스가 동일한 메세지로 하위 클래스들을 서로 다르게 동작시키는 객체 지향원리이다.상속 클래스를 구현한다.하위클래스에서 메소드를 오버라이딩한다.상위클래스로 형변환을 한다.생성된 인스턴스로 오버라이딩된 메소드를 호출한다.👉 실행화면\[JA
명시적 형변환을 사용해 업캐스팅한 객체를 다시 원래 인스턴스자료형으로 되돌아가게 하는 것이다. 📒 다운캐스팅 방법 1. 변수에 저장하기📒 다운캐스팅 방법 2. 변수에 저장하지 않고 메소드나 멤버변수를 바로 실행⚠️ 주의할 점다운캐스팅은 업캐스팅한 인스턴스만 가능하고
선언부만 존재하며, 구현부는 자식클래스에서 작성하도록 하는 메소드이다.abstract 예약어{ } 대신 세미콜론;해당 클래스가 추상 클래스여야한다.하나 이상의 추상메소드를 포함하는 클래스이다.abstract예약어를 통해 생생할 수 있다.⚠️ 추상 클래스를 상속받는 모든
final메서드와 abstract 메서드로 로직의 흐름만을 정의하고 구체적인 구현은 하위 클래스에 위임한다. 하위 클래스 마다 세부 구현내용은 달라져도 로직의 흐름은 달라지지 않는다.여러 클래스에서 변하지않는 로직을 템플릿화하여 상위클래스에서 정의하고, 하위 클래스마다
상수로 지정하고 싶은 자료형 앞에 final 예약어를 사용한다.static + final으로 여러 자바 파일에서 공유하는 상수값을 만들 수 있다!!하위클래스에서 오버라이딩 할 수 없다.템플릿 메소드도 만들 수 없고 단순히 수정할 수 없는 메소드를 만들 수도 있다.상속을
왠지 default예약어가 굉장히 낯설게 느껴질텐데 그런 이유가 있다!!바로 접근제어자를 별도로 설정하지 않았을 때 자동으로 적용되는 예약어로 직접 쓸 일이 지금까지는 없었기 때문이다.하지만 이번 인터페이스에서 default예약어를 쓰게 되는데, 이는 동일한 패키지안에
java의 lang패키지는 가장 기본적인 클래스들이 모여있는 패키지이다.컴파일시 자동으로 import java.lang.\*;문장이 추가된다. 따라서 import문을 쓰지 않더라도 자동으로 사용이 가능하다.다양한 자바의 기본 클래스와 인터페이스가 속해져 있다.포함된 여
인스턴스의 주소값을 반환한다.⚠️ eqauls()의 메소드가 결과값이 true인 경우 동일한 해시코드 값을 반환하도록 재정의해야한다.👉 eqauls()의 메소드를 재정의했으면 hashCode()또한 재정의해야한다.이때 eqauls()를 재정의 할때 사용한 멤버변수를
객체를 복제하는 메소드이다.사용하기 위해서는 클래스에 Cloneable 인터페이스를 구현해야한다.Cloneable 인터페이스의 clone메소드를 구현해야하며, 기본 반환값이 Obeject이기 때문에 재정의를 통해 미리 형변환을 할 수 있다.
String 객체는 한번 생성되면 메모리 공간이 변하지 않는다. +연산자또는 concat메소즈응 통해 문자열을 변경해도 문자열에 값이 변경되는 것이 아닌 새로운 문자열이 할당되는 것이다.따라서 값을 변경하거나 생성할 때마다 메모리가 낭비된다. 문자열 연산이 많은 경우에
원시형 👉 스택메모리에 저장된다.참조타입(class,Arrat..) 👉 힙메모리에 저장된다.static 👉 스택메모리에 저장된다. 원시형타입의 자료형을 Class화 한다. 저장되는 인스턴스의 값을 변경할 수 없다.new새로운 객체 생성.value() : 추천👍정
Class클래스는 class파일의 클래스나, 인터페이스, 생성자정보를 가져오는 데 사용한다. Object의 getClass()메소드 사용하기인스턴스 메소드로 생성된 인스턴스가 있어야 사용할 수 있다.Class에 class파일 대입하기forName()메소드를 사용해 클래
🧐들어가면서🧐 📕 제네릭이란 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. 클래스 내부에서는 참조 자료형을 하나의 문자로 표현하고, 클래스를 인스턴스로 생성하는 시점에 어떤 참조 자료형을 쓸 것인지 다이아몬드 연산자``내에 타입명을 기재한다.
데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합이다.👉 미리 구현된 자료구조(개발자가 지접 자료구조를 만들 수도 있지만, 이미 잘 만들어진 자료구조 클래스를 활용할 수 있다. )컬렉션 프레임워크에는 Collection 인터페이스와 Ma
순서에 따라 저장하고, 중복을 허용한다.1\. ArrayList 클래스2\. Vector 클래스3\. LinkedList구현기능1\. 멤버ID와 멤버이름을 가진다.2\. 생성시 멤버ID와 멤버이름을 설정한다.3\. getMemberId 메서드 를 통해서 인스턴스의 멤버
LIFO 구조 : 추가는 맨 위에, 삭제도 맨 위에부터👉 실행화면👉 실행결과FiFo 구조: : 추가는 마지막에, 삭제는 맨 앞 부터👉 실행화면ArrayList의 remove(0) 연산은 모든 요소를 한 칸씩 이동시켜야 하므로 성능이 좋지 않을 수 있습니다.👉 실
집합 자료를 구현하며, 저장순서가 유지되지 않고, 중복을 허용하지 않는다.💡 많은 양의 데이터를 저장하는데 적합하다.➕ 만약 중복된 자료를 추가하면, 추가가 되지 않고 별도의 예외나 오류는 나지 않는다.HashSet으로 저장할 객체가 직접 만든 객체라면 equals(
Map 인터페이스는 자료를 쌍(key -value)으로 관리하는데 필요한 메서드가 정의되어있다.key 값은 중복이 불가능하고 value는 해시함수에따라 저장위치에 정해진다.Map 인터페이스는 자료를 쌍(key -value)으로 관리하는데 필요한 메서드가 정의되어있다.k
💡 ArrayList \- 리스트 자료구조를 사용한다면 기본 선택 \- 임의의 요소에 대한 접근성이 뛰어남 \- 순차적인 추가/삭제 제일 빠름 \- 요소의 추가/삭제 불리💡 LinkedList \- 요소의 추가/삭제 유리 \- 임의의 요소에 대한 접근성이
클래스 내부에 선언한 클래스인스턴스 변수를 선언할 때와 같은 위치에 선언하고 static이 붙지 않는다. 인스턴스 변수처럼 외부 클래스의 객체가 먼저 생성되어야지 인스턴스 내부 클래스에 접근이나 생성이 가능하다. 인스턴스 클래스 내부에는 static 변수와 static
프로그램의 시작부터 종료될때까지 사라지지 않고 존재한다.따라서 프로그램 실행 중에는 어디서든 사용할 수 있다.다만 static 데이터를 무분별하게 많이 사용할 경우 메모리 부족 현상이 일어날 수 있다.✅ 저장 내용클래스, 인터페이스, 메소드, 필드, 상수, 상수풀후입선
🤔들어가면서🤔 📕 람다식 객체 지향 프로그래밍 언어인 자바에서 함수형 프로그래밍을 구현한 것이다. 람다식의 문법은 다음과 같다. 🤔 자바에서는 참조 변수 없이 메서드를 호출 할 수 없다. 👉 함수형 인터페이스의 참조 변수를 사용해서 람다식을 구현하고, 참조
배열, 컬렉션, 일련의 숫자와 같은 자료들을 처리에 대한 기능을 구현해 놓은 클래스를 말한다.🤔 기존 처리 메소드의 문제점 각 컬렉션 클랙스에 같은 기능의 메서드들이 중복되어 정의되어있어 데이터 소스마다 다른 방식으로 다루어여하는 문제점이 있었다.👉 Stream 은
프로그램에서 발생하는 오류는 컴파일 오류와, 실행 오류 두 가지가 있다.실행은 되지만 의도와 다르게 동작하는 것이다.컴파일 단계에서 발생하는 에러컴파일 오류를 수정해야 프로그램을 실행할 수 있기 때문에 고치면 된다.실행중에 발생하는 에러런타임 에러 발생 시 프로그래머가
🙂들어가면서🙂 📕 예외 처리 방법 예외처리에는 꼭 예외처리를 해야 프로그램이 실행되는 Checked 예외와 UnChecked 예외가 있다. 예외 처리 방법에는 잘 알려진 try-catch문과 throw문(예외 던지기), chained Exception문(예외
보일러 플레이트의 어원계속해서 쓸 문자를 인쇄하는 판은 바꾸기 힘든 강철로 만든 판을 사용했다이 판의 이름이 “보일러 플레이트”어떤 상황에서도 쓸 수 있는, 든든 국밥같은 코드다^\_^자주 반복되는 작업이나 패턴을 미리 구현 해놓고 계속 사용할 수 있게 하는 코드를 보