[TIL] Day 06 — Java 배열/참조타입 및 CSS 선택자
날짜: 2025-10-27
기술 스택: Java Array CSS
부트캠프: 풀스택 개발자 부트캠프 2주차
데이터 타입 — 기본 vs 참조
| 구분 |
타입 |
메모리 저장 |
초기값 |
| 기본 타입 |
byte, short, int, long, float, double, char, boolean |
스택 |
타입별 지정값 |
| 참조 타입 |
배열, 클래스, 인터페이스, 열거형 |
힙(Heap) (주소만 스택) |
null |
핵심 키워드: 스택에 주소, 힙(Heap)에 실제 데이터
배열 (Array)
// 선언 및 생성
int[] arr = new int;
int[] arr2 = {1, 2, 3, 4, 5}; // 값 목록 생성
// 접근
arr = 10;
System.out.println(arr.length); // 배열 길이 (읽기 전용)
// 향상된 for문
for (int n : arr2) {
System.out.println(n);
}
배열 복사
// System.arraycopy(원본, 원본시작, 대상, 대상시작, 길이)
System.arraycopy(oldArr, 0, newArr, 0, oldArr.length);
String 주요 메서드
String str = "Hello, Java!";
str.charAt(0); // 'H' — 특정 인덱스 문자 추출
str.length(); // 12 — 문자열 길이
str.replace("Java", "World"); // "Hello, World!" — 대체
str.substring(7); // "Java!" — 7번째부터 끝
str.substring(7, 11); // "Java" — 7부터 11 앞까지
str.indexOf("Java"); // 7 — 위치 반환 (없으면 -1)
str.trim(); // 앞뒤 공백 제거
str.split(","); // "," 기준으로 분리
str.concat(" 화이팅"); // 문자열 합치기
// 코딩 실용 팁 — 공백 기준 분리
String[] words = str.trim().split("\\s+"); // 연속 공백도 한 번에 처리
로또 번호 생성 예시 (1~45, 중복 제거)
int[] lotto = new int;
int i = 0;
while (i < lotto.length) {
int num = (int)(Math.random() * 45) + 1;
boolean duplicate = false;
for (int j = 0; j < i; j++) {
if (lotto[j] == num) { duplicate = true; break; }
}
if (!duplicate) { lotto[i] = num; i++; }
}
java.util.Arrays.sort(lotto);
CSS 선택자 정리
| 선택자 |
대상 |
점수 |
* |
전체 |
0 |
tag |
태그 |
1 |
.class |
클래스 |
10 |
#id |
ID |
100 |
| inline style |
- |
1000 |
div > p /* 직접 자식만 */
div p /* 모든 후손 */
h1 + p /* 바로 다음 형제 */
h1 ~ p /* 뒤에 오는 모든 형제 */
div:nth-child(1) /* 첫 번째 자식 */
CSS display 속성
| 값 |
동작 |
block |
줄 전체 사용, 줄바꿈 O |
inline |
내용만큼만, width/height 불가 |
inline-block |
나란히 + width/height 가능 |
none |
화면에서 완전 숨김 |
flex |
유연한 1차원 정렬 |
grid |
2차원 격자 레이아웃 |
CSS margin 단축속성
margin: 20px; /* 사방 동일 */
margin: 10px 20px; /* 상하 / 좌우 */
margin: 10px 20px 5px; /* 위 / 좌우 / 아래 */
margin: 10px 20px 5px 0; /* 시계방향: 위 우 아래 좌 */
더 알아볼 것