'HTML+CSS+자바스크립트' 카테고리의 다른 글
자바스크립트 (0) | 2023.05.25 |
---|---|
CSS고급 선택자 (0) | 2023.05.24 |
CSS,박스 모델 (0) | 2023.05.23 |
p.191, 192 예제 (0) | 2023.05.22 |
CSS의 기본(1) (0) | 2023.05.22 |
자바스크립트 (0) | 2023.05.25 |
---|---|
CSS고급 선택자 (0) | 2023.05.24 |
CSS,박스 모델 (0) | 2023.05.23 |
p.191, 192 예제 (0) | 2023.05.22 |
CSS의 기본(1) (0) | 2023.05.22 |
자바스크립트 (0) | 2023.05.25 |
---|---|
CSS고급 선택자 (0) | 2023.05.24 |
CSS,박스 모델 (0) | 2023.05.23 |
p.233,234,235 예제 (0) | 2023.05.22 |
CSS의 기본(1) (0) | 2023.05.22 |
스타일(style): HTML문서에서 자주 사용하는 글꼴이나 색상, 정렬, 각 요소의 배치 방법과 같이 문서의 겉모습을 결정짓는 것을 가리킴.
반응형 웹 디자인 : PC, 모바일과 상관없이 웹 브라우저의 크기에 따라 화면 레이아웃을 자동으로 바꿔주는 방법. 하나의 웹문서에서 작동하도록하는 것이 스타일의 역할. 배치가 달라짐.
CSS스타일의 형식
[선택자 {속성1: 속성값1; 속성2: 속성값2; }] //속성1: 속성값1 = 스타일 규칙.
p(타입 선택자: 스타일을 어느 태그에 적용할지 알려줌){(괄호 안에 스타일 정보)
text-align(텍스트 정렬 속성): center(값);
color(글자색 속성): blue(값);
}
스타일 규칙
;으로 구분하고 {} 안에 나열함.
스타일 주석: /**/으로 여러줄 주석이 들어감.
내부 스타일 시트
외부 스타일 시트
CSS기본 선택자//잘 기억 요소를 찾을 때 사용
전체 선택자: 모든 하위 요소에 스타일을 한꺼번에 적용할 때 사용. 웹브라우저의 기본 스타일을 초기화할 때 자주 사용.
margin: 외부 여백. 브라우저에 맞게 margin:0은 여백없이 출력.
태그: 태그자체
요소: 태그를 포함해 <p>태그를 적용한 '텍스트 단락 지정하기' 부분을 p 요소.
타입 선택자: 문서에 특정 태그를 사용한 모든 요소에 스타일이 적용됨.
[태그명{ 스타일 규칙 }]
class 선택자: 요소의 특정 부분에만 스타일 적용. 문서안에서 여러번 반복할 스타일이라면 클래스 선택자로 정의.
span은 오로지 스타일을 적용하기 위한 태그.
[.클래스명{ 스타일 규칙 } ]
헷갈린 부분: 내부 스타일 시트와 타입 선택자의 차이-> 내부 스타일 안에 타입 선택자가 존재.
id 선택자: 요소의 특정 부분에만 스타일 적용, #다음에 id 이름 지정,문서 안에서 한번만 사용(유일 값) (클래스 선택자와의 차이)
[#아이디명 { 스타일 규칙 }]
auto : 균등하게 줌(가운데 정렬)//전체: 1000px 사진: 500px 좌우: 250px
그룹 선택자: 같은 스타일을 사용하는 선택자를 한꺼번에 정의, 쉼표(,)로 구분해 여러 선택자를 나열
[선택자1, 선택자2 { 스타일 규칙 }]
캐스케이딩 스타일 시트: 웹 요소에 둘 이상의 스타일을 적용할 때 우선순위에 따라 적용할 스타일을 결정.
스타일 우선순위: 스타일 규칙의 중요도와 적용 범위에 따라 우선순위가 결정되고, 그 우선순위에 따라 위에서 아래로 스타이을 적용.
스타일 상속: 태그의 포함 관계에 따라 부모 요소의 스타일을 자식 요소로, 위에서 아래로 전달합니다.
//위에서 아래로(인터프리터 방식 중첩 적용되면 아래있는 것이 최종적)
원칙1: 스타일 우선 순위
1.얼마나 중요한가.
사용자가 지정한 스타일(), 제작자 스타일(웹 사이트를 만들 때 제작자가 만든 스타일), 웹 브라우저가 기본으로 정해 놓은 스타일(기본 스타일)
2.얼마나 한정지을 수 있는가.
!important(어떤 스타일보다 우선 순위), 인라인 스타일(해당 태그에만 적용되는 스타일. 문서 안에서 한번만 사용됨), id 스타일(특정 부분에만 적용되는 스타일. 문서 안에서 한번만 사용됨), 클래스 스타일(특정 부분에만 적용되는 스타일. 문서 안에서 여러번 사용됨), 타입 스타일
3.소스 순서에 따라
나중에 온 스타일이 먼저 온 스타일을 덮어씀.
원칙2: 스타일 상속
자식요소에서 별도로 스타일을 지정하지 않으면 부모 요소의 스타일 속성들이 자식요소로 전달되는 것.
클래스와 id는 중첩되어 자주 사용.
font-family: 웹 문서에서 사용할 글꼴,글꼴이 없을 경우를 대비해서 하나 이상 지정.
[font-family:<글꼴 이름>|[<글꼴 이름>,<글꼴 이름>]]
공백 자체를 가지고 있는 글꼴은 큰 따옴표로 묶음 //"맑은 고딕"
속성값을 나열할 때 값이 아니라 유형이라면 < >로 묶습니다. 이때 속성을 유형처럼 사용 가능합니다.
[font-size:<절대 크기>|<상대 크기>|<크기>|<백분율> ] //반드시 단위가 필요.px,pt,%,em(1em=16px=12pt)등 -는 사용 불가능, 부모 요소의 클자 크기를 시준으로 상대적인 글자 크기 지정
[font: <font-style><font-variant><font-weight> ]
font-style: 이탤릭체로 글자 표시
[font-style : normal |italic|oblique]
font-weight: 글자 굵기
[font-weight: normal|bold|bolder|lighter|100|200|..|800|900]
웹 폰트: 문서 안에 글꼴 정보도 함께 저장했다가 사용자가 웹 문서에 접속하면 글꼴을 사용자 시스템으로 다운로드 시켜 사용하는 글꼴.
[@font-face{
font-family: <글꼴 이름>; //파일명
src: <글꼴 파일>[<글꼴파일>,<글꼴파일>,...]; ]
color 속성: 글자 색 지정. 색상값 뒤에 a는 투명도.
속성값: 16진수(#000000:검정, #ffffff: 흰색), rgb, hsl, 색상이름
[color: <색상>]
rgb, rgba: 0~255, a는 불투명도 0~1
[h1{ color: rgb(0,0,255)}]
[h1{ color: rgba(0,0,255,0.5)}]
hsl, hsla: 채도(0% 회색톤, 100% 원래색), 명도(0% 가장 어두움, 50% 원래색,100% 흰색)
[hsl(0,100%,50%)는 빨간색]
text-align: 텍스트 정렬
[text-align: start | end | left | right | center | justify | match-parcent ]
line-height: 줄 간격 조절
[lint-height:2.5; ] 글자 크기의 2.5배
텍스트를 세로로 가운데 정렬: line-height를 height값과 값이 사용.
text-decoration: a태그에 주로 사용(하이퍼링크 제거에 사용)
text-shadow: 텍스트에 그림자 효과를 추가.
[text-shadow: none | < 가로거리 > < 세로거리 > < 번짐 정도 > < 색상 > ]
가로거리: +오른쪽, -왼쪽
세로거리: + 아래, - 위
번짐정도: 양수값 크게, 음수값 작게(기본값 0)
색상: 현재 글자색이 기본값.
text-transform: 텍스트의 대소문자 변환(capitalize: 첫번째 글자, uppercase: 모든 글자 대문자, lowercase: 모든 글자 소문자)
letter-spacing: 글자와 글자 사이의 간격 조절
word-spacing: 단어와 단어 사이 간격 조절
list-style-type : 불릿의 모양이나 번호 스타일을 지정가능.(none은 제거)
list-style-image: 불릿 대신 이미지를 사용
[list-style-image:<url(이미지 파일 경로)>|none]
list-style-position: 목록 들여쓰기, 내려쓰기.(outside: 기본값, inside: 기본 위치보다 안으로 들여씁니다.)
[list-style-position: inside | outside ; ]
위에 3가지가 합쳐서 list-style
ol태그: 주로 메뉴 만들 때
caption-side: 표 제목의 위치를 정해 줌.
[caption-side: top | bottom]
border: 표에 테두리를 그려 줌.
border-spacing: 셀 사이의 여백 조절 0이면 여백이 없어짐
[ border-spacing : 수평거리 수직거리 ]
border-collapse: 표와 셀 테두리를 합쳐준다.(자주 사용 중요)
[border-collapse: collapse|separate(따로 표시가 기본값)]
자바스크립트 (0) | 2023.05.25 |
---|---|
CSS고급 선택자 (0) | 2023.05.24 |
CSS,박스 모델 (0) | 2023.05.23 |
p.233,234,235 예제 (0) | 2023.05.22 |
p.191, 192 예제 (0) | 2023.05.22 |
네트워크 : 데이터 교환을 목적으로 로컬컴퓨터와 원격컴퓨터 간에 데이터의 흐름을 나타내는 구조. ( 여러 대의 컴퓨터를 통신 회선으로 연결한 것)
네트워크모델 : 자원이나 데이터의 공유하는 방법에 따라 나눈것.
IP주소 (컴퓨터 주소): 네트워크에 존재하는 컴퓨터를 유일하게 식별하는 주소(숫자). 인터넷에 연결된 모든 통신망과 이 통신망에 연결된 컴퓨터에 (송신자와 수신자를 구별하는 고유의 주소) 네트워크 어댑터마다 할당.
도메인 네임 : IP주소를 문자로 표현한것
DNS : 도메인 네임을 IP주소로 자동으로 변환해 주는 서버
포트번호 (포트 번호): 컴퓨터에서 해당 프로세스를 찾을 때 필요한 번호이다.
호스트 이름 : 네트워크상에 존재하는 컴퓨터 이름.
InetAddress클래스 생성자가 없다. 정적클래스에서 정보를 가져오는 형식으로 사용.
[InetAddress ita = InetAddress.getByName("URL값"); ]
메서드명 | 설명 |
getLostHost() | 현재 컴퓨터의 InetAddress객체를 반환한다. |
getByName(String hostName) | 전달받은 이름(hostName)으로 지정된 컴퓨터의 InetAddress 객체를 반환한다ㅣ. |
getAllByName(String hostName) | 전달받은 이름(InetAddress)으로 지정된 모든 컴퓨터의 InetAddress객체를 배열로 반환한다. |
equals(InetAddress other) | 인수로 전달받은 컴퓨터(other)와 IP주소가 같으면 true, 아니면 false를 반환한다. |
getAddress() | IP주소를 나타내는 4개의 바이트 배열을 반환한다. |
getHostAddress() | 호스트의 IP주소를 나타내는 문자열을 반환한다. |
getHostName() | 호스트의 이름을 나타내는 문자열을 반환한다. |
URL : 인터넷에서 각종 서비스를 제공하면서 서버 내 파일과 같은 자원의 위치를 나타내고자 하는 표준적인 논리 주소. 인터넷이 어디 있는지를 알려주고자 사용하는 규약
[프로토콜://서버정보: 포트번호/디렉토리명/파일명]
생성자명 | 설명 |
URL(String utlString) | 전달받은 문자열로부터 URL 객체를 생성한다. |
URL(String protocol, String host, String file) | 전달받은 프로토콜과 호스트, 파일명으로 부터 URL 객체를 생성한다. |
URL(String protocol, String host, int port, String file) | 전달받은 프로토콜과 호스트, 포트번호, 파일명으로부터 URL 객체를 생성한다. |
URL클래스 메소드
메소드 | 설명 |
getProtocol() | URL 주소의 프로토콜을 반환한다. |
getHost() | URL 주소의 호스트 이름을 반환한다. |
getPort() | URL 주소의 포트 번호를 반환한다. |
getPath() | URL 주소의 경로 요소를 반환한다. |
getQuery() | URL 주소의 쿼리 요소를 반환한다. |
getFile() | URL 주소의 파일 이름을 반환한다. |
getRef() | URL 주소의 참조 요소를 반환한다. |
URL 클래스는 URL을 이용하여 연결 및 입력 스트림을 형성할 수 있지만, URLConnection 클래스는 URL을 이용하여 참조된 자원에 대해 읽고 쓰는 작업(입력, 출력 스트림)을 형성할 수 있다.
이때 URL 인스턴스 생성 후 openStream()으로 입력 스트림 형성한다.
[URL url = new URL("http://www.hanbit.co.kr/");
InputStream is = url.openStream();]
Java 생성자 및 클래스 변수, 클래스 메서드 (1) | 2023.05.14 |
---|---|
Java 객체 지향 프로그래밍 (0) | 2023.05.13 |
Java 배열 (0) | 2023.05.13 |
Java 제어문(조건문, 반복문, 보조제어문) (0) | 2023.05.13 |
Java 변수 및 연산자, 수식 (0) | 2023.05.13 |
다향성을 적용해 적용하면 제이터를 접근 할 때마다 항상 원하는 타입으로 형변환을 하여야 한다. 구현면에서는 효율적이고 편리하지만, 자료형에 매우 불안정한 구조가 된다.
제네릭 프로그래밍
제네릭 클래스 : 타입을 변수로 표시(타입매개변수 : 객체 생성시에 프로그래머에 의하여 결정)
타입매개변수 : E-Element, K-Key, N-Number, T-Type, V-Value
[클래스명<타입인자>참조변수 = new 클래스명<타입인자>(); ]
제네릭 타입
[public class 클래스명 <타입매개변수>]
타입 파라미터(= 매개변수 타입)
타입매개변수로 전달되는 타입의 종류를 제한하고 싶은 경우가 있다. 특정한 종류의 객체들만을 받게 하고 싶은 경우 사용하는 것이 한정된 타입매개변수이다. 이 기능을 사용하기 위해서는 extends나 super 키워드를 사용한다.
[<타입 매개변수 extends 슈퍼 클래스명> : 슈퍼 클래스를 상속받은 하위 객체들만 가능하다.
<타입 매개변수 extends 인터페이스명> : 인터페이스로부터 구현 클래스 객체들만 가능하다.]
제네릭 타입을 매개변수의 타입이나 리턴타입으로 사용할 때 와일드 카드로 명시할 수도 있다.
와일드 카드는 ?로 표현 : 어떤타입 매개변수도 지정할 수 있다는 의미. 현재 객체의 타입 매개변수와 같지 않은 타입의 인자로 받을 수 있다.
[<?> 제한없음
<? extends 슈퍼 클래스> : 슈퍼 클래스이거나 슈퍼클래스로부터 상속받은 하위 객체만 타입으로 지정
<? super 서브 클래스> : 서브 클래스이거나 서브 클래스가 상속하는 상위 객체만 타입으로 지정]
제네릭 메서드 : 매개변수 타입과 리턴 타입으로 타입 매개변수를 갖는 메소드, 타입 매개변수를 리턴 타입과 매개변수에 사용
[public <타입매개변수,...> 리턴타입 메서드명(매개변수,...){ }]
호출
프로그램 : 데이터를 표현하고 데이터를 처리하는 것
자료구조 : 데이터를 효율적으로 사용되도록 구조적으로 저장하고 관리하는 것 , 데이터를 추가, 수정, 삭제, 검색이 효율적으로 함(정형화하거 있는 데이터 저장방식 : 배열, 리스트, 스택, 트리, 큐, 해시 정리)
프로그램 구성 = 코드 + 데이터(데이터 관리 기술 = 자료구조)
알고리즘 : 자료구조가 데이터의표현돠 저장에 대한 방법이라면 알고리즘은 표현되거나 저장된 데이터를 대상으로 '문제를 해결하는 방법'이다. 알고리즘과 자료구조는 밀접하게 관련되어 있다.(정렬, 탐색 등으로 정리)
컬렉션 : 자료구조와 알고리즘을 인터페이스,클래스로 구현하려 제공하는 자바 API, 컬렉션 괸련 클래스들은 많은 양의 인스턴스를 다양한 형태로 저장하는 기능을 제공한다. 다양하고 효율적으로 인스턴스의 저장이 가능. 기본적으로 객체들의 집합을 의미. 객체 단위의 연산을 제공,
배열의 문제점 : 불특정 다수의 객체를 저장하기에는 문제, 객체를 저장하려면 어디가 비어있는지 확인해야함
배열과 컬렉션의 차이점
컬렉션 프레임워크(컬레션 인터페이스, 컬렉션 클래스) : 자료 구조에 사용하는 인터페이스, 인터페이스로 구현된 클래스, 괸련된 알고리즘(java.util 패키지에 존재), 구체적이고 체계화된 API(프로그래밍 접근 방식)을 제공한다는 의미.
프레임워크 : 자료구조에 상관없이 추가하려면 add(), 삭제하려면 remove() 같이 표준화된 접근 받식을 제공하는 것. 사용 방법을 미리 정해 놓은 라이브러리를 말한다.
인터페이스 및 클래스 | 설명 |
인터페이스 | 컬렉션에서 공통으로 제공해야 하는 연산들을 추상적으로 정의하고, 구체적인 구현은 구현 클래스에 위임한다. |
구현 클래스 | 컬렉션을 실제로는 어떤 자료구조를 적용해 구현하느냐에 따라 컬렉션의 종류가 달라진다. |
알고리즘 | 컬렉션마다 유용하게 사용할 수 있는 메서드를 의미한다. |
인터페이스 | 설명 |
Collection | 모든 자료 구조의 부모 인터페이스로서 객체의 모임을 나타낸다 |
Set | 집합(중복된 원소를 가지지 않는)을 나타내는 자료구조 |
List | 순서가 있는 자료 구조로 중복된 원소를 가질 수 있다. |
Map | 키와 값들이 연관되어 있는 사전과 같은 자료구조 |
Queue | 들어온 순서대로 나가는 FIFO(First - In-First-Out) 자료구조 |
Collection은 거의 모든 컬렉션 인터페이스의 부모 인터페이스에 해당. 모든 컬렉션 클래스들이 Collection 인터페이스를 구현하고 있기 때문에 Collection에 들어 있는 메소드들은 거의 대부분 컬렉션 클래스(구현 클래스)에서 사용할 수 있다.
기능 | 메서드 | 설명 |
객체추가 | boolean add(E e) | 주어진 객체 맨 끝에 추가 |
객체비우기 | void clear() | 컬렉션의 모든 요소 비우기 |
여부판단 | boolean isEmpty() | 컬렉셩의 요소 존재 여부 판단 |
객체삭제 | boolean remove(Object o) | 매개변수로 전달받은 객체를 컬렉션에서 삭제 |
요소 수 반환 | int size | 컬렉션의 요수 개수 |
리스트 : 순서를 가지는 원소들의 모듬으로 중복된 원소를 가질 수 있다. 위치를 사용하여 원소에 접근한다.
ArrayList클래스 : List 인터페이스의 구현 클래스. 선형구조(데이터를 구조화하는 기본 표현 방식) 배열을 이용해 자료를 관리한다. 순차구조방식, 연결 구조 방식이 있다.기본 생성자로 ArrayList 객체를 생성하면 내부에 10개의 객체를 저장할 수 있는 초기 용량(capacity)을 가지게 된다. 저장되는 객체 수가 늘어나면 용량이 자동 증가. 동일한 데이터도 여러번 저장될 수 있으므로 맨 처음에 있는 데이터의 위치가 반환된다.
순차구조 : 항목 간의 논리적인 순서와 메모리에 저장되는 물리적 순서가 같은 구조(배열의 원리와 동일)
indexOf(): 특정한 데이터가 저장된 위치를 알 수 있다.
lastIndexOf (): 검색을 반대 방향으로 할 때 사용.
배열: 배열명.length
문자열: 문자열참조변수 또는 "문자".length()
리스트 구현 클래스 : 리스트명.size()
ArrayList에 있는 원소에 접근하는 하나의 방법은 반복자를 사용하는 것
반복자: 특별한 타입의 객체로 컬렉션의 원소들에 접근하는 것이 목적으로 객체 집합의 항목들에 차례대로 접근하는데 하용하는 객체
Iterator : 컬렉션에 저장된 데이터의 위치정보를 포함한 커서가 있어서 인덱스 등을 사용하지 않고 쉽게 데이터에 접근할 수 있다.
Collection view : 컬렉션에 저장된 모든 데이터를 순차으로 접근하여 사용할 목적으로 사용하는 Iterator
디폴트 패키지 : 현재 디렉터리. package 선언분이 없이 만들어진 클래스의 패키지
서로 다른 패키지 안에 들어 있는 클래스나 인터페이스를 사용하는 방법
JAR 압축 파일(.jar): 클래스 파일은 또한 JAR파일 형태로 저장될 수 있다. JAR 파일은 여러 개의 클래스 파일을 압축하여서 가지고 있다.
자바의 기본 패키지는 java로 시작, 확장 패키지는 javax로 시작
모듈: 관련있는 여러개의 자바 패키지를 하나로 묶어 놓은 단위. 모듈을 구성하는 패키지에는 여러 개의 자바 클래스파일(*.class),즉 API가 존재
java.base: 모든 모듈이 의존하는 기본모듈로, 이 모듈에 포함되어 있는 패키지는 댜부분의 자바 프로그램에서 않이 사용하는 것들
패키지 | 기능(설명) |
java.io | 외부 데이터 입출력을 처리하는 기능 |
java.lang | 프로그램 개발 시 기본적으로 필요한 기능 |
java.net | 네트워크를 위한 클래스와 인터페이스 |
java.security | 보안 프레임워크를 위한 클래스와 인터페이스 |
java.sql | 데이터베이스에 저장된 데이터를 접근하기 위한 기능 |
java.util | 날짜, 시간, 컬렉션 처리에 관한 기능 |
java.text | 날짜와 숫자를 원하는 형태의 문자열로 만들어 주는 포맷 클래스 제공 |
java.nio | 데이터 저장을 위한 Buffer및 새로운 입출력 클래스 제공 |
java.awt | 그래픽과 이미지 관련 기능 |
java.swing | UI 구현 기능 |
java.lang패키지 : 자바 프로그램늬 기본적인 클래스를 담은 패키지, 포함된 클래스와 인터페이스는 import 없이 사용
클래스 | 설명 |
Object 클래스 | 모든 클래스의 최상위 클래스 |
Math 클래스 | 각종 수학 메서드(최대값, 최소값, 난수)들을 포함하는 클래스 |
Wrapper 클래스 | 기본 자료형(기초형)에 대응된 클래스 기본타입의 데이터를 갖는 객체를 만들 때 사용 문자열을 기본 타입으로 변환할 때 사용 |
String 클래스 | 문자열을 저장하고 여러가지 정보를 얻을 때 클래스 |
System 클래스 | 표준 입출력 클래스 표준 입력 장치 (키보드)로부터 데이터를 입력 받을 때 사용. 표준 출력 장치(모니터)로 출력하기 위해서 사용 |
Class 클래스 | JVM에 로드된 클래스에 대한 정보를 얻기 위한 클래스 |
Array 클래스 | 배열을 조작(비교, 복사, 정렬, 찾기)할 때 사용 |
Calendar 클래스 | 운영체제의 날짜와 시간을 얻을 때 사용 |
Date 클래스 | 날짜와 시간을 얻을 때 사용 |
Objects 클래스 | 객체 비교, 널 여부 등을 조사할 때 사용 |
StringTokenizer 클래스 | 특정 문자로 구분된 문자열을 나누고자 할 때 사용 |
Random 클래스 | 난수를 얻을 때 사용 |
Object클래스 : 모든 클래스의 최상위 클래스
protected Object clone() | 객체 자신의 복사본을 생성하여 반환한다. |
public boolean equals(Object obj) | obj가 이 객체와 같은지를 나타낸다. |
protected void finalize() | 가비지 콜렉터에 의하여 호출된다. |
public final Class getClass() | 객체의 실행 클래스를 반환한다. |
public int hashCode() | 객체에 대한 해쉬 코드를 반환한다. |
public String toString() | 객체의 문자열 표현을 반환한다. |
String 클래스 : 자바는 기초 자료형으로 문자열을 지원하지 않는다. 자바에서는 문자열을 클래스형으로 다룬다.
String pool : 큰따옴표로 생성된 String 인스턴스들이 위치하는 논리적으로 구분된 영역. 만약 String pool에서 생성하려는 문자열과 똑같은 문자열을 가진 String 인스턴스가 있다면 새로 생성하지 않고 기존 인스턴스의 주솟값을 반환한다.
큰따옴표로 생성하면 무조건 인스턴스를 생성하는 것이 아니고 힙 메모리에 고유한 영역인 String pool을 찾아간다.
String 클래스의 생성자
생성자 | 설명 |
String(String str) | 문자열을 갖는 String 객체를 생성한다. |
String(char[] value) | 문자형 배열을 갖는 String객체를 생성한다. |
String(byte[] value) | 바이트 배열을 갖는 String 객체를 생성한다. |
String 클래스 : 사용빈도 높은 메소드
리턴 타입 | 메서드명(매개변수) | 설명 |
char | charAt(int index) | 지정된 인데스 위치에 있는 문자를 리턴한다. |
boolean | equals(Object anObj) | 전달받은 문자열(anObj)과 String 객체의 문자열이 같은지 비교해 결과를 리턴한다. |
byte[] | getBytes() | 문자열을 바이트배열(byte[])로 리턴한다. |
byte[] | getBytes(Charset charset) | 주어진 문자셋으로 인코딩한 byte[]로 리턴한다. |
int | indexOf(String str) | 문자열내에서 주어진 문자열의 위치를 리턴한다.(존재하지 않으면 -1을 리턴) |
int | length() | 총 문자의 수를 리턴한다. |
String | replace(char oldChar, char newChar) | 문자열내에서 oldChar를 newChar로 변환하여 리턴한다. |
String | substring(int beginIndex, int endIndex) | 시작인덱스로부터 마지막인덱스 전까지 문자열을 리턴한다. |
String | toLowerCase() | 소문자로 변환한 새로운 문자열을 리턴한다. |
String | toUpperCase() | 대문자로 변환한 새로운 문자열을 리턴한다. |
String | trim() | 앞뒤 공백을 제거한 새로운 문자열을 리턴한다. |
String | valueOf(int i) valueOf(double d) |
기초 자료형의 값을 문자열로 리턴한다. |
String | concat(String str) | 전달받은 문자열(str)을 해당 메서드를 호출한 String 객체의 문자열 뒤에 합쳐 새로운 문자열을 생성해서 반환한다 |
String | contains(String str) | 전달받은 문자열(str)이 String 객체의 문자열에 포함되었는지를 검사한다. |
String | intern() | 문자열을 상수 풀에 등록하고 이미 같은 문자열이 존재하면 해당 문자열의 참조값을 반환한다. |
바이트 배열로 변환(getBytes()) : 시스템의 기본 문자셋으로 인코딩된 바이트 배열 얻기
[byte[] bytes = "문자열".getBytes(); ]
문자열 찾기(indexOf())
문자열 변환(valueOf()) : 기본 타입의 값을 문자열로 변환
문자열 길이(length()): 공백도 문자에 포함
문자열 대치(replace()): 첫 번째 매개값인 문자열 찾음, 두 번째 매개값인 문자열로 대치
String oldStr = "자바 프로그래밍";
String newStr = oldStr.replace("지바"."JAVA");
문자열 결합 연산자 : +
StringBuffer, StringBuilder
capacity() : 버퍼의 크기
length() : 문자열의 길이 수
StringBuffer만이 제공하는 가장 중요한 메서드
Math 클래스 : 모든 메서드는 정적 메서드이므로, 객체를 생성하지 않고도 바로 사용할 수 있다.
Math 클래스의 클래스필드
Wrapper(기본형을 참조형으로 추상화하는 과정) 클래스 : 기본형과 참조형간의 형변환을 가능하게 해주는 클래스가 래퍼 클래스. 메소드의 인수로 객체 타입만이 요구되면, 기본타입의 데이터를 그대로 사용할 수는 없다. 이때에는 기본 타입의 데이터를 먼저 객체로 변환한 후 작업을 수행해야 한다.
Wrapper 객체 : 기본 타입 값을 내부에 두고 포장하는 객체
Wrapper 클래스는 Wrapper라는 이름의 클래스가 존재하는 것이 아니라 java.lang 패키지에 있는 클래스 중 자바의 기본 데이터 타입과 매핑되는 클래스들을 의미
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
자료형에서 값을 다루는 기본형과 주소를 다루는 참조형간위 형변환을 박싱(boxing)과 언박싱(unboxing)
박싱(valueOf())
Integer iValue;
iValue = 10;
//정수를 자동으로 Integer 객체로 포장
언박싱(기본타입명 + Value())
System.out.println(iValue+1);
//iValue는 자동으로 int형으로 변환
#문자열을 기본 타입 값으로 변환 : parse + 기본타입 명 -> 정적 메소드
int num = Integer.parseInt("10") //문자열을 int형으로 반환
double num = Double.parseDouble("1.2") //문자열을 double형으로 반환
문자열 분리 방법 : String의 split() 메서드 사용(정규표현식을 구분자로 해서 부분 문자열 분리, 배열에 저장하고 리턴), java.util.StringTokenizer클래스 이용
문자열을 구분자를 사용해 나누어 준다. 나누어진 문자열을 토큰이라고 한다. 구분자를 지정하지 않으면 공백이 구분자가 된다.
StringTokenizer클래스
생성자 | 설명 |
StringTokenizer(String str) | 주어진 문자열을 위한 StringTokenizer 객체를 생성한다. |
StringTokenizer(String str, String delim) | 주어진 문자열을 위한 위한 StringTokenizer 객체를 샹성한다. 분리자로 delim을 사용한다. |
StringTokenizer(String str, String delim, boolean returnDelims) | 주어진 문자열을 위한 StringTokenizer 객체를 생성한다. 분리자로 delim을 사용한다. 구분자도 토큰으로 포함할지 여부를 나타낸다. 기본값은 false, 출력하지 않는다. |
메소드명 | 설명 |
int countTokens() | 문자열에 존재하는 토큰의 개수를 반환한다. |
boolean hasMoreTokens() | 나누어진 문자열에서 다음으로 가져올 토큰이 있는지 여부를 검사해서 그 결과를 boolean형으로 반환한다. |
String nextToken() | 나누어진 문자열에서 다음 토큰을 반환한다. |
String nextToken(String delim) | 다음 토큰을 반환하고 분리자를 delim으로 변경한다. |
java.util 패키지
생성자 | 설명 |
Random() | 새로운 난수 발생 객체를 생성한다. |
메소드명 | 설명 |
int nextInt(int n) | 0 과 n전까지의 int형의 난수를 발생한다. |
double nextDouble() | double형의 0.0과 1.0사이의 난수를 발생한다. |
Arrays 클래스 : 모든 메서드는 정적 메소드, 객체를 생성하지 않고도 바로 사용 가능
메소드명 | 설명 |
static void sort(int[] a) | 전달받은 배열의 모든 요소를 오름차순으로 정렬한다.(지정된 int형의 배열을 정렬한다.) |
static void fill(int[] a, int val) | 주어진 val값을 가지고 배열을 채운다 |
static boolean equals(int[] a, int[] b) | 주어진 두 개의 배열이 같으면 true를 반환한다. |
static List asList(Object[] a) | 주어진 배열을 고정길이의 리스트로 변환한다. |
static int[] copyOf(int[] original, int newLength) | 전달받은 배열의 전체 또는 특정 길이만큼을 새로운 배열로 복사하여 반환한다. |
Date 클래스 : 날짜를 표현하는 클래스, 날짜 정보를 객체간에 주고 받을 때 주로 사용
Calendar 클래스 : 날짜와 시간에 관한 처리를 하는 추상클래스
[Calendar now = Calendar.getInstance(); ]
오류 : 오작동을 하거나 비정상적으로 종료되는 것
예외 : 사용자의 잘못된 조작 또는 부정확한 데이터 처리 또는 개발자의 잘못된 코딩으로 인한 오류. 자바에서 예외도 하나의 객체
예외 처리 : 미리 코드를 작성해서 대처하는 과정
예외 객체: 오류를 설명하는 객체를 생성하게 되는데 그 객체. 오류정보, 오류의 타입과 오류 발생 시의 프로그램의 상태 등의 정보를 포함. 생성하는 것을 예외를 던진다(throw) 처리하는 것 예외를 잡는다(catch)
#예외 처리 코드: 예외 발생 시 프로그램 종료 막고. 정상 실행 유지할 수 있도록 처리
[try{
//예외가 발생할 수 있는 코드
} catch(예외종류 참조변수){
//예외를 처리하는 코드
} finally {
//해당 코드는 try 블록이 끝나면 무조건 실행된다.
}]
try와 catch 블록은 별도의 독립된 블록(try블록에서 정의된 변수는 catch블록에서 사용할 수 없다.)
finally문은 try블록에서 사용했던 자원을 해제하기 위해서 사용.
#printStackTrace() : 예외 발생 코드 추적한 내용을 모두 콘솔에 출력
모든 예외 객체는 Trowable를 상속받는다. Trowable에 선언된 메서드 중 예외 처리에 자주 사용되는 메서드는 다음과 같다.
제어자 및 타입 | 메서드 | 설명 |
String | getMessage() | 발생한 예외 객체의 메시지를 추출 |
void | printStackTrace() | 예외가 발생하기까지 호출된 순서를 거꾸로 출력 |
String | toString() | 발생한 예외 객체를 문자열로 추출 |
분류 | 예외 | 설명 |
RuntimeException | ArithmeticException | 어떤 수를 0으로 나눌 때 발생한다. |
RuntimeException | NullPointerException | null 객체를 참조할 때 발생한다. |
RuntimeException | ClassCastException | 적절치 못한 클래스로 형변환하는 경우에 발생한다. |
RuntimeException | NegativeArraySizeException | 배열의 크기가 음수값인 경우 발생한다. |
RuntimeException | ArrayIndexOutOfBoundsException | 배열을 참조하는 인덱스가 잘못된 경우 발생한다. |
IOException | IOException | 파일의 끝을 지나쳐서 읽으려고 하는경우나 잘못된 URL을 사용하는 경우에 발생한다. |
#NullPointerException : 객체 참조가 없는 상태
String data = null;
System.out.println(data.length());
#ArrayIndexOutOfBoundsException : 배열에서 인덱스 범위 초과하여 사용할 경우 발생
int[] arr = new arr[5];
arr[5]=100;
#ClassCastException : 타입 변환이 되지 않을 경우 발생
Animal animal = new Dog();
Cat cat = (Cat) animal;
Exception 계열 예외는 확인된 예외, 미확인 예외로 분류. 확인된 예외에 대한 에외 처리를 구현하지 않으면 컴파일 시 오류가 발생한다. 확인된 예외는 소스파일이 컴파일될 때 컬파일러가 예외 처리를 했는지 검사하기 때문이다.
예외를 처리할 때 상위 클래스를 이용하면 하위 클래스까지 포괄적으로 처리할 수 있다.
다중 catch : 예외 별로 예외 처리 코드 다르게 구현
멀티 catch : 하나의 catch 블록에서 여러 개의 예외 처리 가능. 동일하게 처리하고 싶은 예외를 |로 연결.
try-with-resourses
[try(리소스자료형1 참조변수 = new 리소스자료형1();
리소스자료형2 참조변수 = new 리소스자료형2()){
...
}catch(예외타입 변수){
...
}]
메소드 내부에서 처리하지 않고 메소드를 호출할 때 에러를 처리하도록 만드는 기법 : throws(에러 처리츷 미룰 때 사용하는 키워드)를 사용하여, 다른 메서드한테 예외 처리를 맡긴다.
int method(int n) throws IOException{
...
}
#throws : 메서드 선언부 끝에 작성
[리턴타입 메서드명(매개변수) throws 예외클래스1, 예외클래스2{
...
}]
#사용자 정의 예외 클래스 선언 : Exception클래스를 상속 받아야한다.
[class 예외클래스명 extends [Exception | RuntimeException]{
public 예외클래스명(){ }
public 예외클래스명(String message){
super(message);
}
}]
throw : 예외 객체를 생성해서 강제로 던질 수 있는 예약어, 프로그래머가 의도적으로 예외를 발생시키고자 할 때 사용하는 예약어로 사용자 정의 예외를 만든 후 예외를 사용자가 발생시킬 때 주로 사용
[throw new 예외클래스명();
throw new 예외클래스명("출력 메시지");]
[public void method() throws 예외클래스명{
throw new 예외클래스명();
}]
#getMessage() : 예외 발생시킬 때 생성자 매개값으로 사용한 메시지 리턴
[throw new 예외클래스명("출력 메시지");]
}catch(Exception e){
String message = e.getMessage();
}
추상클래스 개념
추상(abstract) : " 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용."
추상 클래스 : 클래스 선언 시 앞에 abstract,
[접근제어자 abstract class 클래스이름{
접근제어자 abstract 반환형 추상메서드명();
}]
용도
추상메소드(몸체가 없어 항상 세미콜론으로 종료)와 오버라이딩
추상클래스 종류
다형성 : 동일한 부모 클래스에서 상속된 서브 클래스의 객체들을 하나의 타입으로 취급할 수 있게 해준다. 따라서 서로 다른 타입들을 받아서 하나의 코드로 처리할 수 있다. 상속관계에서는 부모 타입의 변수에 모든 자식 객체를 대입해 이용할 수 있다. 하나의 타입에 여러 객체를 대입할 수 있다는 의미.(다양한 실행 결과를 얻는 것) 다형성은 코드 구조가 향상되고 가독성을 증가시키며, 가능한 프로그램을 작성하는 객체지향의 중요한 개념 중의 하나. 메소드의 매개변수로 사용(유지보수 용이)
구현기술 : 상속 또는 인터페이스의 자동 타입 변환, 오버라이딩
#업캐스팅
[슈퍼클래스참조변수 = new 서브클래스생성자(); ]
#다운캐스팅(강제타입변환) : 부모타입을 자식 타입으로 변환하는 것, 서브 클래스 참조 변수로 슈퍼 클래스 객체를 참조하는 것으로 본다면 컴파일 오류가 발생. //자식 타입을 부모 타입으로 자동 변환 후, 다시 자식 타입으로 변환할 때
[자식클래스참조변수 = (자식클래스)부모클래스타입; ]
package practice;
class A{
int a = 10;
void b() {
System.out.println("A");
}
}
class AA extends A{
int a = 20;
@Override
void b() {
System.out.println("AA");
}
void c () {
System.out.println("C");
}
}
class BB extends A{
int a = 30;
@Override
void b() {
System.out.println("BB");
}
void d() {
System.out.println("D");
}
}
public class ClassTest {
public static void main(String args[]) {
A z = new AA(); //AA객체를 생성해서 A 타입의 레퍼런스에 할당한다. 업캐스팅(자식클래스를 부모클래스로)
System.out.println(z.a); //슈퍼 클래스의 필드 접근
z.b();//슈퍼 클래스의 메소드 접근. 단 서브클래스에서 메서드 오버라이딩되면 오버라이딩 메서드가 우선접근.
//z.c(); A에는 c 메소드가 없음.
((AA)z).c();//서브클래스의 메서드 접근
System.out.println(((AA)z).a);//서브클래스의 필드 접근
AA a1 = (AA)z;
System.out.println(a1.a);//서브클래스의 필드 접근
a1.c();
z= new BB(); //업캐스팅. 슈퍼클래스참조변수= new 서브클래스의 생성자()
System.out.println(z.a);
z.b();
((BB)z).d();
System.out.println(((BB)z).a);
BB b1 = (BB)z; //다운 캐스팅
b1.d();
System.out.println(b1.a);
}
}
package practice;
class Shape{
public void draw() {
System.out.println("Shape");
}
}
class Line extends Shape{
@Override
public void draw() {
System.out.println("Line");
}
}
public class MethodOverridingExample {
public static void paint(Shape p) {
p.draw();
}
public static void main(String args[]) {
Line line = new Line();
paint(line);//Line.draw
paint(new Shape());
paint(new Line());
}
}
객체의 타입을 알아내는 방법 : 객체가 특정 클래스로부터 생성된(상속된) 객체인지를 판별하기 위해 사용할 수 있는 연산자가 instanceof. 반환값. true, false
[참조변수 instanceof 클래스명]
#인터페이스: 여러 프로그램네서 사용할 멤버(필드, 메서드)를 일관되게 하기 위한 기술 명세, 표준규격을 나타냄 인터페이스 변경시키려면 이 인터페이스를 구현하였던 모든 클래스가 동작하지 않게 된다. 이런 경우를 대비하여서 인터페이스도 상속을 받아서 확장시킬 수 있도록 한다.
[public interface 인터페이스명{
( public static final) 자료형 변수명 = 값 ; //인터페이스에 선언된 필드는 모두 상수이기 때문에 생략가능
(public abstract) 반환형 메서드명1(); //추상메서드만 정의할 수 있기에 생략가능
public abstract 반환형 메서드명2();
}
접근제어자 interface 인터페이스명{
(접근제어자 제어자 ) 자료형 변수명 = 값 ; //인터페이스에 선언된 필드는 모두 상수이기 때문에 생략가능
(접근제어자 제어자) 반환형 메서드명1(); //추상메서드만 정의할 수 있기에 생략가능
public abstract 반환형 메서드명2();
}
]
#구현 클래스 선언 : 메서드의 선언부가 정확히 일치 해야한다.
[public class 클래스명 implements 인터페이스명{
반환형 추상메서드1(){//재정의
}
반환형 추상메서드2(){//재정의
}
}]
#디폴트 메소드 선언 : 인터페이스를 구현하는 클래스에 자동 상속되는 메소드, default 키워드를 반드시 붙여야한다. 기본적으로 public 접근제한
[public default 리턴타입 메서드명(매개변수,...){...}]
#정적 메서드 선언 : 인스턴스 생성과 상관없이 바로 사용할 수 있다. 인타페이스를 구현하고 있는 모든 객체에서 자주 사용하는 유용한 기능을 제공하는데 있다.
[public static 리턴타입 메서드명(매개변수, ...){...}]
#private 메소드 선언 : 외부접근 제한, default 메서드에서만 사용할 목적으로 본문을 구현
[private 리턴타입 메서드명(매개변수,...){...}]
일반 클래스 | 추상 클래스 | 인터페이스 | |
매서드의 재정의 | 선택적 | 강제적 | 강제적 |
상속, 구현시 예약어 | extends | extends | implements |
필드 선언 가능 여부 | 가능 | 가능 | 불가능 |
상수 선언 가능 여부 | 가능 | 가능 | 가능 |
생성자 선언 여부 | 가능 | 가능 | 불가능 |
추상 메서드 포함 여부 | 불포함 | 포함 | 포함 |
객체 생성 가능 여부 | 가능 | 불가능 | 불가능 |
다중 상속 가능 여부 | 불가능 | 불가능 | 가능 |
내부클래스: 클래스 멤버로 선언된 클래스<클래스 생성 시 바이트 코드 따로 생성>
멤버 클래스 | 인스턴스 멤버 클래스 | class outer{ class inner{...} } |
outer객체를 생성해야만 사용할 수 있는 inner 내부 클래스 |
멤버 클래스 | 정적 멤버 클래스 | class outer{ static class inner{...} } |
outer 클래스로 바로 접근할 수 있는 inner 내부 클래스 |
멤버 클래스 | 바이트코드 파일의 이름 | 외부 클래스명$내부클래스.class |
로컬 클래스 | class outer{ void method(){ class inner{...} } } |
method()가 실행할 때만 사용할 수 있는 inner 중첩 클래스 |
로컬 클래스 | 바이트코드 파일의 이름 | 외부 클래스명$1내부클래스.class |
#인스턴스 멤버 클래스(non-static 내부 클래스) : 내부 클래스의 멤버들은 static이 될수 없다.
[접근제어자 class 외부클래스명{
[public | private: 외부 클래스 내부에서 접근가능] class 내부클래스명{
}
}]
#정적 멤버 클래스(static 내부 클래스): 내부 클래스는 외부 클래스의 일반멤버 변수는 참조할 수 없다. 정적멤버 클래스는 주로 default or public 접근 제한을 가짐
[접근제어자 class 외부클래스명{
[public | private: 외부 클래스 내부에서 접근가능] static class 내부클래스명{
}
}]
지역 내부 클래스(로컬클래스): 외부 클래스의 메서드에서 사용하기 위해 메서드 내에 선언하는 내부 클래스
내부 인터페이스: 클래스 멤버로 선언된 인터페이스
#무명(익명) 클래스 : 클래스 몸체는 정의되지만 이름이 없는 클래스, 정의부와 생성부가 하나로 묶여 있는 클래스로 선언과 동시에 객체가 생성된다. 한번만 사용하며 재참조가 불가능, 하나의 객체만을 생성하는 일회용 클래스
[new 상위클래스(일반클래스,추상클래스, 인터페이스 모두가능)명(생성자 매개변수){ }]
#명시적인 구현 클래스 작성 생략하고 바로 구현 객체를 얻는 방법(이름 없는 구현 클래스 선언과 동시에 객체 샹성)
[인터페이스 참조형 = new 인텨페이스(){
인터페이스에 선언된 추상 메서드의 실체 메서드 선언
}]