Java Programming - (1)

kangking·2024년 5월 23일
0

Java

목록 보기
1/10
post-thumbnail

컴파일 언어 VS 인터프리터 언어

컴파일 언어

소스 코드를 운영체제의 실행 파일로 변경하고 실행한다.

  • C언어 코드를 윈도우에서 실행 시키려면 윈도우 실행 파일인 PE파일로 변경하고 실행해야 한다.

  • C언어 코드를 리눅스에서 실행 시키려면 리눅스 실행 파일인 ELF로 변경하고 실행해야 한다.

  • 컴퓨터는 확장자가 아닌 내용으로 프로그램을 구분한다.

컴파일러

  • 컴퓨터가 이해할 수 있게 파일을 변경해주는 도구

인터프리터 언어

소스코드를 운영체제에서 실행 시키려면 운영체제의 인터프리터에서 실행해야 한다.

  • 소스코드는 바뀌지 않는 대신 운영체제에 맞는 컴파일러를 준비해야 정상적으로 동작한다.

차이점

  1. 컴파일 언어는 컴퓨터 자원을 직접 다루기 때문에 인터프리터형 언어에 비해 성능이 좋다.

  2. 컴파일 언어는 컴파일 시 오류를 감지하면 컴파일을 하지 중단하기 때문에 실행하지 못하지만, 인터프리터 언어는 라인별로 코드를 실행하기 때문에 해당 라인을 만날 때 까지는 동작한다.


Java

자바는 인터프리터와 컴파일 언어 사이에 위치하는데, 자바 코드가 실행될 때 컴파일을 통해 .class파일로 변경되고 이를 인터프리터가 실행시킨다.

Java 버전

LTS(Long Term Service)로 지정되는 8, 11, 17 JDK버전은 오랜기간 유지보수를 제공하기 때문에 보편적으로 많이 사용된다.

  • 자바 뿐만 아니라 대부분은 최신 버전은 사용하지 않는다(문제 예측 불가 및 발생시 해결 어려움)
  • 버전을 올리는 경우는 취약점이 발생되었을 경우나, 특정 프로그램이 지원하는 자바 버전이 현재 버전보다 높을 경우에 해당한다.

  • Spring 3버전 이상부터는 Java는 17버전 이상만 지원한다.

  • 버전 변경시 PATH(실행 경로)를 수정해줘야 한다.

jar파일

  • 자바의 클래스들을 여러개로 묶어놓은 파일

문법

변수

하나의 데이터를 담는 공간

  • 선언

    클래스명 변수명;
    클래스명 변수명 = 값;
  • 저장

    변수명 = 값;
  • 사용

    변수명호출

변수 네이밍 컨벤션

문법적

  • 대소문자 구분
  • 예약어는 사용 X (public, private static 등)
  • 숫자로 시작X
  • 특수문자는 _와$만 가능(가급적 사용X)

사회적

  • Camel Case: 첫단어를 제외한 나머지 단어의 첫 글자를 대문자로
  • Snake Case: 단어 구분을 _로

연산자

우선순위는 위에서 아래로 갈 수록 낮아진다.

  • 산술 연산자: +, -, *, /, %
  • 비교 연산자: <, >, <=, >=, ==, != (결과값은 T,F)
  • 논리 연산자: &&, ||
  • 대입 연산자: =

조건문

  • if: 만약에 ~한다면 ~한다
    if(조건문){
        ~한다(참이면)
    }
  • else: 그렇지 않다면 ~ 한다

     else{
         ~한다(앞 조건이 거짓이면)
     }
  • else if: 만약 조건1이 아니고, 조건2가 참이면 ~한다

     if(조건문1){
         ~한다(참이면)
     }else if(조건문2){
         ~한다(참이면)
     }

반복문

조건이 참이면 조건이 거짓이 될 때 까지 반복한다.

  • for: ~부터 ~까지 n번 반복

     for(초깃값;조건;증감식){
     	반복할 코드
     }
  • while: 조건이 참인동안 반복

     while(조건){
     	반복할 코드
       조건을 변경해줄 코드
     }
  • do-while: 우선 1번 실행 후 조건이 참인동안 반복

     do{
     	반복할 코드
     }while(조건)
  • break: 반복문 종료

  • continue: 즉시 다음 반복문 실행

객체 지향 프로그램

객체

현실 세상에 있는 유,무형의 무언가를 컴퓨터 세상에 구현한것
공통된 특징을 저장해서 객체를 생성한다.
이러한 객체를 만들기 위한 공통된 형식을 클래스라고 한다.

  • ex) 학생 -> 이름, 나이를 저장해서 학생 객체를 만든다.

  • 속성: 변수(여러개)

  • 기능: 함수(메소드)(여러개)

  • 메소드

    반환클래스 메소드이름() {
    	실행될 코드
    	return 반환값;
    }

객체지향 5대 원칙 SOLID

  • SRP(단일책임의 원칙): 하나의 코드는 하나의 기능만

배열

같은 타입의 변수를 여러개 저장하는 것

  • 배열 생성

     클래스명[] 배열변수명;
     Integer[] nums;
  • 변수

     nums = new Integer[5];
  • 값 저장: index는 0부터 시작 | 배열변수명[index] = 값;

     nums[0] = 10;
     nums[1] = 20;
     nums[2] = 30;
     nums[3] = 40;

기타 기본 개념

  1. 모든 대입 연산자(=)에는 값이 복사되어 저장됨

  2. 배열은 주소값을 가진다.

  3. 배열 = 베열을 하게 되면 값을 복사하는게 아닌, 주소값을 복사

int a = 10; // a라는 변수에 10이라는 값 저장(주소x);
int[] arrA = {1,2,3}; //arrA에 {1,2,3}이 담긴 배열의 시작주소 저장
int[] a = arrA; //a라는 변수에 arrA에 담긴 값(배열의 시작주소) 저장

//따라서 이때 a는 arrA의 값이 아닌 주소를 직접 참조하고 있기 때문에
//이를 수정할 시 arrA의 값도 같이 바뀌게 된다.
profile
하루하루 의미있게

0개의 댓글