[JAVA] 기초 문법 : 메소드, 입출력, 식별자, 문자열, 배열, 예외처리
📌 자바 프로그램의 기본 구조
메소드 ⊂ 클래스
📌 메소드
다른 멤버보다static 멤버가 먼저 컴파일되기 때문에,
static 멤버의 컴파일 시점에서는 static이 아닌 메서드나 필드는 정의되지 않았기 때문
=> static으로 메소드 생성 필요함
📌 입력
표준 입력 스트림 System.in사용
→ 키 값을 바이트(문자 X)로 리턴
→ 키 값을 바이트 데이터로 넘겨주므로 응용프로그램이 문자 정보로 변환해야 함
⇒ Scanner 클래스 사용
Scanner 클래스 사용
System.in에게 키를 읽게 하고, 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴 → java.util.Scanner 클래스
객체 생성
ex ) import java.util.Scanner; //import 문 필요
Scanner scanner = new Scanner(System.in);
→ ‘\t’, ‘\f’, ‘\r’, ‘ ‘, ‘\n’ 공백으로 구분되는 아아템 단위로 읽음
→ 개발자가 원하는 다양한 타입으로 바꾸어 읽을 수 있음
📌 출력
표준 출력 스트림 System.out의 println()메소드 호출
println은 여러 타입의 데이터 출력 가능
println은 출력 후 다음 행으로 커서 이동
System.out.println(”print”);
print()
printf()
→ 문자열, %d, %f 등 가능
→ 다른 것 마다 “”를 붙여줘야 함.
ex)
System.out.printf("평균 : " + "%.2f", avg);
📌 식별자
= 변수 명
‘_’와 ‘$’ 식별자로 사용 가능 (처음에 올 수 있지만 일반적으로 잘 사용하지 않음)
유니코드 문자, 한글 사용 가능
대소문자 구별
→ 가독성 높은 변수 명 붙이기
→ 헝가리언 이름 붙이기
: 클래스 이름 - 첫 문자를 포함한 각 단어의 첫 문자 대문자
: 클래스 이름 - 첫 문자를 제외한 각 단어의 첫 문자 대문자
📌 main() 메소드
→ 실행 시작 메소드
→ main의 원형 : 반드시 public static void main(String[] args)
매개 변수 타입은 문자열 배열
→ 명령행 인자의 전달 !!!
→Run / RunConfigurations에서 main()메소드의 인자 나열
→ 필요에 따라 자료형 변경하여 사용
📌 자바의 기본 타입
📌 문자열
: 문자열은 기본 타입이 아님
→ String 클래스로 문자열 표현
문자열이 섞인 + 연산으로 문자열 연결 가능
String 클래스는 str[i] == (char)~~가 안됨.
각각을 char로 형변환 해주려면 str.charAt(i)필요.
String이 배열일 때, str[i] 가능 (그러나 char 아님)
각각을 char로 형변환 해주려면 str[i]+”” 필요
str.length(); → 길이
str.equals(문자열)
str.equals(str2)
📌 리터럴
: 프로그램에서 직접 표현한 값 (말그대로 값)
정수, 실수, 문자, 논리, 문자열 리터럴이 있음
숫자 리터럴의 아무 위치에나 ‘_’사용 가능
📌 var 키워드
: 정해지지 않은 변수 타입일 때 사용
→ 되도록 사용하지 않기
📌 상수 선언
: final 키워드 사용
선언 시 초기값 지정, 실행 중 값 변경 불가
ex ) final double PI = 3.141592;
📌 자동 타입 변환
: 작은 타입 → 큰 타입 O / 큰 타입 → 작은 타입 X
큰 타입 → 작은 타입의 경우 강제 형변환 필요
📌 if - else if - else문
C언어와 동일하게 if, else if, else순으로 가장 먼저 해당하는 부분을 찾아 실행 문장 수행
📌 switch문
식과 case문의 값을 비교하여 일치하면 해당 case의 실행 문장 수행
break를 만나면 switch문을 벗어남, break 필수
case의 비교 값과 일치하는 것이 없으면 default문 실행
default문은 생략 가능
📌 for/while문
C언어와 동일하게 수행
/ for (초기문; 조건식; 반복 후 작업)
→ 조건이 true라면 무한 반복
→조건이 비어있다면 true로 간주, 무한 반복
→ 초기 작업과 반복 후 작업은 ‘,’로 분리하여 여러 문장 나열 가능
→ 변수 i는 for문 내에 선언 가능하며, 내부 선언 변수는 for문 내에서만 사용 가능
/ while(조건식)
→ 조건이 true라면 반복, false라면 종료
→ 조건이 없다면 컴파일 오류
→ 처음부터 반복 조건을 통과한 후 작업문 수행
/ do{
}while(조건식);
→ 무조건 최소 한번 작업문 실행
- ) continue문
→ 반복문을 빠져 나가지 않으면서 다음 반복으로 진행
- ) break문
→ 반복문 하나를 완전히 빠져 나갈 때 사용
→ 하나의 반복문만 벗어남
📌 배열
→ 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조
→ 한번에 연속적인 메모리 공간 할당 가능
→ 같은 타입의 데이터들이 순차적으로 저장되므로 인덱스 이용 용이, 동시에 반복문 이용 용이
→ 배열 인덱스는 시작 위치에서부터 데이터가 있는 상대 위치로, 0부터 시작
⇒ “연속적으로 저장” “참조 용이”
배열 만들기
배열 선언과 배열 생성의 두 단계 필요 !!! → C언어와 차이점
ex)
int intArray[]; // 배열 선언, 선언과 동시의 크기를 지정하면 안됨 (선언과 함께 초기화는 가능)
intArray = new int[10];
※ 선언만 하고 생성을 하지 않은 배열의 경우 사용이 불가능
포인터의 개념으로 하나의 배열을 다수의 레퍼런스가 참조 가능
ex)
int intArray[] = new int[5];
int myArray[] = intArray;
배열의 크기, length 필드
배열 객체 내에 length 필드는 배열의 크기를 나타냄
ex)
int intArray[];
intArray = new int[5];
int size = intArray.length; // size는 5
정방형 배열
각 행의 열의 개수가 같은 배열
int i[][]; // 배열 선언
i = new int[4][4]; // 배열 생성
비정방형 배열
각 행의 열의 개수가 다른 배열
int i[][];
i[0] = new int[1];
i[1] = new int[2];
i[2] = new int[3];
i[3] = new int[4];
비정방형 배열의 length
i[0].length // 1
i[1].length // 2
// ...
메소드에서 배열 리턴
ex )
int[] makeArray(){
int temp[] = new int[4];
return temp; // 배열 리턴 타입
}
📌 예외처리, try - catch - finally문
→ 예외가 발생할 때 대응하는 응용프로그램 코드
→ try - catch - finally 문 사용 (finally 블록은 생략 가능
ex )
try{
// 예외 발생 가능성 있는 실행문
}
catch(/*처리할 예외 타입*/){
// 예외 처리문
}
finally{
// 예외 발생 여부와 상관없이 무조건 실행되는 문장 (생략 가능)
}