목록언어공부/[코드스테이츠] 백엔드부트캠프 (25)
개발자 꼬부기의 성장일기

Thread 프로세스는 실행 중인 애플리케이션을 의미한다. 데이터, 컴퓨터 자원, 그리고 스레드로 구성. 스레드는 데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행. 메인스레드 자바 어플리케이션을 실행하면 가장 먼저 실행되는 main 메서드, 메인 스레드가 메인 메서드를 실행시켜줍니다. 메인 메서드의 코드를 처음부터 끝까지 차례대로 실행시키며, 코드의 끝을 만나거나 return문을 만나면 실행을 종료한다. 멀티스레드 하나의 프로세스는 여러 개의 스레드를 가질 수 있다. 여러개의 스레드를 가진다는 것은 동시에 작업을 수행할 수 있음을 의미한다. 스마트폰에서 메신저 사용시 사진을 업로드하면서 메시지 주고 받을때 멀티 스레드를 사용한 예이다. 작업스레드 모든 자바 코드는 클래스 안에 작성된다. ..
코플릿 문제풀기 (컬렉션) 컬렉션을 로직에 활용하면 프로그램이 정말 쉬울것 같다. ArrayList * Arrays.asList(arr) - Arrays.asList(배열) - 일반 배열을 List로 변환한다. * ArrayList.isEmpty() : 비어있는지 확인한다. * ArrayList 수정은 arr.set(index, value) * remove()는 삭제한 객체를 반환한다. * subList(from, to) : from~ to 전 까지 빼는 것 arrayList = {5,6,7,8} arrayList.sbuList(1,3) => 6, 7 * 배열복사 Array 클래스 함수 - Arrays.copyOf(원본배열, 복사할 길이) - Arrays.copyOfRange(원본배열, 복사할 시작인덱스..

컬렉션 열거형 제너릭 예외처리 컬렉션 프레임워크 2일 동안 OOP개념 실습을 마치고 컬렉션 파트로 들어왔다. 어렴풋이 사용만 해봤던 터라 개념강의 들으니 좀 더 알것 같다. 열거형(Enum) : 서로 연관된 상수들의 집합 상수 명이 중복되는 경우가 발생한다. 클래스를 구분하면 중복 문제는 해결 가능하지만 타입 안정성이라는 새로운 문제가 생긴다. => 객체를 생성해 주면, 상수 명 중복과 타입 안정성 문제를 모두 해결할 수 있다. 더 간결하고 가독성이 좋은 코드를 작성가능. enum 열거형이름 { 상수명1, 상수명2, 상수명3, ...} 상수는 대소문자로 모두 작성이 가능하지만, 관례적으로 대문자로 작성 각각의 상수들에는 따로 값을 지정해주지 않아도 자동적으로 0부터 시작하는 정수값이 할당됨. enum S..
다형성 & 추상화 다형성과 추상화 공부하니 더 머릿속이 복잡해졌다. 이걸 이용해서 어떻게 프로그래밍하지...내일 실습도 어떻게 하지... 걱정이 앞선다. 다형성 : 하나의 객체가 여러 가지 형태를 가질 수 있는 성질 - 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것. - 오버로딩과 오버라이딩 개념을 두가지 다 포함하고 있다. - 동적 바인딩 혹은 Late Binding이라고도 한다. - 상위 클래스 타입의 참조 변수로 하위 클래스의 객체를 참조하는 것 class Friend { public void friendInfo() { System.out.println("나는 당신의 친구입니다."); } } class BoyFriend extends Friend { public void..
상속 & 캡슐화 이론으로 알지만 이해하고 써본적이 없는.. 상속 캡슐화 getter 와 setter 왜 사용해야하는지 몰랐는데 이제야 알게됨.. 상속 기존 클래스를 재활용하여 새로운 클래스를 만드는 요소. 앞에서 배웠던 것 처럼 메인 클래스의 멤버를 내부클래스가 사용할 수 있는것과 비슷하다. 상속은 하위클래스가 자식, 상위클래스가 부모로 자식은 부모의 것을 물려받는 상속의 개념으로 볼 수 있다. 자식은 부모의 모든 것을 쓸 수 있고 거기서 더해서 자신만의 것을 가질 수 있다. 키워드는 extends 를 사용함으로써 확장의 의미가 있다. 상속을 사용하는 이유 1) 코드를 재사용, 중복 제거 2) 다형적 표현이 가능 예제) class Person { String name; int age; } class Pr..

회고 객체지향 OOP 개념.. 이론으로 배웠던 것보다 실습해보면서 간단한 프로그램을 만들어보니.... 쉽지 않았다. 여태까지 개발하면서는 거의 순차적으로 개발을 해왔던것 같아서 늘 부족하다고 생각했던것 같다. 자바 개발자는 생각보다 쉽지 않은 길일것 같다. 생성자와 내부클래스 생성자 생성자는 클래스의 구성요소로서 인스턴스가 생성될때 호출되는 메서드이다. new라는 연산자를 통해 생성자 함수가 호출된다. 생성자 함수는 클래스명과 같아야한다. 생성자는 리턴 타입이 없다. void 키워드도 사용하지 않는다. class Constructor { Constructor() { // (1) 생성자 오버로딩 System.out.println("1번 생성자"); } Constructor(String str) { // (..

클래스와 객체 클래스 클래스는 하나의 틀, 붕어빵 틀과 같다. 클래스라는 틀을 이용해 인스턴스가 생겨났다가 사라졌다 한다. 클래스를 통해 생성된 객체를 인스턴스라고 한다. 각 객체를 만드는 과정을 인스턴스화 라고 지칭한다. 객체는 모든 인스턴스를 포괄하는 넓은 의미 인스턴스는 해당 객체가 어떤 클래스로부터 생성된 것인지를 강조하며 두가지다 의미를 혼용해서 쓰기도한다. 클래스를 한번 정의해 놓으면, 매번 객체를 생성할 때마다 어떻게 객체를 만들어야 할지 고민하지 않고, 클래스로부터 객체를 생성해서 사용하기만하면 된다. 클래스의 구성요소와 기본 문법 public class ExampleClass { int x = 10; // (1)필드 void printX() {...} // (2)메서드 ExampleCla..

배열 배열이란, 동일한 타입의 값들을 하나의 묶음으로 묶은 자료 구조 배열을 사용하여 값을 저장하는 경우, 아래와 같이 메모리 공간 상에 연속적으로 값들이 모여서 저장됨 배열은 참조변수. 1차원 배열 배열의 선언 double[] TmpArray; TmpArray = new double[30]; 배열의 모든 요소는 double형의 기본값인 0.0으로 초기화됨. double[] tempArray = new double[] { 27.4, 30.1, 31.1, 32.4, ..., 31.8 }; // 선언과 초기화를 하나의 문장으로 할 때에 한해 new double[] 생략 가능. double[] tempArray = { 27.4, 30.1, 31.1, 32.4, ..., 31.8 }; 인덱스로 접근할 수 있다...

Java 기초 - 반복문 for / while / break / Continue for문 조건식이 참인 동안 주어진 횟수만큼 실행문을 반복한다. for(초기화; 조건식; 증감식){ } 초기화: 반복문 안에서 사용할 변수 초기화 조건식: 변수의 범위 한계를 지정 증감식: 반복적으로 얼만큼 증가할것인지 감소시킬것인지 또는 횟수 결정 for(int i=0, j=100; i=50; i++, j--) {} 두개의 변수도 가능하다. 향상된 for문 - 배열에서 많이 쓰임. - 증감식을 이용하지 않음 for(String name : names) {} 위의 예제로 보면 names라는 배열에서 하나씩 꺼내 name이라는 String 변수에 담아 사용함. while문 조건식이 true일 경우에 계속 반복, 초기화와 증감식..
Java 기초 - 연산자, 입출력, 제어문 연산자 1) 산술 연산자 - 사칙연산에 사용되는 연산자, 나머지 연산자(+, -, *, / , %) - 좌항이나 우항 중 하나라도 실수 타입의 값이 존재하면, 실수 타입으로 자동으로 형변환되어 계산됨. - 증감연산자 ( ++ , --) 전위형 증감 연산자 : 증감 연산을 먼저 실행 후, 그 결과값을 적용. 후위형 증감 연산자 : 기존의 값을 먼저 적용하고 그다음에 증감 연산. - 복합대입연산자(+=, -=, *=, /=, %=) 2) 비교 연산자 - 대소비교 연산자 (> , < , =) - 등가비교 연산자(==, !=) 3) 논리 연산자 - AND(&&) OR(||) - NOT(!) 4) 연산자 우선 순위 우선순위 연산자 내용 1 (), [] 괄호 / 대괄호 2..