프로그래밍이란 무엇일까?
프로그래밍 : 컴퓨터에게 일을 하도록 명령어를 만드는 것
컴파일 : 프로그램 언어를 컴퓨터가 알 수 있는 언어로 바꿔 주는 일
컴파일러 : 기계어로 번역해주는 프로그램 , 자바를 설치하면 자바 컴파일러도 설치 됨
- JRE는 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다.
- JDK는 개발을 위해 필요한 도구(javac, java 등)들을 포함한다.
- JDK = JRE + @
- JRE는 읽기 전용, JDK 읽기 / 쓰기 전용이라 생각할 수 있다.
컴퓨터에서 데이터 표현하기
컴퓨터는 0과 1로만 데이터를 저장 함
bit(비트) : 컴퓨터가 표현하는 데이터의 최소 단위로 2진수 하나의 값을 저장할 수 있는 메모리의 크기
1byte = 8bit
int num = 10;
int bNum = 0B1010; //2진수
int nNum = 012; //8진수
int hNum = 0XA; //16진수
음의 정수는 어떻게 표현할까?
정수의 가장 왼쪽에 존재하는 비트는 부호비트 입니다.
음수를 만드는 방법은 2의 보수를 취한다.
00000101 → 11111010(1의 보수를 취함) → 11111011(1을 더함)
변수
프로그래밍에서 값을 사용하기 위해 선언하는 것
프로그램에서 사용되는 자료를 저장하기 위한 공간
할당 받은 메모리의 주소 대신 부르는 이름
프로그램 실행 중에 값 변경 가능
사용되기 이전에 선언 되어야 한다.
숫자로 시작할 수 없음, 키워드도 불가능
상수
상수 : 변하지 않는 값 ( cf 변수 : 변하는 값)
상수를 선언 : final 키워드 사용
final double PI = 3.14;
final int MAX_NUM = 100;
final 로 선언된 상수는 다른 값을 대입 할 수 없음
PI = 3.15; // 에러 남
프로그램 내에서 변경되지 말아야 하는 값을 상수로 선언 해 두고 혹시 변경되는 경우 선언된 값만 수정
리터럴
리터럴 : 프로그램에서 사용하는 모든 숫자, 값, 논리 값
ex) 10, 3.14, 'A', true
리터럴에 해당하는 값은 특정 메모리 공간인 상수 풀에 있음
필요한 경우 상수 풀에서 가져와서 사용
상수 풀에 저장 할 때 정수는 int로 실수는 double로 저장
따라서 long이나 float 값으로 저장해야 하는 경우 식별자 (L, I, F, f)를 명시해야 함
형 변환
서로 다른 자료형의 값이 대입되는 경우 형 변환이 일어 남
묵시적 형변환 : 작은 수에서 큰 수로 덜 정밀한 수에서 더 정밀한 수로 대입되는 경우
ex) long num = 3; // int값에서 long으로 자동 형 변환
// L, I 을 명시하지 않아도 됨
명시적 형 변환 : 묵시적 형 변환의 반대의 경우
변환되는 자료 형을 명시해야 함, 자료의 소신일 발생 할 수 있음
ex) double dNum = 3.14;
int num = (int)dNum; //자료형 명시
항과 연산자
항 : 연산에 사용되는 값
연산자 : 항을 이용하여 연산하는 기호
대입 연산자
변수에 값을 대입 하는 연산자
int age = 24;
totalScore = mathScore + engScore;
부호 연산자
int num = 10;
int num2 = -num;
산술 연산자
사칙연산에 사용되는 연산자
+, -, *, /, %
증가 감소 연산자
++, - -
관계 연산자
, <, > =, < =, ==, ! =
연산의 결과가 true, false으로 반환됨
논리 연산자
&&(논리 곱), ||(논리 합), !(부정)
&& : 두 항이 모두 참이여야 결과 참
|| : 두 항 중 하나의 항만 참이면 결과 참
! : 참은 거짓, 거짓은 참
복합 대입 연산자
+=, -=, *=, /=, %=
조건 연산자
삼항 연산자
조건식 ? 결과1 : 결과2
조건식이 참이면 결과1 거짓이면 결과2
int num = (5 > 3) ? 10 : 20;
비트 연산자
비트 연산자는 정수에만 사용할 수 있다
&(and) 연산자 : 두 비트가 모두 1인 경우만 1 아님 0
int num1 =5;
int num2 = 10;
int result = num1 & num2;
num1 : 0 0 0 0 0 1 0 1
& num2 : 0 0 0 0 1 0 1 0
result : 0 0 0 0 0 0 0 0
—————————————-
| (or)연산자 : 두 비트가 모두 0인 경우만 0 아님 1
int num1 =5;
int num2 = 10;
int result = num1 | num2;
num1 : 0 0 0 0 0 1 0 1
| num2 : 0 0 0 0 1 0 1 0
result : 0 0 0 0 1 1 1 1
<<(왼쪽 shift) : 비트를 왼쪽에서 오른쪽으로 이동하는 연산자
(오른쪽 shift) : 비트를 오른쪽에서 왼쪽으로 이동하는 연산자
<<<,>>> : shift 로 비트이동은 동일한데, 남은 공간을 무조건 부호비트가 아닌 0으로 채움
ex) 15 << 2
00000000 00000000 00000000 00001111
00000000 00000000 00000000 0000111100 → 결과 : 60 →15 * 2^2
조건문
if 문, if-else문
if(age >= 8){
System.out.println("학교에 다닙니다");
}
else{
System.out.println("학교에 다니지 않습니다");
}
if(a > b){
max = a;
}
else {
max = b;
}
=>
max = (a > b) ? a : b;
switch-case문
switch(rank) {
case 1: medalcolor = 'G';
break;
case 2: medalcolor = 'S';
break;
case 3: medalcolor = 'B';
break;
default : color = 'A';
}
int month = 12;
int day;
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 2:
day = 28;
break;
case 4: case 6: case 9: case 11:
day = 30;
break;
default:
break;
}
System.out.println(month + "월은 " + day +"일까지 있습니다");
반복문
while, do-while, for
while 문
int num = 1;
int sum = 0;
while (num <= 10) {
sum += num;
num++;
}
sysout("1부터 10까지의 합은 " + sum + "입니다.");
do-while 문
조건 체크를 마지막에 하기 때문에 반드시 한번은 수행한다.
int num = 1;
int sum = 0;
do{
sum += num;
num++;
}while(num <= 10)
sysout("1부터 10까지의 합은 " + sum + "입니다.");
for 문
int sum = 0;
for(int num = 1; num <= 10; num++){
sum += num;
}
sysout("1부터 10까지의 합은 " + sum + "입니다.");
for( ; ; )
=> while(true) (무한루프 돌아라)
이중 for문 (구구단)
int dan;
int times;
for(dan = 2; dan <= 9; dan++){
for(times = 1; times <= 9; times++){
sysout(dan + " X " + times + " = " + dan*times);
}
sysout();
}
continue 문
반복문과 함께 쓰이며, 반복문 내부 continue 문을 만나면 이후 반복되는 부분을 수행하지 않고 조건식이나 증감식을 수행함
ex) 1부터 100까지 중 홀수만 더하는 예
int total = 0;
int num;
for(num = 1; num <=100; num++){
if((num % 2) == 0)
continue;
total += num;
}
sysout(total);
break 문
반복을 수행하지 말고 빠져나와라
ex) 계속 더하다가 sum이 100보다 크면 빠져나와라
int sum = 0;
int num = 1;
while(true){
sum += num;
if(sum > 100)
break;
num++;
}
sysout("sum : " + sum);
sysout("num : " + num);
https://www.youtube.com/watch?v=oonYQa82MU4&list=PLG7te9eYUi7typZrH4fqXvs4E22ZFn1Nj
'Java' 카테고리의 다른 글
2-5 클래스와 객체2 (1) - this (0) | 2024.03.14 |
---|---|
2-4 클래스와 객체1 (4) - 참조 자료형, private (0) | 2024.03.14 |
2-3 클래스와 객체1 (3) - 클래스, 인스턴스, 참조변수, 참조값, 생성자 (0) | 2024.03.14 |
2-2 클래스와 객체1 (2) - 메서드와 함수 (0) | 2024.03.13 |
2-1 클래스와 객체1 (1) - 객체와 클래스 (0) | 2024.02.25 |