java

java 수업 정리

JDK,인텔리제이 설치

💨 jdk 설치하기

👻 oracle 링크

  • jdk 설치 이후 자바 환경변수 변경

    1. ctrl+R -> sysdm.cpl 고급 시스템 변수 실행
    2. 환경변수 추가 JAVA_HOME 로 /jdk 경로를 붙여넣기
    3. cmd에 javac -version으로 확인

    image

💨 인텔리제이 설치하기

  • 인텔리제이는 바로 설치를 하지 않고 젯브레인 제품군을 관리해주는 툴박스 앱을 통해 다운로드 합니다. 👉 툴박스 설치하기

  • 설치 후, 윈도우즈 오른쪽 아래 윗꺽쇠 버튼을 클릭해 젯브레인 툴박스 앱을 확인합니다. 그 후엔 아래 사진의 도구를 설치합니다.

    image

  • 앱 실행 후 플러그인으로 korean 과 Lombok 을 설치합니다.

  • customize>All setting

    • 에디터> 파일 인코딩 모두 utf-8로 변경
    • 애디터> 일반> 자동 가져오기 java에 있는 빈 체크박스 체크
  • 주석 색상 변경

  • Editor 속 Color Scheme에 Java> comment 를 찾음

    • Line comment 에서 inherit 체크 해제 후 Foreground를 D7D052로 바꾼 후 apply
    • Block comment 에서 inherit 체크 해제 후 Foreground를 F574AE로 바꾼 후 apply
  • 콘솔 한글 설정

    • 에디터> 파일 인코딩에서 전부 UTF-8로 변경, 명확한 ~ 체크박스 체크
    • 사용자 지정 VM 옵션 편집… 에서 아래 코드 추가후 저장
     -Dfile.encoding=UTF-8
     -Dconsole.encoding=UTF-8
    
    • 파일> 캐시 무효화 클릭하면 인텔리제이가 재실행 되면서 프로젝트를 초기화함 -> 한글출력 가능 해집니다.

자바 용어 설명

  • JVM (Java Virtual Muchine): 자바 가상머신 - 운영체제마다 설치 되는 코드 해석기
  • API (Application Program Interface): 프로그램 개발에 필요한 함수목록
  • 클래스 라이브러리: 클래스 도서관, ap나 함수,클래스의 모음

자바실습

  • //는 한 줄 주석문, /* */은 여러줄 주석문
  • sout시에 System.out.println(); 가 출력됨
  • 문자열 연결시 "문자"+"문자" 하면 됨
  • 연산자는 왼쪽이나 오른쪽에 문자열이 있으면 문자열 연결 연산자로 동작함
    • System.out.println("화면" + 10 + 20); 의 결과값은 화면1020
    • System.out.println(10 + 20 + "화면"); 의 결과값은 30화면
  • println 은 문자열 한 줄 출력 + 줄바꿈 , print는 줄바꿈 없음, printf는 형식화된 출력문
  • 데이터 타입(기본 자료형 8개)
    • 정수형 : int(4), long(8), short(2), byte(1)
    • 실수형 : float(4), double(8)
    • 논리형 : boolean(1)
    • 문자형(내부적으로 숫자형) : char(2)
  • 형변환 type casting
    • 형변환 공식
      1. 작은 정수형 -> 큰정수형(문제없음)
      2. 큰 정수형 -> 작은 정수형(표현범위 벗어나면 값잘림)
      3. 실수형 -> 정수령(값잘림,소숫점 날라감)
      4. 정수형 -> 실수형(문제없음)
    • 지동 형변환 : 대입(산술)연산자를 통해 자동으로 형변환 됨
    • 수동 형변환 : 형변환 연산자(타입)을 통해 형변환 할때
  • 연산자 종류 - 이항연산자(산비논대)
    • 단항 : ++ – !(논리반전) (타입) ~(비트반전) 우선순위가 가장 높다
    • 산술 : + - * / % « » »>(비트단위 이동연산자)
    • 비교 : < > <= >= == != instanceof(객체비교연산자)
    • 논리 : && or & or ^ (비트단위 논리연산자)
    • 삼항 : ? :
    • 대입 : = 복합대입(+= -= *= /= %= …) 우선순위가 가장 낮다.
  • 비교연산자
    • A > B : A가 B보다 큰가? true/false
    • A < B : 작은가?
  • 논리 연산자
    • AND &&: ~이고,~이면서
    • OR ㅣㅣ : ~이거나, ~또는, ~중의 하나
    • NOT ! l ~아니다
    • T && T : T 둘다 참이면 참
    • F ㅣㅣ F : F 둘다 거짓이면 거짓
  • 상황 연산자 : ? : 물음표 연산자
    • 패턴: (조건절) ? A값 : B값
  • 대입연산자
    • A = B : B값을 A에 덮어쓰기 한다
    • 값의 전달 방향이 오른쪽에서 왼쪽
    • 단항연산자이므로 연산순서도 오른쪽에서 왼쪽으로
  • 복합대입연산자
    • A += B : A = A + B
    • A -= B : A = A - B

인텔리제이 단축키

  • 출력관련 템플릿
    • sout : System.out.println();
    • soutv: 변수와 함께 출력
    • soutm: 현재 메서드 이름 출력
    • soutp: 메서드 파라미터 출력
  • 객체 생성 및 캐스팅
    • psf: public staic final
    • psvm: main 메서드
    • thr: throw new
  • 반복문 관련 템플릿
    • fori: 기본 for루프
    • itar: 배열을 위한 for 루프
    • iter: 향상된 for 루프
    • itli: List를 위한 for 루프
  • 조건문 관련 템플릿
    • ifn: null 체크 조건문
    • inn: not null 체크 조건문

Scanner 클래스 함수들

  • nextLine() : 문자열을 입력받되 엔터칠 때 까지 (공백포함)
  • next() : 문자열의 공백까지만 입력받음
  • nextInt() : 문자열을 받아서 정수로 반환해줌
  • nextFloat() : 실수로 반환해줌
  • nextDouble() : 실수로 반환해줌

조건문 (자바스크립트 문법과 거의 동일)

  • 단일 if문
    if(조건절-비교,논리 연산자) {
         true일 때 수행문
    }
    
  • if else문
    if(10>20)
        System.out.println("10>20");
    else System.out.println("10<=20");
    
  • if else if문
    int score = 90;
    if(score == 90){
        System.out.println("90");
    } else if(score == 80){
        System.out.println("80");
    } else {
        System.out.println("그외의 수");
    }
    
  • 중첩 if문
    if(true){ //조건1
        if(false){ //조건2
            //조건1이고(and) 조건2이다
        } else if(true){ //조건3
            //조건1이고 조건2는 아니고 조건3이다
        }
    }
    

조건문 switch문 (자바스크립트와 거의 유사함)

  int a = 10;
  switch (a){
      case 10:
          System.out.println("10 입니다");
          break;
      case 20:
          System.out.println("20 입니다");
          break;
      default:
          System.out.println("그외의 경우");
          break;
  }

반복문

  • for , do-while
  • 패턴

for( 초기화; 조건; 증감 ) {
  실행문;
}

  • 무한반복문 만드는 법

for( ; ; ){ }
while(true){ }

배열 Array

  • 같은 타입의 데이터를 연속적 공간에 나열해 놓은 데이터구조
  • 생성시에 크기가 지정되고 이후에는 변경 불가
  • 인덱스는 0부터 부여됨

객체지향 프로그래밍

  • 모든 사물을 객체(물건,사물)로 추상화(모델링,설계)하여 프로그래밍 하는 기법
  • 속성(변수,필드)과 행동(함수,메서드)로 정의한다.
//클래스 선언
class Car{
  //속성(변수)
  int price = 1000;
  //행동(메소드)
  void run(){
  System.out.println("차가 달린다");  } }

  public class ex19 {
  public static void main(String[] args) {
  // 클래스이름 객체(인스턴스) 이름 = new 클래스이름();
  Car car = new Car();

          //멤버변수 접근하려면, 객체이름 뒤에 점.을 찍는다.
          System.out.println(car.price);
          //멤버함수 접근하려면, 객체이름 뒤에 점.을 찍는다.
          car.run();

          // System.out.println(car.run()); //void 반환값을 출력하면 x
      }

  }
  • static 변수/함수

    • static 예약어 : 정적변수(객체)/함수를 지정할 때 사용
    • 의미 : 프로그램 구동시에 고정된 메모리 번지에 들어감 (자동 new), 프로그램 종료시까지 변경되지 않음
    • 사용이유

      • 시작점(Entery Point)를 지정할 때 사용함
      • 중요한 데이터를 안정적으로 저장할 때 주로 사용
      • 자주 사용하는 유틸성 클래스에 지정한다. new를 안 해도 클래스 함수 사용 가능
  • 접근제한자

    • 클래스,함수,변수 앞에 위치하여 접근을 제한할 때 사용

      접근제한자설명
      public같은 폴더(패키지)에서, 다른 폴더의 클래스에서 접근가능
      protected같은 플더 + 상속 관계 클래스에서 접근 가능
      default같은 폴더
      private같은 클래스 안에서 접근 가능(캡슐화,은닉)
       Getter/Setter 함수를 통해서 접근 가능하도록 허용
       ex. 은행 잔고를 창구를 통해서만 접근가능하도록
  • 메서드 오버로딩(Overloading)

    • 매개변수의 타입과 갯수를 다르게 함으로 함수의 기능을 확장하는것
    • 같은이름의 함수를 여러번 사용하기 위함
    • ex. println(정수형) => printlnInt println(문자열) => printlnStr
  • 매서드 오버라이딩(Over riding)

    • 상속관계에서 자식클래스의 매서드가 부모클래스의 메소드를 재정의 하는것
    • 싱글톤(Signleton)
    • 프로그램 안에서 유일한 클래스 객체
  • 생성자 함수(Constructor)

    • 클래스 객체가 생성될 때(new) 자동으로 호출되는 메서드
    • 용도 - 클래스 필드가 초기화 할 때
  • 클래스의 상속

    • 부모(상위) 클래스의 유산(자원-함수와 변수)를 자식(하위) 클래스가 물려받은 것
    • 사용이유
      • 코드 중복을 피할 수 있다
      • 계층적인 구조로 코드를 설계할 수 있다
  • 형변환

    • 자식클래스의 객체를 부모클래스형으로 변환하는 것을 업캐스팅이라고 합니다. 명시적 형변환 없이 자동으로 이루어집니다.
    • 업캐스팅한 객체는 부모 클래스에 선언된 필드와 메서드만 접근할 수 있습니다.
    • 형식 : 부모_클래스명 참조_변수 = new 자식_클래스명()
    • 부모클래스의 객체를 자식 클래스형으로 형변환하는 것을 말합니다. 이때 자식 클래스형을 붙여 명시적으로 형변환해야 합니다.
    • 형식 : (자식_클래스명)참조_변수
  • super

    • 부모 클래스를 참조하는데 사용하는 특별한 키워드 입니다.
    • super 키워드는 다음과 같을 때 사용합니다.
      • 자식클래스에서 부모클래스의 메서드를 호출할 때
      • 자식클래스의 생성자에서 부모클래스의 생성자를 호출할 때 (단, 부모클래스에 명시적 생성자가 있어야함)
      • 부모 클래스의 필드 접근할 때
  • 추상 클래스

    • 추상 클래스는 일반 클래스의 공통적인 부분을 추출해서 만든 완전하지 않은 클래스로, abstract 키워드를 붙여 선언합니다.
    • 추상 클래스는 추상 메서드를 포함 한다. 추상메서드는 선언만하고 구체적 동작을 정의하지 않은 메서드다. 추상클래스를 상속받은 클래스는 반드시 추상 메서드를 오버라이딩해서 동작 구현을 해야한다.
    • 추상클래스는 직접 생성할 수 없고 상속받은 자식 클래스에만 생성할 수 있다.
      [접근_제한자] abstract class 클래스명 {
          abstruct 반환형 메서드명(매개변수1,매개변수2,...);
      }
      
  • 인터페이스

    • 인터페이스는 킄ㄹ래스에 구현할 메서드들이 선언된 집합이다. 앞에 interface 키워드를 붙여 선언.
    • 인터페이스에는 메서드 선언만 있고 구현은 없는 추상 메서드를 포함한다. 메서드 구현은 각 클래스에서 담당.
    • 인터페이스는 디폴트 메서드와 정적 메서드를 포함할 수 있다. 디폴트 메서드는 이름 앞에 default 키워드가, 정적 메서드는 static 키워드가 붙는다.
    • 둘 다 메서드 동작이 구현되지만, 정적 메서드는 오버라이딩 할 수 없다.
    • 인터페이스는 상수를 포함할 수 있으며, 선언하면 자동으로 public,static,final 키워드가 붙는다. 상수에 접근할 때는 인터페이스명을 사용한다.
    • 인터페이스는 접근 제한자로 public 과 default만 사용할 수 있다. 인터페이스에 선언한 모든 메서드는 자동으로 public 으로 설정된다.
      [접근_제한자] interface 인터페이스명 {
            자료형 변수명 = 값;
            반환형 메서드명(매개변수1,매개변수2,...) {};
            default 반환형 메서드명(매개변수1,매개변수2,...) {};
            static 반환형 메서드명(매개변수1,매개변수2,...) {};
      }
      
    • 구현한 클래스에서는 implements 키워드로 구현할 인터페이스를 명시한다.
      class 클래스명 implements 인터페이스명{}
      class 자식_클래스명 extends 부모_클래스명 implements 인터페이스1,인터페이스2 {}
      
  • 제네릭 (Generic)

    • 형에 따른 데이터 전송(타입선언)을 편하게 하기 위해서
    • 가변적인 타입의 선언을 위해서 (상속과 상관 없다)

© 2024. All rights reserved.
이 사이트는 포트폴리오 용도로 제작하였으며 상업적인 용도로 사용하지 않음을 밝힙니다.

Powered by Hydejack v9.2.1