톰캣 설치 아파치
톰캣 10 버전 설치 10.1.18 버전
톰캣 압축해제
sts 실행
SpringTool4 (나뭇잎모양) 실행
c/SSAFY/workspace/01_startcamp 로 워크스페이스 선택
내부에서 File/SwitchWorkspace 로 들어가서 워크스페이스 변경 가능
프로젝트 생성(하단에 모듈은 생성x 체크 해제)
javaSE-17로 안되어 있으면, preferences/java/installed JREs 들어가서 LibericaJDK-17로 변경
Class 생성
패키지 지우고, 이름넣고, main메서드 추가
기본세팅 끝
c++
소스코드를 컴파일해서 기계어로 된 무언가가 돌아간다 -> 운영체제 종속적
java
소스코드 결과물로 자바 파일이 나온다. 이걸 컴파일 하면, xxx.class가 나온다.
-> JVM에서 돌아간다. 이를 execute 된다고 함.
os 위에 JVM 위에 Java App이 올라서 실행.
os에 종속적인거는 JVM. Java 코드는 어떤 운영체제에서도 동작할 수 있다.
-> 즉, Java는 어디서든 돌아간다. 플랫폼에 독립적이다.
JRE(Java Euntime Envirionment)
JVM + CoreAPI
JDK(Java Development Toolkit)
JRE + 개발도구(디버거)
long l = 12L;
이 정석. 12만 써도 알아서 컨버터 해주긴함 byte b1 = 125;
short s1 = 125;
// 1. byte에 넣는다 x
byte res = b1+s1;//에러
// 2. short에 넣는다 x
//더하기는 int형으로 변환하기 때문
short res = b1+s1; //에러
// 3. int에 넣는다 o
int res1 = b1 + s1;
double var2 = 3.14;
float var3 = 3.14; //f,F를 붙여줘야함
float var4 = 3.14F;
double 64비트, float 32비트
실수형을 써야할때는: 소수점 표현해야할때, 10의 지수 E, e를 포함할때
💡컴파일 에러(코드 밑에 빨간줄 에러), 런타임 에러(실행시 발생하는 에러,콘솔창에 찍히는 에러)
char var5 = 'h';
char var6 = 'i';
int var7 = var5+var6;
System.out.println(var7);
System.out.println("결과 : "+var5+var6);
💡 더하기 연산자는 기본값인 숫자형으로 변환하기 때문에 var5+var6 이 각각 유니코드로 변화후 더하기 연산되어 나온다.
하지만 String과 만나면 문자열 취급되어 그대로 나온다.
System.out.println(5/0); // java.lang.ArithmeticException
double tmp = 5/0.0;
System.out.println(tmp+1); //Infinity
📢0으로 나누면 나오는 에러 %연산자도 동일하게 에러 발생
int x = 10;
int z;
z = x++;
System.out.println(z);
System.out.println(x);
z에 대입먼저 하고 x 증가됨
int num = 10;
if(num==10| num++>5) {
System.out.println("연산자가 하나일 때");
}
System.out.println(num);
int num2 = 10;
if(num2==10|| num2++>5) {
System.out.println("연산자가 두개일 때");
}
System.out.println(num2);
연산자 두개일때는 앞에 조건 충족시 뒤에꺼는 아예 실행되지 않는다.
num++이 적용안된 모습
if문은 생략
int var = 3;
switch(var) {
case 1:
System.out.println("1입니다.");
case 2:
System.out.println("2입니다.");
case 3:
System.out.println("3입니다.");
default:
System.out.println("기본");
}
case에 break 문 없으므로 실행시 하위 코드 전부 실행.(break문 잊지 말자
주의사항. 자바의 낮은 버전에서는 switch문의 지원범위가 다르므로 조심하자
for(int i = 0; i<10; i++){
//실행내용
}
for문이 실행되는 순서
1. int i = 0; // 1번만 실행
2.
if(i<10){
//실행내용
}
3. i++;
4. if(i<10){
//실행내용
}
...반복
System.in - 키보드 입력값.
Scanner가 키보드 입력값을 자바에서 쓸수 있는 형태로 변환해줌
Scanner sc = new Scanner(System.in);
String temp = sc.next();
System.out.println(temp);
📢 next 뒤에 붙은 데이터 타입에 따라서 데이터 타입이 달라짐 ex) sc.nextInt()
입력시 데이터 타입 잘못 입력하면 에러발생
📢 sc.next: 입력이 끝나는 시점은 개행문자가 입력 됐을때, 실제 들어오는 값은 whitespace(엔터, 공백, 탭, 개행)를 기준으로 입력받는다.
개행문자 전까지 읽어서 스캐너에 남아 있음
sc.nextLine: 엔터가 입력되면 입력을 받아옴
개행문자 날리고 입력받아옴. (개행문자 안남음)
BufferedReader
br.readLine() : 문자열 한줄 다 읽어옴
char[] intArr = str.toCharArray();// 문자로 나눠서 입력받을수 있다.
StringTokenizer
공백을 기준으로 쪼갠다.
쪼갠 문자열을 Integer.parseInt()에 넣어서 숫자형으로 변환해준다.
Scanner sc = new Scanner(System.in);
int n =sc.nextInt(); // 입력 시작부분부터 화이트스페이스 전까지 받음
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
int N, M;
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());