Search
Duplicate
😀

02. 반복문, Array, css

태그
반복문 - While 문
while 반복문 - 반복횟수가 명확하지 않을 때 사용하는 반복문 while - 선 조건체크, 후 수행 - 반복 횟수 : 0 ~ 多 do while - 선 수행, 후 조건체크 - 반복 횟수 : 1 ~ 多
반복문 - for 문
for 반복문 - 반복횟수가 명확한 경우에 사용 for - 선 조건체크, 후 수행 구조 - 반복횟수 : 0 ~ 多 for each - 반복 가능한 집합의 원소들을 꺼내어 처리하는 경우에 사용 - 자료구조 사용에 대한 추상화를 제공한다. (List, Set 등 자료구조가 달라도 동일한 형태로 반복문 수행) - 값의 수정이 불가능하다. (조회의 목적)
for each문의 사용과 값의 변화
크기가 2의 Person 타입 p 배열을 선언하고 2개의 Person 객체를 생성, 할당한다. p 배열에는 그림과 같이 2개의 객체를 가리키는 0x1000, 0x2000 레퍼런스가 할당되어있다. for each문을 통해 p 배열을 탐색하고, ps에 새로운 Person 객체를 생성하고 할당한다. 하지만 for each문의 ps는 실제 p 배열이 아닌 0x1000 이라는 레퍼런스와 같은 값을 지닌 별도의 참조변수이다. 따라서 new Person() 구문을 사용해서 대입하여도 원본 p 배열에는 변화가 없다. * 값의 수정이 불가능하다? (ps.age++ 부분) Reference type을 사용하는 경우 ps로 복사된 값은 단순 value가 아닌 원본 p배열의 Person 객체를 가리키는 레퍼런스와 동일하므로 실제 객체를 가르키게 된다. 따라서 ps.age++ 구문을 사용하면 for each를 사용하는 경우에도 data를 수정할 수 있다. 하지만 이것은 값이 아닌 레퍼런스를 따라가서 원본 객체를 수정하는 것이지 레퍼런스 자체를 수정하는 것은 아니다.
배열 (Array)
배열 - 동형집합의 성격을 가진다. - Reference type의 객체 배열의 장점 - 데이터 관리의 용이함 ㄴ 반복문과 결합하여 일괄처리가 가능하다 ㄴ 리턴값, 매개변수 전달 시 활용 가능하다. (한 번에 여러개 값 전달) - 처리성능이 효율적이다 배열의 단점 - 크기가 고정이다. (크기 변경 시 배열을 새로 생성하고 기존 내용을 복사해야 함)
1차원 배열의 활용
1차원 배열의 생성 <Data Type> A = new <Data Type>[size] 의 형태로 생성한다. Java의 데이터 타입 & 배열 C언어에서 배열의 data type은 곧 배열의 시작주소를 의미한다. 따라서 배열 선언 시 구체적인 size를 지정해주어야 배열의 길이를 알 수 있다. 하지만 자바에서 배열은 Reference Type의 객체이고, length 속성을 가지고 있다. 따라서 원소의 개수를 통해 자동으로 size를 구할 수 있고, 데이터 타입에 size를 명시하지 않는다. ex) C - int arr[] = {1,2,3,4,5}; ⇒ error! // Java - int arr[] = {1,2,3,4,5}; ⇒ ok! Java에서의 다차원 배열의 생성 Java에서는 C와 다르게 배열 선언 시 []의 위치를 자유롭게 사용할 수 있다. (int[] arr, int arr[]) 이 때 <Data Type> A 형태를 맞추기 위해 int[] arr 형태로 선언을 하고 Data Type이 int형 배열 객체라는것을 명시적으로 표현해주는것이 직관적이다. 또한 이러한 성질을 통해 int[] arr[] 형태의 2차원 배열 선언도 가능하다. * int[] a, b[], c[][]; 와 같이 한번에 다차원 배열 생성도 가능!
1차원 배열의 사용 - 1차원 배열은 index를 통해 바로 접근하여 사용할 수 있다. - index는 첫번째 원소로부터 몇칸 떨어져있는가를 나타내고, 0에서 시작한다. 1차원 배열의 초기화 <Data Type> A = new <Data Type>[size] {값1, 값2,,,,}가 기본 형태이지만, <Data Type> A = {값1, 값2,,,,} 형태로 생략하여 사용할 수 있다. ex) int[] arr = {1,2,3,4,5};
MarkUp Language
<tag> <!-- 시작 태그 --> <content> <body> </tag> <!-- 종료 tag -->
HTML
복사
MarkUp Language - tag를 통해 내용을 감싸는 형태의 언어 XML - Content를 서술하는(의미 전달) Mark Up HTML - Content를 꾸미는, 표현하는 Mark Up
CSS의 활용 방식 (1) in-line
In-line 방식 - tag 안에 Style 속성을 정의한다. - Style 적용에서 가장 높은 우선순위를 지닌다. - 아주 간단한 Style 지정을 하거나, Selector가 불필요한 특정 대상에게만 Style을 지정하는 경우에 사용한다. (평소에는 지양해야함)
CSS의 활용 방식 (2) Internal Stylesheet
HTML 파일 안에서 <style> 태그를 활용하여 css를 활용한다. in-line 방식은 동일한 내용의 코드를 여러번 작성해야 하고, 이는 스타일의 재사용성을 줄여 중복, 수정의 어려움을 야기한다. 따라서 internal, external stylesheet 방식을 통해 Selector를 지정하고, 재사용성을 늘린다.
선택자 (Selector) - 스타일의 Naming이다. - 스타일을 미리 정의해두고, 선택자를 통해 대상을 지정할 수 있다. tag 선택자 - 자동으로 모든 tag에 적용되는 스타일 - 아무런 기호를 붙이지 않고 tag명을 그대로 사용한다 ex) div , body { } Class 선택자 - 본문 tag에서 클래스<class = " ">로 지정한 tag에 적용되는 스타일 - . 기호와 Naming을 사용한다. ex) .myBody{ background-color : skyblue }; // <body class = "myBody"> id 선택자 - 본문 tag에서 id <id = "">로 지정한 tag에 적용되는 스타일 - # 기호와 Naming을 사용한다. ex) #d1{ background-color : pink }; // <body id = "d1">
CSS의 활용 방식 (3) External Stylesheet
별도의 css 파일을 사용하여 참조하여 사용한다. 여러 page에서 사용할 공통된 스타일을 정의할 때 사용한다.
CSS 우선순위
동일한 속성이 여러 Style에 의해 정의된 경우 가장 높은 우선순위의 속성 하나만이 적용된다. 이 때 우선순위가 동일하다면 나중에 정의된 속성이 적용된다. tag < class < id 일반적으로 우선순위는 좁은 적용범위를 가지는 것일수록 우선순위가 높다. tag - 모든 tag에 적용되므로 가장 넓은 적용범위 class - 지정된 일부 class에만 적용, but 여러 tag가 동일한 class 가능 id - 모든 tag는 고유 id밖에 가지지 못함 CSS 활용 방식에 따른 우선순위 internal == external < in-line in , external 스타일시트 방식은 우선순위의 차이가 없다. 따라서 정의된 순서에 따라서 우선순위가 결정된다. 내가 개발하는 경우 다른곳에서 가져온 CSS보다 내가 개발한 CSS를 우선적으로 적용시켜야 하기 때문에 external을 먼저, internal을 나중에 선언하여 내 CSS의 우선순위가 높도록 만든다. (내 꺼로 덮어쓰게)