2021년 12월 16일부터 do it Java입문으로 반복하며 공부를 시작했습니다.그 후로 단 하루도 거르지 않고 8시간 이상씩 공부한것같네요..그래서 이제 기초는 다진것같아서 자바의 정석으로 제대로 다시 배운다는 마인드로 시작해보겠습니다.난 할수 있다.
변수의 타입은 크게 2가지로 나뉩니다.기본형(primitive type):8개(boolean, char, byte, short, int, long, float, double) ,실제값을 저장\-논리형(boolean)-참과 거짓,즉 true와 false중 하나를 값으로
연산자란? -어떠한 기능을 수행하는 기호(+,-,*,/ 등) **-피연산자(Operand)는 연사자의 작업대상이다.(변수,상수,리터럴,수식이 될수있다.) ex) a+b 여기서 a와b가 피연산자에 해당하며, +는 연산자에 해당한다.** 나는 연산자야 뭐 이과니까 기
영어에서도 if,for를 많이 썻던 것으로 기억한다.Java에서도 예외는 아니다..엄청 자주 나온다.\-조건문은 조건식과 실행될 하나의 문장 또는 블럭{}으로 구성한다. if(조건식) {문장}\-Java에서 조건문은 if문, switch문 2가지다.\-if문을 주로 사
1.조건문.다음 문장들을 조건식으로 표현하라 #1. int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식 #2. char형 변수 ch가 공백이고 탭이 아닐 때 true인 조건식 #3. char형 변수 ch가 'x' 또는 'X'일 때,true인 조건식
처음에 이거를 할때는 진짜 머리카락이 빠지는줄 알았는데.여전히 어렵네요..계속 반복하면서 응용을 해보자.
\-같은 타입의 여러 변수를 하나의 묶음으로 다루는 것\-많은 양의 값(데이터를)을 다룰 때 유용하다.\-배열의 각 요소는 서로 연속적이다.타입 또는 변수이름 뒤에 대괄호\[]를 붙여서 선언한다.Ex) int\[]score; , String\[] name; , int
1. String형 name배열에 저장된 인물들의 신장을 입력받고 합계와 평균을 구하는 Code를 작성하라.(이름과 신장은 마음대로해도된다.) 2. 양의 정수 10개를 입력받아 배열에 저장하고, 배열에 있는 정수 중에서 3의 배수만 출력해보자. ![](https:/
\-기존의 프로그래밍 언어에 몇가지 규칙을 추가한 것일 뿐이다.\-코드의 재사용성이 높다.(새로운 코드를 작성할 때 기존의 코드를 이용해서 쉽게 작성이 가능하다.)\-코드의 관리가 쉬워진다..(코드간의 관계를 맺어줌으로써 적은 노력으로 코드변경이 가능하다.)\-제어자와
변수의 선언위치가 변수의 종류와 범위(scope)를 결정한다.인스턴스변수(instance variable)\-각 인스턴스의 개별적인 저장공간. 인스턴스마다 다른 값 저장가능\-인스턴스 생성 후, '참조변수. 인스턴스변수명'으로 접근.\-인스턴스를 생성할 때 생성되고,
\-인스턴스가 생성될 떄마다 호출되는 '인스턴스 초기화 메서드'\-인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용\-몇가지 조건을 제외하고는 메서드와 같다.\-모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.인스턴스 초기화: 인스턴스 변수에 적
기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것.두 클래스를 조상과 자손으로 관계를 맺어주는 것.자손은 조상의 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)자손의 멤버개수는 조상보다 적을 수 없다.(같거나 많다.)\-공통부분은 조상에서 관리하고 개볇부분은
클래스, ,변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다.제어자는 크게 접근제어자와 그 외의 제어자로 나뉜다.하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근제어자는 단 하나만 사용가능.static이 사용될 수 있는 곳 - 멤버변수, 메서
클래스가 설계도라면 추상클래스는 '미완성 설계도'추상메서드(미완성 메서드)를 포함하고 있는 클래스추상메서드 : 선언부만 있고 구현부가 없는 메서드일반메서드가 추상메서드를 호출할 수 있다.(호출할 때 필요한 건 선언부)완성된 설계도가 아니므로 인스턴스를 생성할 수 없다.
학생 클래스버스 클래스지하철 클래스테스트 클래스
프로그램 에러컴파일 에러(compile-time error)와 런타임 에러(runtime error)\-컴파일 에러 - 컴파일할 때 발생하는 에러\-런타임 에러 - 실행할 때 발생하는 에러\-논리적 에러 - 의도와 다르게 동작(실행시)Java의 런타임 에러 - 에러(e
1. 예외처리의 정의와 목적에 대해서 설명하시오. 풀이====================================== 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것. 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태
모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다.\-notify(), wait()등은 쓰레드와 관련된 메서드이다.\-equlas(), hashCode(), toString()은 적절히 오버라이딩해야한다.\-모든클래스는 Object클래스의 메서드를 사용가
C언어에서는 문자열을 char형 배열로 표현하지만, 자바에서는 문자열을 위한 String이라는 클래스를 별도로 제공한다.String클래스에는 문자열과 관련된 작업을 할 때 유용하게 사용할 수 잇는 다양한 메서드가 포함되어있다.이러한 String클래스는 java.lang
String클래스의 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고,변경할 수는 없었습니다.하지만 StringBuffer 클래스의 인스턴스는 그 값을 변경할 수도 있고, 추가할 수도 있습니다.이를 위해 StringBuffer 클래스는 내부적으로 버퍼(buffer
자바에서 컬렉션 프레임워크(collection framework)란 다수의 데이터를 쉽고 효과적으로 처리 할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은것
List 컬렉션 클래스를 구현한 모든 List컬렉션 클래스는 다음과 같은 특성을 가집니다.1\. 요소의 저장 순서가 유지됩니다.2\. 같은 요소의 중복 저장을 허용합니다.대표적인 List 컬렉션 클래스에 속하는 클래스는 다음과 같습니다.ArrayListLinkedLis
다음 문제를 어떻게 풀면 좋을지 생각해 보자.10 미만의 자연수에서 3과 5의 배수를 구하면 3, 5, 6, 9이다. 이들의 총합은 23이다.1000 미만의 자연수에서 3의 배수와 5의 배수의 총합을 구하라.문제를 보자마자 나는 for문을 돌려야된다고 생각했다.아무리
A 씨는 게시판 프로그램을 작성하고 있다. 그런데 게시물의 총 건수와 한 페이지에 보여 줄 게시물 수를 입력으로 주었을 때 총 페이지 수를 출력하는 프로그램이 필요하다고 한다.※ 이렇게 게시판의 페이지 수를 보여 주는 것을 "페이징"한다고 부른다.메소드 이름은? get
이번에는 양의 정수를 입력 받아 그 자릿수를 출력하는 프로그램을 작성해 보자. 예를 들어 3이 입력되면 1자리수 숫자이므로 1, 25가 입력되면 2, 7876이 입력되면 4를 출력해야 한다.단,만약 정수가 아닌 문자가 입력 되었을 경우에는 다시 입력하라는 경고메세지를
이번에는 어떠한 문자열을 입력받았을때 공백을 제외한 글자수만을 리턴하는 코드를 작성해 보자. 즉, 어떤 문자열이 "공백을 제외한 글자수"라면 띄어쓰기를 위해 필요한 공백 문자 2개를 제외하고 9라는 숫자를 리턴해야 한다.입력해야하는 값 : "공백을 제외한 글자수"공백
그동안 공부를 하면서 많이 빼먹은 것이 많았다.boolean은 단순히 참과 거짓을 구별하는 클래스..String클래스...처음 본 그순간 이걸 왜써야하지? 왜 공부하고 있지..라고 생각하면서 읽고 이해만 하고 넘어간 적이 있는데 예제를 풀때나, 나중에 실무를 할때도 많
문자열이란 문장을 뜻한다. 예를 들어 다음과 같은 것들이 문자열이다. "Happy Java"; "a" "123" >자바에서 문자열을 나타내는 자료형은 String이다. 즉,위의 문자열을 자바에서 표현 하려면, 하지만 위의 예제는 다음과 같이 표현해도 된다. 하지
예를 들어 1부터 10까지의 숫자들 중 홀수들의 모임인 1,3,5,7,9라는 집합을 생각해 보자.이것들을 숫자나 문자열만으로 표현 하기는 쉽지가 않다.그래서 이러한 문제를 해결하기 위해 배열이 있다.1부터 10까지의 숫자들 중 홀수들의 집합은 다음과 같이 int배열로
리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있다.리스트와 배열의 가장 큰 차이는 크기가 정해져 있지 않고 동적으로 변한다는 점이다.배열은 크기가 정해져 있다. 예를 들어 배열의 크기를 10개로 정했다면 10개이상의 값을 담을 수는 없다
가끔 프로그래밍을 하다 보면 똑같은 내용을 자신이 반복해서 적고 있는 것을 발견할 떄가 있따. 이때 가 바로 메서드가 필요한 떄이다. 여러번 반복해서 사용된다는 것은 언제고 또다시 사용할 만한 가치가 있는 부분이란는 뜼이다. 즉, 이러한 경우 이것을 한 뭉치로 묶어서
메서드 값( primitive type)을 전달하는 것과 객체(reference type)를 전달하는 것에는 큰 차이가 있다. 이것은 매우 중요하기 때문에 이전에 잠깐 언급했지만 다시한번 자세히 알아보자.결론부터 얘끼한다면 메서드로 객체를 전달할 경우 메서드에서 객체의
학점 산출 프로그램을 만들기전에 학생의 이름과 번호를 배열에 넣고 조회하는 프로그램을 만들어 보겠습니다.이렇게 학생클래스에는 private로 이름과 휴대폰 번호를 변수로 지정해주고 생성자와 get,set을 생성합니다.이제 메인클래스에서 학생이름을 검색하여 정보가 나오게
추상 클래스는 다른 클래스들의 공통적인 변수나 메서드로 정의만 해놓는 것을 말한다.>추상 메서드2.abstract를 앞에 붙이고 클래스 안에 추상 메서드를 포함하고 있따는 것을 제외하면 클래스와 별반 차이가 없다.3.Field, Constructor, Method(추상
키보드로 아이디와 패스워드를 입력받습니다.입력조건은 이름은 문자열이고 패스워드는 정수이다.(패스워드는 int타입으로 변환)입력된 내용을 비교해서 아이디가 "Java"이고 패스워드는 1022 라면 "로그인 성공",그렇치 않다면 "로그인 실패"를 출력하시오.
처음 시작할 때는 싱글톤이라는 개념이 너무 어려워서 그냥 이해만하고 지나쳤지만 이제 내것으로 만들어야 하기때문에 다시 제대로 공부해보자! >싱글톤이란? 가끔 전체 프로그램에서 단 하나의 객체를 만들도록 보장해야 하는 경우가 있습니다. 그렇게 해서 단 하나만 생성된다
자바공부를 다시하면서 추상클래스,인터페이스 둘다 추상메서드를쓰고 추상클래스는 공통적인 특성,인터페이스는 able로 끝나는 행동을 생성하는거라고 알고 있는데 공부하면 공부할수록 더어렵고 사람들마다 말하는게 달라서 제대로한번 정리하고 다시 머리를 뜯지 않으려고 제대로 머리
중첩 클래스는 단어 그대로 중첩되어 있는 상태입니다.하나의 클래스 안에 또 다른 클래스가 정의되는 형태라고 생각하면 됩니다.이러한 중첩 클래스 3가지 종류가 있습니다.👉 내부 클래스(Inner Class)👉 정적 내부 클래스(Static Inner Class)👉
프로세스란 단순히 실행 중인 프로그램(program)이라고 할 수 있습니다.즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다.이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성됩니다.스레드
자바는 널리 알려저 있는 자료구조를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수있도록 인터페이스와 구현 클래스를 java.util 패키지에서 제공합니다. 이들을 총칭해서 컬렉션 프레임워크라고 부릅니다.컬렉션은 검색,조회,정렬, 추가, 삭제와 같은 데이터를 관리
Set컬렉션의 특징요소의 저장 순서를 유지하지 않습니다.같은 요소의 중복 저장을 허용하지 않습니다.객체 추가\-boolean add(E e) : 주어진 객체를 저장합니다.객체가 성공적으로 저장되면true를 리턴,중복된 객체면 false를 리턴객체 검색\-boolean
Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용합니다Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가집니다.여기서 키(key)란 실질적인 값(value)을 찾기 위한 이
전에도 Map컬렉션에 대해 공부해 보았지만 이걸왜쓰지? List를 쓰는게 더 효율적인데..?하면서 이해만하고 넘갔지만 스프링을 공부하면서 '아 이래서 공부해야 하구나' 생각이들어서 저번보다 깊게 다시 공부해 보려합니다.이름을 키값으로 점수를 값으로 저장하기
함수형 프로그래밍은 대입문을 사용하지 않는 프로그래밍이며, 작은 문제를 해결하기 위한 함수를 작성합니다.Stream API는 데이터를 추상화하고, 처리하는데 자주 사용되는 함수들을 정의해두었다. 여기서 데이터를 추상화하였다는 것은 데이터의 종류에 상관 없이 같은 방식으
스트림 API에 의해 생성된 초기 스트림은 중개 연산을 통해 또 다른 스트림으로 변환됩니다.이러한 중개 연산은 스트림을 전달받아 스트림을 반환하므로, 중개연산은 연속으로 연결해서 사용할 수 있습니다.스트림의 중개 연산은 필터(filter),맵(map)기반의 API를 사
대표적인 유형과 메서드는 다음과 같습니다. 대부분의 최종연산은 결과값만 리턴되므로 별도의 출력문을 연결해 사용하기 어렵습니다. 각 메서드 설명에 사용된 예제에서는 주석으로 결과를 표기 했으며 일부 가능한 경우만 직접 출력하고 있습니다.요소의 출력 : forEach()요
값이 있을 수도 없을 수도 있는 컨테이너를 뜻합니다.null이 리턴되어 발생하는 NullPonterException을 방지하고자 나오게 된 개념입니다.Method에서 작업 중 반환 값이 제대로 들어오지 않았을 때, 주로 3가지 처리 방법을 사용합니다.\-이렇게 되면 O
primitive 자료형산술연산이 가능하며, null 값을 가질 수 없습니다.Wrapper 클래스(객체)Unboxing을 하지 않으면 산술 연산이 불가능하지만, null값을 가질 수 있습니다.Collection, null 값이 필요한 경우에 사용합니다.
자바에서는 primitive Type과 Reference Type이 있습니다.이는 기본형 과 참조형이라고 하며 서로 다른 특징을 가지고 있습니다.변수에 값 자체를 저장하며 ,stack영역에 생성됩니다.사용되기 전에 반드시 선언되어야 하며, 초기화를 하지 않으면 자료형에
Properties는 HashMap의 구버전인 Hashtable을 상속받아 구현한 것으로, Hashtable은 키와 값을 (Object, Object)의 형태로 저장하는데 비해 Properties는 (String, String)형태로 저장하는 보다 단순화된 컬렉션 클래
Lombok에서 제공하는 이 어노테이션은 생성자 인자를 메서드 체인을 통해 명시적으로 대입하여 생성자를 호출할 수 있게 빌더 클래스를 생성 해준다. 빌더 클래스와 IDE의 자동 완성 기능을 같이 활용하면 생성자 작성 시 오기입 확률과 인자를 누락할 확률을 획기적으로 낮
StudentDAO.java -getStudent()StudentDAO.java는 MySQL과 Student.java 클래스를 이용하여 데이터를 처리하는 클래스 입니다.JDBC API 사용을 위해서 Class.forName 메서드를 이용하여 JDBC 드라이버 로딩DB
자바를 실행할 떄, 실행되는 곳의 정보를 얻어오거나 운영체제의 정보가 필요할 떄가 있습니다.실행 위치에 있는 파일을 읽어들어야 하는데, 현재 위치를 알 수 있는 방법 등 시스템의 정보를 가져올 떄 Systsem.getPropetry()를 사용합니다.java.versi
Java 는 Call by Value 인가, Call by Reference 일까에 대해서 다시 한번 생각해 보았습니다.해석 그대로 값을 호출하는 것을 의미합니다.전달받은 값을 복사하여 처리합니다.즉, 전달받은 값을 변경하여도 원본은 변경되지 않습니다.우리는 Java
List에서 중복 제거를 하려면 기본적으로 Collections에는 stream API 사용시 distinct 라는 중복 제거 메서드가 있습니다.Stream API 의 distinct 메서드에는 Object의 equals로 비교하므로 객체 자체가 같은지를 비교합니다.따
java 에는 Checked Exception 과 Unchecked Exception 이 존재합니다.이둘은 헷갈리지만 사실상 큰 차이가 존재합니다.RuntimeException을 상속하지 않는 클래스는 Checked Exception 로 분류할 수 있고,RuntimeE
SimpleDateFormat 을 사용하여 원하는 포멧으로 출력이 가능합니다.compartTo 함수를 이용합니다.calendar 와 calendar2 의 날짜를 비교하면 날짜에 따라서 다음과 같은 결과 값이 나옵니다.calendar = calendar2 : 0calen
Lombok 은 편리한 기능을 제공하지만 사용상 주의가 필요합니다.이 두개는 매우 편리하게 생성자를 만들어주지만 치명적 버그가 되게 만들 수 있습니다.위 클래스에 대해 자동으로 canlePrice, orderPrice 순서로 인자를 받는 생성자가 만들어집니다.그런데 개
Spring Data JPA 로 쿼리를 생성하는 방법들을 공부해 보겠습니다.쿼리메서드는 Repository 인터페이스에 간단한 네이밍 툴을 이용하여 메서드를 작성하면 원하는 쿼리를 실행할 수 있습니다.쿼리 메서드를 이용할 때 가장 많이 사용하는 문법으로 find를 사용
java는 객체지향 언어이기 때문에 기본적으로 함수형 프로그램이 불가능합니다.하지만 JDK8 버전부터 Stream API와 람다식,함수형 인터페이스 등을 지원해주면서 java를 이용해 함수형으로 프로그래밍할 수 있는 API 들을 제공해주고 있습니다.그중에서 Stream
Stream 연산들은 매개변수로 함수형 인터페이스를 받도록 되어있습니다.람다식은 반환값으로 함수형 인터페이스를 반환하고 있습니다.그렇기 때문에 Stream API를 정확하기 위해서는 람다식과 함수형 인터페이스에 대해서 알고있어야 합니다.람다식(Lambda Express
\-Supplier<T>\-Consumer<T>\-Function<T,R>\-Predicate<T>Supplier 는 매개변수 없이 반환값 만을 갖는 함수형 인터페이스 입니다.Supplier는 T get()을 추상메서드로 갖고 있습니다.Consum
1. Stream 생성하기 Stream API를 사용하기 위해서는 먼저 Stream을 생성해주어야 합니다. 타입에 따라 Stream을 생성하는 방법이 다른데, 여기서는 Collection과 Array에 대하여 Stream을 생성하는 방법에 대해 알아보도록 합니다. C
최종 연산을 통해 생성된 Stream을 바탕으로 결과를 만ㄷ르어야 중간연산한 결과값들을 뽑아낼 수 있습니다.Stream의 요소들을 대상으로 최솟값이나 최댓값 또는 총합을 구하기 위한 최종 연산들이 존재합니다.최소값이나 최대값을 구하기 위해서는 max,min을 이용해야
무턱대고 DTO 객체에서 에러의 유무를 판단하기 위해 valid라는 변수를 추가했습니다.그리고 boolean타입을 가져올때 isValid 식으로 boolean 타입을 묻고 있기에 큰 생각 없이 변수 명을 isValid와 같이 지정하고 값을 가져올 때도 isValid()
Java 8 이전에는 Date,Calendar 포멧터로는 SimpleDateForamtJava 8 이후에는 LocalDate,LocalTime,LocalDateTime 포멧터로는 DateTimeFormatter를 사용합니다.Date 객체를 포맷팅하여 출력하기 위해 Si
문자열과 비교하여, IDE의 적극적인 지원을 받을 수 있습니다.자동완성, 오타검증, 텍스트 리팩토링 등등허용 가능한 값들을 제한 할 수 있습니다.리팩토링시 변경 범위가 최소화 됩니다.내용의 추가가 필요하더라도, Enum 코드 외에 수정할 필요가 없습니다.코드가 단순해지
알고리즘 공부를 하면 Scanner를 사용하는 일이 많은데,많은 이들이 BufferedReader 와 BufferedWriter 를 사용하면서 알고리즘 측면에서 더 효율 높다는 것을 발견하였습니다.초기 System.out.println() 할 데이터의 양이 적다면 큰
프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받습니다.JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리합니다.자바 컴파일러(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이크 코드(.class)로 변환시킵니다.C
자바의 예외 클래스의 구성에 대해 완벽히 이해했다면 직접 사용자 커스텀 예외 클래스를 만들어 사용 할 수도 있습니다.자바의 예외 처리는 결국 클래스입니다. 즉 NULL에 관한 에러가 발생한다면 단지 NullPointerException 클래스가 초기화 되어 그 객체를
직렬화(Serialize) 란 자바 언어에서 사용되는 Object 또는 Data를 다른 컴퓨터의 자바 시스템어서도 사용할 수 있도록 바이트 스트림(Stream of Bytes) 형태로 연속적인 (Serial) 데이터로 변환하는 포맷 변환 기술을 말합니다.역직렬화(Des