스타트캠프 자바

이상민·2024년 1월 10일
0

알고리즘

목록 보기
118/128

JDK 다운로드

  1. bellsoft에서 JDK 17 다운로드
  2. 확인 java -version
  3. STS 설치 Spring Tools 4 for Eclipse 설치

    스프링 툴 실행 (Release 생성됨)
  1. 톰캣 설치 아파치
    톰캣 10 버전 설치 10.1.18 버전
    톰캣 압축해제

  2. sts 실행
    SpringTool4 (나뭇잎모양) 실행
    c/SSAFY/workspace/01_startcamp 로 워크스페이스 선택
    내부에서 File/SwitchWorkspace 로 들어가서 워크스페이스 변경 가능

  3. 프로젝트 생성(하단에 모듈은 생성x 체크 해제)

    javaSE-17로 안되어 있으면, preferences/java/installed JREs 들어가서 LibericaJDK-17로 변경

  4. Class 생성

    패키지 지우고, 이름넣고, main메서드 추가

    기본세팅 끝

java 동작과정

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 + 개발도구(디버거)

Primitive Data Type

  1. 논리형 boolean : 자바는 true/ false만 가능
  2. 문자형 char: 'a' 안에 문자 한개 넣어서 사용
  3. 숫자형 int : 숫자를 넣었을때, 기본값은 int로 들어간다.
  4. 숫자형 long : long l = 12L; 이 정석. 12만 써도 알아서 컨버터 해주긴함
    -> long 형은 알고리즘때 int 형범위를 초과하는 값을 넣어야 할때 사용한다.
		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;
  1. 실수형 float, double
		double var2 = 3.14;
		float var3 = 3.14; //f,F를 붙여줘야함
		float var4 = 3.14F;

double 64비트, float 32비트
실수형을 써야할때는: 소수점 표현해야할때, 10의 지수 E, e를 포함할때

💡컴파일 에러(코드 밑에 빨간줄 에러), 런타임 에러(실행시 발생하는 에러,콘솔창에 찍히는 에러)

  1. 문자열 처리
		char var5 = 'h';
		char var6 = 'i';
		int var7 = var5+var6;
		System.out.println(var7);
		System.out.println("결과 : "+var5+var6);


💡 더하기 연산자는 기본값인 숫자형으로 변환하기 때문에 var5+var6 이 각각 유니코드로 변화후 더하기 연산되어 나온다.
하지만 String과 만나면 문자열 취급되어 그대로 나온다.

연산

0으로 나누기

		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, switch

if문은 생략

switch

		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

	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

  1. 입력받을 객체 만들기
	Scanner sc = new Scanner(System.in);
  1. 입력 받기
	int n =sc.nextInt(); // 입력 시작부분부터 화이트스페이스 전까지 받음

BufferedReader && StringTokenizer

  1. 입력받을 객체 만들기
 	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = null;
    
    int N, M;
  1. 입력 받기
 	st = new StringTokenizer(br.readLine());
    int N = Integer.parseInt(st.nextToken());
    int M = Integer.parseInt(st.nextToken());
profile
개린이

0개의 댓글