자바 설치
Oracle | Cloud Applications and Cloud Platform
Discover how end-to-end automation and industry-tailored solutions help build momentum for your business and career at CloudWorld in Las Vegas, October 17-20. Register today to save $100 on the standard pass price.
www.oracle.com
;%JAVA_HOME%\bin
java -version
javac -version
자바 환경 설정
C:\Program Files\Java\jdk1.8.0_202\bin
변수이름 : JAVA_HOME
변수 값 : C:\Program Files\Java\jdk1.8.0_202\bin
Path [편집] => 맨 뒤에 ;%JAVA_HOME%
cd .. 폴더 한단계 위로 나가기
cd ..\..\ 폴더 두단계 위로 나가기
cd \ 최상위 폴더로 나가기
dir 폴더와 파일의 목록보기
md 생성할 폴더명 : 폴더 만들기
rd 삭제할 폴더명 : 폴더 삭제하기
java -version : 자바컴파일러 버전 확인하기
javac -version : 자바실행파일 버전 확인하기
파일이름 .java로 저장한다.
javac CharToCode.java (class 파일을 만든다.)
javac -encoding utf-8 CharToCode.hava (한글이 들어 있는 경우)
java CharToCode (프로그램을 실행한다.)
자바프로그램
자바프로그램은 한 개 이상의 클래스로 구성된다.
클래스는 field와 method로 구성된다.
class 클래스이름 {
필드 선언
메소드 선언
}
main() 메서드
자바프로그램이 실행되면 맨 먼저 main()메서드를 찾아 그 안의 모든 명령문들을 차례대로 실행한다.
따라서 하나의 자바프로그램에는 main()메서드를 가지는 클래스가 반드시 하나는 존재하여야 한다.
public static void main(String[] args) {
.......
}
명령문(statement)
자바의 모든 명령문은 반드시 세미콜론(;)으로 끝나야 한다.
주석(comment)
자바컴파일러는 주석은 무시하고 컴파일하므로, 실제 실행결과에는 아무런 영향을 주지 않는다.
// 한줄 주석
/*
여러줄 주석
흠냐링~
여러줄 주석
*/
설명, 프로그램 실행에 아무 영향이 없다.
// 한줄에 대해서만 적용된다.
/*
이 사이의 문장들은 프로그램 실행에 아무 영향도 끼치지 못한다.
*/
자바 표준 입출력 클래스
사용자가 프로그램과 대화하기 위해서는 사용자와 프로그램 사이의 입출력을 담당하는 수단이 필요하다.
자바에서는 모든 것이 객체로 표현되므로 입출력을 담당하는 수단 또한 모두 객체이다.
System이라는 표준입출력클래스를 정의하여 제공한다.
System.in
System.out
System.err
변수(Variable)
변하는 수 : 하나의 값을 저장할 수 있는 공간
변수의 타입 (기본타입 8가지) | |||
기본형 | 값을 가지고 있다. | ||
문자 | char | ||
숫자 | 정수 | byte, short, int, long | |
실수 | float, double | ||
논리 | boolean | ||
참조형 | 주소값을 가지고 있다. |
문자 + 숫자 => 문자
숫자 + 문자 => 문자
변수의 명명 규칙(Naming convention)
- 대소문자가 구분되며 길이에는 제한이 없다. (UP, Up, up, uP은 모두 다른 변수이다.)
- 예약어를 사용하면 안된다.
- 숫자로 시작해서는 안된다.
- 특수문자는 '_' 과 '$' 만 허용된다. ($harp (O), S#arp (X))
명명규칙 - 권장사항
- 클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메소드 이름의 첫 글자는 항상 소문자로 한다.
- 여러 단어의 이름으로 된 것은 두번째 단어 이후 단어의 첫 글자를 대문자로 한다. (firstIndexOf, lastName)
- 상수의 이름은 대문자로 한다. 단어의 구분은 '_' 로 한다.(PI, MAX_NUMBER)
연산자
// 같은 결과
visitCount = visitCount + 1;
visitCount += 1;
증감 연산자 (++, --)
++num : num의 값을 먼저 1증가 시킨다.
num++ : num의 값을 사용하고 난 후에(;까지 실행이 된 후) num값을 1증가 시킨다.
--num : num의 값을 먼저 1감소 시킨다.
num-- : num의 값을 사용하고 난 후에(;까지 실행이 된 후) num값을 1감소 시킨다.
논리 부정 연산자 (!)
boolean power = true;
power = !power;
나누기 (/, %)
/ : 몫
% : 나머지
삼항연산자
조건 ? 조건이 참일 경우 : 조건이 거짓일 경우
int x =10;
int y = 5;
x >= y ? x : y
조건문
if(조건)
System.out.println("참입니다. 1");
if(조건) {
System.out.println("참입니다. 1");
System.out.println("참입니다. 2");
System.out.println("참입니다. 3");
}
if(여자이면) {
System.out.println("여자입니다.");
} else {
System.out.println("남자입니다.");
}
if(20살 미만이면) {
System.out.println("10대입니다.");
} else if(30살 미만이면) {
System.out.println("20대입니다.");
} else if(40살 미만이면) {
System.out.println("30대입니다.");
} else if(50살 미만이면) {
System.out.println("40대입니다.");
} else {
System.out.println("50대 이상입니다.");
}
switch(조건) {
case 값 :
실행문장;
실행문장;
break;
case 값 :
실행문장;
실행문장;
break;
case 값 :
실행문장;
실행문장;
break;
default :
실행문장;
}
반복문
- 문장 또는 문장들을 반복해서 실행할 때 사용한다.
- 반복회수가 정해져 있을 때 for문을 주로 사용하고 그 외에는 while문을 사용한다.
for(초기화; 조건식; 증감식) {
실행할 내용
}
1. 초기화 → 2. 조건식 → 3. 실행할 내용 → 4. 증감식
→ 2. 조건식 → 3. 실행할 내용 → 4. 증감식
for(초기화; ; 증감식) {
실행할 내용
}
for( ; ; ) { // 무한반복
실행할 내용 // 탈출하려면 안에서 조건을 주어야함
}
while(조건식) {
조건식이 true일 때 실행되는 문장
}
do {
실행될 문장
} while(조건);
배열 (Array)
- 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것.
- 많은 양의 값(데이터)을 다룰 때 유용하다.
- 배열의 각 요소는 서로 연속적이다.
배열의 선언
원하는 타입의 변수를 선언하고 변수 또는 타입에 배열을 의미하는 대괄호[]를 붙이면 된다.
타입[] 변수이름;
int[] score;
타입 변수이름[];
int score[];
배열의 생성
배열을 선언한 다음에는 배열을 생성하여야 한다.
배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이다.
배열을 생성해야만 비로소 데이터를 저장할 수 있는 공간이 만들어지는 것이다.
// 배열을 선언 => 데이터를 저장할 수 있는 공간이 아직 없음.
int[] score;
// 배열을 생성
score = new int[5];
배열의 초기화
자료형 | 기본값 |
boolean | false |
char | '\u0000' |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 변수 | null |
배열의 초기화 : 생성된 배열에 처음으로 값을 저장하는 것.
배열을 생성과 동시에 값을 초기화하지 않으면 자동적으로 자신의 타입에 해당하는 기본값으로 초기화한다.
int[] score = new int[5]; // => 크기가 5인 정수형 배열을 생성한다.
score[0] = 100; score[1] = 90; score[2] = 77; score[3] = 97; score[4] = 78;
// 주어진 값에 따라 배열의 크기가 자동적으로 결정된다.
int[] score = {98, 96, 99, 87, 92, 91}; // 방법1: O
int[] score = new int[]{98, 96, 99, 87, 92, 91}; // 방법2: O
int[] score = new int[6]; // 방법3: O
score[0] = 98; score[1] = 96; score[2] = 99;
score[3] = 87; score[4] = 92; score[5] = 91;
int[] score;
score = {10, 20, 30, 40, 50}; // Error
int[] score;
score = new int[]{10, 20, 30, 40, 50}; // 방법4: O
배열의 활용
- 배열의 각 저장공간에 값을 저장하거나 값을 읽어오기 위해서는 배열 참조변수와 인덱스를 이용한다.
- 배열의 인덱스는 배열의 각 저장공간에 자동적으로 주어지는데 0부터 시작해서 1씩 증가하는 연속적인 정수값이다.
// 배열 score의 4번째 요소에 100을 저장한다.
score[3] = 100;
// 배열 score의 4번째 요소에 저장된 값을 읽어서 value에 저장한다.
int value = score[3];
for문의 조건식에 배열의 크기(방의 개수)를 직접 적어주는 것보다 배열의 속성인 length를 사용하는 것이 더 견고한 코드를 만드는 것이다.
length는 배열의 크기가 변경됨에 따라 자동적으로 변경된 배열의 크기를 갖기 때문에 배열의 처리에 사용되는 for문의 조건식을 일일이 변경해주지 않아도 된다.
// 권장하지 않음
int[] score = {40, 50, 60, 70, 80};
for(int i = 0; i < 5; i++)
System.out.println(score[i]);
// 권장
int[] score = {40, 50, 60, 70, 80};
for(int i = 0; i < score.length; i++) // score.length 권장
System.out.println(score[i]);
ArrayIndexOutOfBoundsException : 배열의 index가 배열의 범위를 벗어났다는 에러
다차원 배열
타입[][] 변수이름;
int[][] score;
타입 변수이름[][];
int score[][];
타입[] 변수이름[];
int[] score[];
가변 배열
다차원 배열에서 마지막 차수의 크기를 지정하지 않고 각각 다르게 지정.
int[][] score = new int[4][3];
int[][] score = new int[4][]; // 가변배열
score[0] = new int[4];
score[1] = new int[3];
score[2] = new int[7];
score[3] = new int[5];
int[][] score = {
{12, 23, 76, 67},
{43, 67, 87},
{23 ,76, 87, 98, 35, 64, 56},
{76, 95, 85, 83, 34}
};
배열의 복사
int[] number = {1, 2, 3, 4, 5};
int[] newNum = new int[10];
for(int i = 0; i < number.length; i++) {
newNum[i] = number[i];
}
System.arraycopy()를 이용한 배열의 복사
System.arraycopy(Fromarr1, From, Toarr2, To, arr1.length); | |
Fromarr1 | 읽어올 배열 |
From From | 읽어올 배열의 시작 위치 |
Toarr2 | 기록할 배열 |
To | 기록할 배열의 쓰여질 위치 |
arr1.length | 기록할 길이 |
'Language > Java' 카테고리의 다른 글
[Java] JDK에서 제공하는 어댑터 클래스 (0) | 2022.08.21 |
---|---|
[Java] 정리 (클래스와 객체...) (0) | 2022.08.21 |
[Java] 실습 (빙고 만들기) (0) | 2022.08.19 |
[Java] 정리 (다형성, 추상...) (0) | 2022.08.19 |
[Java] 클래스(Class), 객체(Object), 인스턴스(Instanse)의 개념 (0) | 2022.08.19 |