일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 테스트
- 검색
- 외부키
- 메소드명
- WeNews
- application.yml
- 메세지수정
- 추후정리
- 예약
- querydsl
- 참조키
- docker명령어
- AuthenticationEntryPoint
- appspec.yml
- 2 > /dev/null
- 적용우선순위
- ubuntu
- Query
- 포트
- ㅔㄴ션
- 네이티브쿼리
- 서브쿼리
- subquery
- MySQL
- 커밋메세지수정
- EC2
- foreignkey
- 컨테이너실행
- appspec
- 테스트메소드
- Today
- Total
제뉴어리의 모든것
남궁성님의 자바의 정석 정리 1 본문
ch1-1,2
자바 :
- 어플리케이션 만드는데 사용
-프로그래밍 언어
-실행환경(jre) + 개발도구(jdk) + 라이브러리(api)
+ 라이브러리란?
미리 만들어 놓은 모듈
ch1-3,4
=> 자바 특징:
- 배우기 쉬운 객체지향 언어
프로그래밍언어 + 객체지향
- 자동 메모리 관리 (가비지 컬렉터, GC)
가비지 컬렉터가 사용했던 메모리를 알아서 반환해줌
- 멀티 쓰레드 지원
하나의 프로그램에서 동시에 여러 작업 가능
- 풍부한 라이브러리로 쉽게 개발 가능
- 운영체제에 독립적
=> 자바 가상 머신(JVM)
자바 프로그램이 실행되는 가상 컴퓨터(VM)
한번 작성하면, 어디서든 실행(Write once, run anywhere)
=> App 실행 환경
일반 앱 환경 (3단계)
APP
OS
HW
Java 앱 환경 (4단계)
Java APP
JVM
OS
HW
ch1- 5,6
=> 자바 버전
JAVA SE 8u111 : 자바 스탠다드 에디션 8버전의 111번째
=> cmd 명령어
- javac.exe -
자바 컴파일러. 사람이 작성한 문장을 기계어로 번역
소스파일(*.java)을 클래스파일(*.class) 로 변환
- java.exe -
1. 자바 인터프리터. 자바 프로그램(클래스파일)을 실행.
2. 클래스파일을 읽어서 실행
=> 자바 기본 개념
- 클래스 - 자바 프로그램의 단위. 자바 프로그램은 최소 한개의 클래스는 존재.
- 자바는 모든 내용이 클래스 안에 조재해야 한다.
- main 메서드 - 자바 프로그램의 시작점.
해당 메서드 없이 실행 불가
ch2-3
=> 변수
-변수란?
하나의 값을 저장할 수 있는 메모리 공간.
오직 하나의 값만 저장 가능.
- 변수의 선언
1. 변수의 선언 이유: 값을 저장할 공간을 마련하기 위해서
2. 변수의 선언 방법 :
- 변수에 값 저장하기
1. 변수에 값 저장하기
2. 변수의 초기화
int x = 0, y = 5; 가능
- 변수의 종류
클래스 변수
인스턴스 변수
지역 변수
0으로 자동 초기화 안됨.
안그렇다면 컴파일때 에러.
- 변수의 값 읽어오기
ch2-4 변수의 타입
변수타입과 저장할 값의 타입이 같아야함.
=> 값의 타입
8개 기본형
- 문자 : char
- 숫자 :
정수 : byte, short, int, long
실수 : float, double
논리 : boolean
ch2-6 리터러의 타입과 점미사
=> 리터럴의 접두사와 접미사
논리형, 정수형, 실수형, 문자형, 문자열
- 정수형과 실수형은 접미사를 붙여야 구별 가능
정수는 리터럴에 아무것도 안 붙이면 기본이 int.
실수는 리터럴에 아무것도 안 붙이면 기본이 double.
정수형
- byte, short, int는 그냥 똑같이 값을 대입함.
예)
byte a = 11;
short a = 11;
int a = 11;
- long형은 L 접미사 붙임
long a = 100L;
실수형
float
=> 리터럴의 접두사와 접미사
- 문자형 : '\n' (줄바꿈 문자 = 개행문자)
=> 변수와 리터럴의 타입 불일치
1. 범위가 '변수 > 리터럴' 경우 OK ---(그릇 > 물건)
ex)
int i = 'a'; 가능 -> int > char 이므로
long l = 123; 가능 -> long > int 이므로
2. 범위가 '변수 < 리터럴' 인 경우, (에러)
int i = 30_0000_0000; //30억, int의 범위 (+-20억) 벗어남
long l = 3.14f; -> long(8byte), float(4byte) 이지만 실수형은 정수형보다 저장범위가 더 넓어서 에러
float f = 3.14; -> float < double 이므로 에러
3. byte, short 변수에 int리터럴 저장 가능.
단, 변수의 타입의 범위 이내여야 함.
byte b = 100; -> OK, 범위(-128~127 이내)
byte b = 128; -> 에러, 범위 밖임
ch2-7,8 문자, 문자열 리터럴, 문자열 결합
=> 문자와 문자열
String s1 = "AB"; ("AB"의 주소는 갖는 s1)
String s = ""; -> 가능한 빈 문자열
char ch = ''; -> 에러
String s1 = "A" + "B"; -> 결과 : "AB"
String s = "" + 7; -> "" + "7" -> 결국 "7" (숫자 -> 문자열로 바꿈)
+ 문자열 결합은 왼쪽에서 오른쪽으로 진행되므로 순서에 따라 결과가 다름
ex)
""+7+7 -> "7"+7 -> "7"+"7" ->"77" (문자열"77")
7+7+"" -> 14+"" + "14"+ "" -> "14"
ch2-17 타입간의 변환방법
1.문자와 숫자간의 변환
ex)
3 --변환--> '3' - 방법 : 3 + '0'
3 <--변환-- '3' - 방법 : 3 - '0'
2. 문자열로의 변환
3 --변환--> "3" - 방법 3 + ""
'3' --변환--> "3" - 방법 '3' + ""
"3" --변환--> 3 - 방법 Integer.parseInt("3")
"3.4" --변환--> 3.4 - 방법 Double.parseDouble("3.4")
ch5-2 배열의 선언과 생성
선언 방법
1. 타입[] 변수이름; -> int[] score;
2. 타입 변수이름[]; -> int score[];
배열과 선언 예
타입[] 변수이름; : 배열을 선언 (배열을 다루기 위한 참조변수 선언)
변수이름 = new 타입[길이]; : 배열을 생성 (실제 저장공간을 생성)
ch11-1 컬렉션 프렘임웍
컬렉션
여러 객체(데이터)를 모아 놓은것
프레임웍 (틀작업)
표준화, 정형화된 체계적인 프로그래밍 방식
라이브러리
누군가 이미 만들어 놓은 정보(모듈)
컬렉션 프레임웍
- 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식
- 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공
- java.util 패키지에 포함. JDK1.2부터 제공 (이전에도 있었지만 표준화가 안되있었음)
컬렉션 클래스
다수의 데이터를 저장할 수 있는 클래스 (Vector, ArrayList, HashSet)
ch11-2 컬렉션 프레임웍의 핵심 인터페이스
List
순서, 중복 있음
- (저장)순서가 있는 데이터의 집합. 데이터의 중복을 허용한다.
예) 대기자 명단
- 구현 클래스 : ArrayList, LinkedList, Stack(표준화전), Vector(표준화전) 등
Set (집합) (햄버거 세트)
순서, 중복 없음
순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다.
예) 양의 정수집합, 소수의 집합
- 구현 클래스 : HashSet, TreeSet 등
Map
순서 있음. 키는 중복 X 그러나 값은 O
키와 값의 쌍으로 이루어진 데이터의 집합.
순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
예) 우편번호, 지역번호(전화번호), 아이디 패스워드
- 구현 클래스 : HashMap, TreeMap, Hashtable(표준화전), Properties(표준화전) 등
ch11-22 Iterator(신버전), ListIterator, Enumeration(구버전)
-컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
-Enumeration은 Iterator의 구버전
-ListIterator는 Iterator의 접근성을 향상시킨 것 (단방향 -> 양방향)
Iterator 멤버 함수
boolean hasNext() : 확인
읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다
Object next()
다음 요소를 읽어 온다 next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지
확인하는 것이 안전하다.
Enumeration 멤버 함수
boolean hasMoreElements() : Enumeration버전 hasNext
hasNext와 거의 비슷
Object nextElement()
next와 거의 비슷
ListIterator는 멤버 함수
previous() 함수가 존재
- Iterator의 필요성
List, Set, Map 이 컬렉션들의 구조가 다 다르기 때문에
해당 구조의 컬렉션들을 읽어오는 방법을 표준화할 필요가 있었기 때문에.
+ 각 컬렉션들의 구조
List 는 배열처럼 순차적 | | | | | |
Set 은 이중 셋(트리 셋 구조)
Map key-> value 형식
=> Iterator
-컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것.
- 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용
List, Set 모두 Collection 인터페이스를 구현한 클래스이고
그 인터페이스에는 iterator() 메소드가 있음.
ex)
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
Iterator it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next()); //next() 할때마다 가리키는곳을 넘어감
}
그러므로 다시 처음부터 접근하고 싶다면 다시 Iterator를 얻어와야함.
즉, Iterator는 1회용
ch11-24 Map과 Iterator
- Map에는 iterator()가 없다. keySet(), entrySet(), values()를 호출해야 함
(Map은 Collection 인터페이스를 구현한 클래스가 아님)
EX )
Map map = new HashMap();
Iterator it = map.entrySet().iterator();
+엔트리란?
key, value 한 쌍을 엔트리라고함.
'JAVA' 카테고리의 다른 글
배열 요소 중에 특정값이 존재하는지 검사 (0) | 2022.05.15 |
---|---|
배열 내용 출력하기 (0) | 2022.05.15 |
java 예외처리 - throw, throws (0) | 2021.04.08 |
워크스페이스/프로젝트/패키지/클래스의 개념 및 명명 규칙 (0) | 2021.04.07 |
자바 Array 특정값으로 초기화 하는 방법 (0) | 2021.04.03 |