JAVA 문법#1
자바의 특징
- Wirte Once, Run Anywhere
java파일은 컴파일러에 의해 class파일로 컴파일되며, 바이트코드로 바뀐다.
JVM(Java Virtual Machine)을 통해 운영체제에 상관없이 독립적으로 실행된다. - Garbage Collection
자바는 더 이상 사용하지 않는 메모리를 자동으로 정리해준다. 이 기능을 Garbage Collection이라고 한다. - 자바의 객체지향 특징 4가지
Abstraction(추상화), Polymorphism(다형성), Inheritance(상속), Encapsulation(캡슐화)
데이터의 종류
기본형(Primitive Type)
- 미리 정해진 크기의 메모리 크기로 표현하고 변수 자체에 값을 저장한다.
참조형(Reference Type)
- 크기가 미리 정해질 수 없는 데이터의 표현이고 변수에는 실제 값을 참조할 수 있는 주소만 저장한다.
형변환
- 변수의 타입을 다른 타입으로 변환.
- 기본형은 기본형끼리. 참조형은 참조형끼리 변환 가능
- 기본 타입과 참조형의 형 변환을 위해서는 Wrapper 클래스 사용 (ex. Integer, Double 클래스)
double a = 13.5;
int b = (int) a; //a = 13.5, b = 13 -> 명시적 형변환
byte b = 5;
int i = b; // 묵시적 형변환 i = 5
기본형의 형 변환에서 작은타입->큰타입으로 변환할 때는 값 손실이 없음.
But, 큰타입->작은타입으로 변환할 때는 값 손실이 있음.
- 표현 범위가 커지는 방향(값의 크기나 타입의 크기가 아님)으로 값을 할당할 때에는 묵시적 형변환 발생
byte -> short -> int -> long -> float -> double
char -> int -> long -> float -> double - 명시적 형변환은 값 손실이 발생할 수 있으므로 프로그래머가 형변환 진행함.
- 묵시적 형변환은 JVM이 자동으로 해줌.
연산자
- 여러 종류와 우선순위, 결합 방향이 있음
++, --연산자는 변수에만 사용 가능
& vs &&, | vs ||
- &, |: 앞 뒤에 있는 두 개의 피연산자 모두 검사.
- &&, ||: 앞의 피연산자를 검사해서 조건에 맞지 않으면 뒤의 피연산자는 검사 안함.
int a = 5;
int b = 10;
System.out.println((a+=5) > 8 | (b-=5) > 8); // true
System.out.println("a = " + a + ", b = " + b); // a = 10, b = 5
a = 5;
b = 10;
System.out.println((a+=5) > 8 || (b-=5) > 8); // true
System.out.println("a = " + a + ", b = " + b); // a = 10, b = 10
// 앞의 조건식이 true이므로 뒤의 피연산자는 실행 안됨.
조건문
if문
- 논리형(boolean)이나 조건식, 논리형을 반환하는 메소드 사용할 수 있음.
int a = sc.nextInt();
if (a == 1) {
// 로직 실행
} else if (a == 2) {
// 로직 실행
} else if (a == 3) {
// 로직 실행
} else {
// 로직 실행
}
switch
- 정수로 나타낼 수 있는 기본형 타입 사용.(byte, short, char, int)
- 위 기본형들의 Wrapper 클래스인 Byte, Short, Char, Integer 객체와 String 객체도 사용 가능.
- Enum타입이나 위의 정수 타입들을 리턴하는 메소드 사용 가능.
int x = 3;
switch(x) {
case 1: // 로직 실행
case 2: // 로직 실행
case 3: // 로직 실행
case 4: // 로직 실행
case 5: break;
case 6: // 로직 실행
}
// 위의 switch문을 실행하면 case 3,4,5가 실행됨.
break문을 만나야 switch문의 실행이 멈추기 때문에 꼭 멈추고 싶은 곳에 break를 작성해야 함. ex) case 3만 실행시키고 싶으면 case 3: (로직 작성); break;
삼항 연산자
- (조건식) ? 값1 : 값2;
- 조건식이 true이면 값1, false이면 값2를 return함.
String s;
int a = 10;
s = (a > 5) ? "정답" : "틀림"; // s = 정답
반복문
for문
- for (변수 초기화; 반복 조건; 증감식) {실행문}
int sum = 0;
for (int i = 1; i < 10; i++) {
sum += i;
}
System.out.println(sum); sum = 1+2+3+4+5+6+7+8+9
while문
- while(조건문) {실행문 및 증감식}
int i = 1;
int sum = 0;
while(i < 10) {
sum += i;
i++;
}
System.out.println(sum); sum = 1+2+3+4+5+6+7+8+9
do - while문
- do {실행문 및 증감식} while(조건문);
int i = 1;
int sum = 0;
do {
sum += i;
i++;
}while(i < 10)
System.out.println(sum); sum = 1+2+3+4+5+6+7+8+9
- while문과 do - while문의 차이
while문은 처음부터 조건문이 참이어야 실행.
do - while문은 처음은 조건문과 관계없이 무조건 한번 실행.for문: - 초기값, 조건식, 증감식의 위치가 명확. - 예측 가능한 반복일 때 많이 사용. - 배열의 index증감할 때 많이 활용
while문: - 예측이 가변적일 때 많이 사용. - index보다 break, continue 많이 활용.
break: 반복문을 중단하는 기워드
continue: 해당 조건의 경우에만 수행하지 않고 다음 조건으로 반복문 실행.
배열
- 동일한 타입의 데이터 0개 이상을 하나의 연속된 메모리 공간에서 관리하는 것.
- 한 번 생성하면 크기 변경이 불가능.
- 개별 요소는 값 변경 가능. 삭제는 불가능.
배열의 생성
int[] list = new int[5];
// int타입의 데이터 5개를 저장할 수 있는 배열을 메모리에 생성.
// 생성한 배열을 list라는 변수에 할당.
// list라는 변수는 메모리에 있는 배열을 가리키는 referecne타입 변수. (list에는 배열의 첫 시작 주소값이 담겨있음.)
- index 번호로 각 요소에 접근 가능.
- index 번호는 0부터 시작.
int[] a = {1,2,3,4};
int[] b = new int[]{1,2,3,4};
// 생성과 동시에 할당한 값으로 초기화
// {}를 통한 배열 생성은 변수 선언과 동시에 해야 가능.
char[] c;
c = {'a', 'b', 'c'} //이런 식으로는 불가능.
향상된 for문
- 배열이나 Collection에서 많이 사용.
- index로 접근하지 않고 요소에 직접 접근.
int list = {9, 8, 5, 4}
for (int i : list) {
System.out.print(i + " "); // 9 8 5 4
}
// 변수 i를 통해 list배열 안의 요소들에 순차적으로 하나씩 접근 가능.
2차원 배열
- 1차원 배열이 동일한 데이터를 연속적으로 관리하는 것이라면, 2차원 배열은 그 배열을 관리하는 배열.
int[][] list = new int[3][4]; // 3행4열짜리 2차원 배열 선언 및 생성.
list[0][2] = 1; // list의 0행2열에 1이라는 값 할당.
int[][] list2 = {{1,2,3}, {9,8,7}, {4,6,5}}; // 선언, 생성, 할당 동시에 가능
int[][] list3 = new int[3][]; // 1차 생성 후
list3[0] = new int[3]; // 2차로 필요에 따라서 각 행의 열 길이가 다르게 생성 가능.
list3[1] = new int[2]; // 2차로 필요에 따라서 각 행의 열 길이가 다르게 생성 가능.
list3[2] = new int[5]; // 2차로 필요에 따라서 각 행의 열 길이가 다르게 생성 가능.
int i = 0;
int[] ilist = new int[4];
int[][] ilist2 = new int[3][5];
// i는 정수형 값을 저장.
// ilist는 정수형 배열의 첫 주소를 저장.
// ilist2는 정수형 배열의 첫 주소를 저장하는 배열의 첫 주소를 저장. 즉, ilist2는 int[]를 저장.
Author And Source
이 문제에 관하여(JAVA 문법#1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wornjs135/JAVA-문법1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)