[JAVA] 자바 프로그래밍

WOOK JONG KIM·2022년 8월 21일
0

패캠_java&Spring

목록 보기
1/103
post-thumbnail
  • 프로그래밍: 컴퓨터가 일을 수행 하도록 프로그래밍 언어로 명령어 집합(프로그램)을 만드는 일
  • 컴파일 : 프로그래밍 언어를 컴퓨터가 실행 가능한 기계어로 만드는 일
  • 컴파일러 : 기계어로 바꾸어 주는 프로그램( ex. 자바 컴파일러, gcc )

자바 프로그래밍 특징

  • 플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용할 수 있다

  • 객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋다

객체 지향 프로그래밍(OOP)

프로그램의 구현을 시간의 흐름순이 아닌 객체간의 관계와 협력을 기반으로 프로그램 하는 것

  • JDK(Java Development Kit) : 자바에서 제공되는 개발용 라이브러리
  • JRE(Java Runtime Environment) : 자바 프로그램이 실행되는 환경
  • JVM(Java Virtual Machine) : 자바 가상 머신

기초 문법

package ch01;

public class HelloJava {

	public static void main(String[] args) {
		System.out.println("Hello, Java");
	}
}

main 함수는 구동을 위해 사용, 웹 서버에 처리 할 경우엔 사용 안할 수도!

컴파일된 클래스 파일은 bin 폴더에 있다!

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);
		
	}

}
  • 2진수 : 0B
  • 8진수 : 0
  • 16진수 : 0x

변수 명은 카멜 표기법 자주 사용
패키지명은 소문자 사용


자료형

java에서 정수는 기본적으로 integer(4byte)로 잡히고 실수는 double(8byte)로 잡힌다!

큰 수 일 경우 long, float -> 값 뒤에 L, f 붙이기

부동 소수점은 지수부와 가수부로 표현

정규화로 인해 보통 1.m * 2 ^-n 으로 표현

지수부는 0을 표현할 수 없기에 약간에 오차 발생할 수 있다

상수(constant)

변하지 않는 수(보통 대문자로 표현)

final 예약어 사용하여 선언

리터럴(literal)

  • 프로그램에서 사용하는 숫자, 문자, 논리값을 뜻함

  • 리터럴은 상수 풀(constant pool)에 있음

  • static 변수와 마찬가지로 프로그램 로드와 동시에 메모리에 할당

형 변환

  • 서로 다른 자료형 간에 연산등의 수행을 위해 하나의 자료형으로 통일하는 것
  • 묵시적 형 변환(explicit type conversion, 자동 형 변환)과 명시적 형 변환(implicit type conversion, 강제 형 변환)이 있음
  • 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어 짐
  • 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어 짐

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;

밑의 두 case의 경우는 프로그래머가 강제로 형변환한 경우


증감 연산자

논리 연산자

논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
-> 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음

논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
-> 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음

비트 연산자

연산자 우선순위


if문

if(조건식) {

    수행문1;   // 조건식이 '참'인 경우에 수행됨
}
else if(조건식){
	수행문;
}

else{
    수행문2;    // 조건식이 '참'이 아닌 경우에 수행됨
}

switch-case문

public class SwitchCaseTest {

	public static void main(String[] args) {

		int month = 10;
		int day;
		
		switch(month){
		
			case 1: case 3: case 5: case 7: case 8: case 10: case 12:
				day = 31;
				break;
			case 4: case 6: case 9: case 11:
				day = 30;
				break;
			case 2: 
				day = 28;
				break;
			default:
				day = 0;
				System.out.println("존재하지 않는 달 입니다.");
			
		}
		System.out.println(month + "월은 " + day + "일입니다.");
	}
}

if - else if - else 문을 사용할 때 복잡하고 번거로운 부분을 가독성 좋게 구현

문자열도 구현 가능!

Switch Expression

public class SwitchCaseUpTest {

	public static void main(String[] args) {
		
		int month = 3;
		
		int day = switch (month) {
	    	case 1, 3, 5, 7, 8, 10,12 -> {
	    		System.out.println("한 달은 31일입니다."); 
	    		yield 31;
	    	}
	    	case 4,6,9,11 -> {
	    		System.out.println("한 달은 30일입니다."); 
	    		yield 30;
	    	}
	    	case 2 ->{
	    		System.out.println("한 달은 28일입니다.");
	    		yield 28;
	    	}
	    	default->{
	    		System.out.println("존재하지 않는 달 입니다."); 
	    		yield 0;
	    	}
		};
		System.out.println(month + "월은 " + day + "일입니다.");
	}
}
  • 간단하게 쉼표(,)로 조건 구분
  • 식으로 표현 하여 반환 값을 받을 수 있음. 리턴 값이 없는 경우는 오류가 생김
  • yield 키워드 사용

  • 마지막 괄호에 세미콜론 사용하는 것 유의!


while문

  • 주어진 조건에 맞는 동안(true) 지정된 수행문을 반복적으로 수행하는 제어문

  • 조건이 맞지 않으면 반복하던 수행을 멈추게 됨

while(조건식){
	수행문1;
    ...
}
	수행문2;
    ...

do-while문

do{
	수행문1;
    ...
} while(조건식):
	수행문2;
    ...

for문

for (초기화식; 조건식; 증감식)
{
}

각 반복문 비교

profile
Journey for Backend Developer

0개의 댓글