프로그래밍: 컴퓨터가 일을 수행 하도록 프로그래밍 언어로 명령어 집합(프로그램)을 만드는 일
컴파일 : 프로그래밍 언어를 컴퓨터가 실행 가는한 기계어로 만드는 일
컴파일러 : 기계어로 바꾸어 주는 프로그램 ( ex. 자바 컴파일러, gcc )
플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용할 수 있다.
객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋다.
프로그램이 안정적이다.
풍부한 기능이 제공되는 오픈 소스이다.
프로그램의 구현을 시간의 흐름순이 아닌 객체간의 관계와 협력을 기반으로 프로그램 하는 것
Object oriented programming(OOP) 이라고 함 ( cf. 절차 지향 프로그래밍 proedural programming )
사용 하는 언어 : Java, C++, C#, Python, JavaScript, Ruby 등 다수
JDK(Java Development Kit) : 자바에서 제공되는 개발용 라이브러리. 계속 버젼이 올라가고 있음
JRE(Java Runtime Environment) : 자바 프로그램이 실행되는 환경. 8.0까지 무료로 제공 됨
JVM(Java Virtual Machine) : 자바 가상 머신으로 프로그램이 실행되는 환경인 JRE 가 설치되어 있어야 함
예전에 설치해뒀던 2020-03 버전 그대로 사용했다!
스프링 공부하면서 Compiler version이 달라져서 Build path만 바꿔줬다!
package ch01;
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello, Java");
}
}
0과 1로만 데이터를 저장함
bit(1비트) : 컴퓨터가 표현하는 데이터의 최소 단위로 2진수 하나의 값을 저장할 수 있는 메모리의 크기
byte(바이트) : 1byte = 8bit
한 개의 비트로 나타낼 수 있는 수 : 0. 1 (2개)
두 개의 비트로 나타낼 수 있는 수 : 00, 01, 10, 11 (4개)
세 개의 비트로 나타낼 수 있는 수 : 000, 001, 010, 011, 100, 101, 110, 111 (8개)
package ch04;
public class BinaryTest {
public static void main(String[] args) {
int num = 10;
int bNum = 0B1010;
int oNum = 012;
int xNum = 0XA;
System.out.println(num);
System.out.println(bNum);
System.out.println(oNum);
System.out.println(xNum);
}
}
package ch05;
public class VariableTest {
public static void main(String[] args) {
int age, count;
age = 10;
int level = 10000;
System.out.println(age);
System.out.println(level);
}
}
변수 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수도 있고, 특수문자 중에는 $와 _만 사용 (ex. count100, _master)
변수 이름의 시작은 숫자로 할 수 없음 ( ex. 27days(X), 1abc(X))
자바에서 이미 사용하고 있는 예약어는 사용할 수 없음 (while, break 등)
변수 이름은 프로그램내에서 사용되는 것이므로 그 용도에 맞고 가독성이 좋게 만드는것이 중요
ex) int numberOfStudent;
패키지명은 소문자로 시작, class명은 대문자로 시작하는 규칙과 비슷
: 변수를 선언하면 해당되는 자료형의 크기 만큼 메모리가 할당
-> 변수는 할당된 메모리를 가리키는 이름
int level = 10; // 4바이트 정수형 메모리가 level 이라는 이름으로 할당 됨
정수형 | 문자형 | 실수형 | 논리형 | |
---|---|---|---|---|
1바이트 | byte | boolean | ||
2바이트 | short | char | ||
4바이트 | int | float | ||
8바이트 | long | double |
자료형 | 바이트크기 | 수의 범위 |
---|---|---|
byte | 1 | - ~ |
short | 2 | - ~ |
int | 4 | - ~ |
long | 8 | - ~ |
- 1byte = 8bit
- 첫 한 칸은 부호비트를 표현
- 0을 표현하기 위해 -1 이 됨
- 크기를 넘어가는 숫자를 넣으면 오류 발생
int num = 12345678900; // 오류 - num은 4바이트, num이 표현할 수 있는 범위를 벗어남
long lnum = 12345678900; //오류 - lnum은 8바이트, 앞에서 선언할때 4바이트가 되어버림
long lnumber = 12345678900L; // ok - 큰 숫자를 선언할 땐 뒤에 L을 붙여 long형으로 잡을 수 있게함
가수 밑수 지수
밑수는 2,10,16을 주로 사용한다
자바에서는 실수의 기본 타입은 dobule을 사용 함
package ch07;
public class DoubleTest {
public static void main(String[] args) {
double dnum = 3.14;
float fnum = 3.14F;
System.out.println(dnum);
System.out.println(fnum);
}
}
지수와 가수로 나타내는 부동 소수점 방식에서는 지수부가 0을 표현할 수 없기 때문에 약간의 오차가 발생할 수 있다
public class DoubleTest2 {
public static void main(String[] args) {
double dnum = 1;
for(int i = 0; i<10000; i++) {
dnum = dnum + 0.1;
}
System.out.println(dnum);
}
}
'A'를 인코딩 하면 65
65를 디코딩 하면 'A'
char ch = 'A';
char ch2 = 66;
package ch08;
public class CharacterTest {
public static void main(String[] args) {
char ch1 = 'A';
System.out.println(ch1);
System.out.println((int)ch1);
char ch2 = 66;
System.out.println(ch2);
int ch3 = 67;
System.out.println(ch3);
System.out.println((char)ch3);
//char ch4 = -66; 음수는 대입 할 수 없음
char ch5 = '한';
char ch6 = '\uD55C';
System.out.println(ch5);
System.out.println(ch6);
}
}
character set : 문자를 숫자로 변환한 값의 세트
encoding : 문자가 숫자로 변환되는 것
decoding : 숫자에서 다시 문자로 변환되는 것
ASKII code : 알파벳과 숫자 특수 문자등을 1바이트에 표현하는데 사용하는 문자세트
UNICODE : 전 세계 표준으로 만든 문자 세트
UTF-8 : 1바이트에서 4바이트까지 다양하게 문자를 표현할 수 있음
UTF-16 : 2바이트로 문자를 표현
한글유니코드표
package ch09;
public class BooleanTest {
public static void main(String[] args) {
boolean isMarried = true;
System.out.println(isMarried);
}
}
package ch09;
public class LocalVariableType {
public static void main(String[] args) {
var i = 10;
var j = 10.0;
var str = "hello";
System.out.println(i);
System.out.println(j);
System.out.println(str);
str = "test";
//str = 3;
}
}
package ch10;
public class ConstantTest {
public static void main(String[] args) {
final int MAX_NUM = 100;
final int MIN_NUM;
MIN_NUM = 0;
System.out.println(MAX_NUM);
System.out.println(MIN_NUM);
//MAX_NUM = 1000;
}
}
정수의 범위가 넘어가는 경우는 L, l을 float로 사용하려는 경우는 F, f 식별자를 써줘야 함
byte bNum = 10;
int iNum = bNum;
int iNum1 = 20;
float fNum = iNum2;
int iNum = 10;
byte bNum = (byte)iNum;
double dNum = 3.14;
int iNum2 = (int)dNum;
package ch10;
public class TypeConversion {
public static void main(String[] args) {
double dNum = 1.2;
float fNum = 0.9F;
int iNum1 = (int)dNum + (int)fNum;
int iNum2 = (int)(dNum + fNum);
System.out.println(iNum1);
System.out.println(iNum2);
}
}