life is egg

22.11.07 [Java & intellij] 본문

TIL

22.11.07 [Java & intellij]

삶은계란진재혁 2022. 11. 8. 00:14

강의 내용 적은것.. 책이 없기 때문에 ...이거라도 자세히 봐야한다 ... 스크롤 압박 예상됨...[추후..정리추가 예정..]

더보기
첫 인텔리제이 프로젝트

이거 기다림이 필요하다 강의는 8초만에 finished 되었지만 나는 5분이나 걸림... 첫설치라 그런거라고 믿고 싶을뿐...

 

변수와 상수

>변수는.. 재할당이 가능하다... 상수는 final이 자료형 앞에 붙는데 재할당이 불가능... final을 접근제어자라고함..!

 >>검색해본 결과 약간 다른듯하다... 상수는 static final을 통해,,,,그리고 규칙은 모두대문자 + "_" 사용임..

 >>그냥 final은...필드..? 필드는 무었이지.? 필드변수,,,를 들어본거 같은데;;;

c

자료형

자료형의 종류에는 기본자료형(Primitive Type)...참조자료형(Reference Type)

기본자료형에는 

숫자 / 문자/논리/바이트가 존재..

>숫자 shot /int/long    float/double    .. int와 double이 기본형... 기본형 이외의 다른 걸 쓰려면 숫자뒤에 F같은거 쓰셈

 >> 그런걸 형변환 이라고 한다근데 이것도..잡아 먹는 순서 가잇었는데 ;;;

  >>>L이나...F표현은 그렇게 붙여줘서 하고욥..

    >>>자동형변환..byte→short,char→int→long→float→double

       >>>>규칙 1.자료형의 크기가 큰방향으로 형변환. 규칙2 실수 자료형이 우선시됨..

    >>>자동형변환이 안될 상황은 명시적 형변환을 통해..탈출.. but 정보 손실감수해야함

 

크기 알고 싶다면..

Short.MAX_VALUE
Integer.MIN_VALUE

 

>문자 char ... '한글자들어감!'

>논리 boolean ..조건에 따라 true or false 반환

>바이트 기억할것은... 모든 표현은 바이트코드로 읽힌다는것....추가로 아스키코드...

 

참조자료형은 기본자료형 이외의 모든 자료형을 참조 자료형

>즉 자바의 인스턴스 객체를 가리키는것... 

>String이것... 참조자료형이다... 즉 String이라는 클래스가존재

 >>기원?을 알고 싶을때 intellij에서... [Ctrl + 클릭] ...기원을 볼 수 있다

 

배열

>왜 사용하냐... 동일한 자료형의 데이터를 연속 된 공간에 저장하기 위해... 효율적으로 쓰기위해..!

int [] 변수명1 = {10,20,30,40}  //선언과 동시에...초기화 (1)
int [] 변수명2 = new int[]  {10,20,30} //선언과 동시에 초기화 (2)

int [] 변수명3 = new int[5] // 크기를 지정
 변수명3[0] = 10;  //하나씩 값을 초기화..
 
 
 
변수명2.[변수명2.length-1]  //배열의 마지막값을 알고 싶을때..

 인덱스는..첫자리가 0번임..!

배열의 기본값은 0 과 null

 

연산자

대입연산자/관계연산자 / 논리연산자/비트연산자

 

관계연산자의 경우 [> / >= / ==/!= 이렇게 쓰임 ]

> 중요한건 true가 나올 조건 .. 왼쪽이  기준임...

 

논리연산자 [&& / || / !]

 

삼항연산자 [ (조건) ?  True일때 출력  :  False일때 출력 ]

 

조건문

if/ if ~ else if - else/ swich

 

swich의 경우 

 

swich(조건)

 case ~ : ~~

 case ~ : ~~

default  ~~~

추가로.. swich는 조건이 맞든 틀리든 한바퀴 순회 하기 때문에.. break로 빠져나와야함

중간 퀴즈

 

반복문

for / for-each / while / do while

 

요기도 break와 continue.. 적절하게 이용해야함

 

객체지향

class 와 인스턴스 의 관계는 붕어빵틀과 붕어빵 관계

 

class 내부에 메소드를 구현한다 

메소드는

>어떤 작업을 수행하는 코드를 하나로 묶어놓은것,, 프로그램 재사용성 , 구조화를 위해

>메소드의 이름 짓는 규칙이 있다... 동사시작 + camel case

 

int add (int x , int y) {} 이렇게 생성시...

int 은 return type

int x , int y은 파라미터라고한다.=매개변수

메소드와 클래스 인스턴스의 개념을 이해해보자..!

생성자

인스턴스의 초기화를 위한 메소드임

생성자의 이름은 클래스의 이름과 동일...

생성자는 값을 반환하지 않고(return X) , 반환형도 표시하지 않는다(void X)

 

생성자를 제시 안하면 컴파일러가 디폴트 생성자를 넣어줌.. 착한 컴파일러...

 

생성자를 이해해보자..!

상속

  • 부모클래스에서 정의된 필드와 메소드를 물려받음
  • 새로운 필드와 메소드를 추가할 수 있음
  • 부모클래스에서 받은 메소드 수정가능 (오버라이딩... 어노테이션 해주는거 추천)
  • 상속은 오직 하나의 클래스에서만 가능

 

오버로딩

한클래스내에서 동일한 이름의 메소드를 여러개 가지는것...

동일 자료형의 리턴타입이 다른경우는 오버로딩이 아님!

오버로딩이다

 

오버라이딩

가림막이라 생각하자

 

오버라이딩의 경우 자료형(?)을 Animal.로,,, 지칭하고 있어도...

Dog 인스턴트라는녀석이 이미 가려버렸기때문에  Dog의 메소드가 적용된다..!

그림설명은 열헐자바에서 본내용...기억을 더듬더듬

 

 

접근수준제어자

멤버 변수/함수 혹은 클래스에 사용되어 외부에서의 접근을 제한하는 역할

private - default - protected - public

private : 같은 클래스내에서.... 

>접근수준 제어자를 선언 안하면 패키지private라는데 이게 default랑 다른 게뭐지;;

default : 같은 패키지

protected : 같은패키지 + 다른패키지 자손클래스

public : 제한없음

접근수준지시자를 유의하면서 봅시다 (1)

 

import 선언

같은패키지가아닌 다른 패키지의 클래스를 참조할 때 선언!

>자바의 경우 클래스단위 인식이 아닌 패키지.클래스 단위로 인식 즉 ... 이름이 동일한 클래스는 많이 존재

 

접근수준제어자 왜?

캡슐화 가능하게... 객체지향프로그램을 위해

 

추상클래스

추상메소드를 선언할 수 있는 클래스.. 

>추상메소드...설계만 해놓고 구현을 안함... 즉 .. 자식클래스에서 만들어라

 

 [추상클래스+메소드]

abstract class Bird {
    private int x, y, z;

    void fly(int x, int y, int z){
        printLocation();
        System.out.println("이동합니다");
        this.x=x;
        this.y=y;
        if(flyable(z)){
            this.z=z;
        }
        else{
         System.out.println("그 높이로는 날 수 없습니다.");
        }
        printLocation();
    }
    abstract boolean flyable(int z);
    public void printLocation(){
        System.out.println("현재위치{"+x+" , "+y+" , "+z+"}");
    }
}

class  Pigeon extends Bird{
    @Override
    boolean flyable(int z) {
        return z<10000;
    }
}

class Peacock extends Bird{
    @Override
    boolean flyable(int z) {
        return false;
    }
}
public class Main {
    public static void main(String[] args) {
        Bird pigeon = new Pigeon();
        Bird peacock = new Peacock();
        System.out.println("---비둘기----");
        pigeon.fly(1,1,3);
        System.out.println("---공작새---");
        peacock.fly(1,1,3);
        System.out.println("---비둘기----");
        pigeon.fly(1,1,30000);
    }
}

인터페이스

객체의 특정행동의 특징을 정의

구현하는 클래스는 인터페이스의 모든 메소드를 구현해야함...

인터페이스는 필드가 없다

다중 구현 가능...

 

 

 [인터페이스]

interface Flyable{
    void fly(int x, int y, int z);

}

class Pigeon implements Flyable{
    private int x,y,z;
    @Override
    public void fly(int x, int y, int z) {
        printLocation();
        System.out.println("날아갑니다.");
        this.x=x;
        this.y=y;
        this.z=z;
        printLocation();
    }
    public void printLocation(){
        System.out.println("현재위치{"+x+" , "+y+" , "+z+"}");
    }
}

public class Main {
    public static void main(String[] args) {
        Flyable pigeon = new Pigeon();
        pigeon.fly(1,2,3);
    }
}

 

음...

오늘은 ..자바 기본 강의만 계속 들었다

미리 열혈자바 공부해논게 약간은 도움이 된듯하다..

 

무튼 

인텔리제이를 처음 깔고 난관이 발생했는데

 

그것은 바로...인텔리제이가 한글을 못알아 먹는것..!

 

그래서 오류가 떳었다...

 

검색해본 결과ㅏ.

https://eroul-ri.tistory.com/10

 

IntelliJ 인코딩 (Encoding) 설정, 한글깨짐 UTF-8

IntelliJ 사용시 한글 깨짐 중 VM, Tomcat, File 총 3가지 설정 방법을 정리합니다. 1. IntelliJ VM Encoding 설정 인텔리제이 실행 - 상단 가장 우측 Help Tab - Edit Custom VM Options... 선택 파일 가장 하단에 -Dfile.enco

eroul-ri.tistory.com

이글을 참고했지만

 

오류는 안뜨는데 

한글을 한자로 출력하고있다

 

답답한마음에 친구 찬스사용했다

 

친구가 준 tip들이다..!

못찾겠으면 Shift 두번..!

중국인으로 살아야겠다는 마음을 가지고

인강진도나 빼는 중에 

갑자기 한글로 잘나온다

짱짱맨 친구 감사하다.

 

 

가을이다 맨날 칙칙한 화면만 올리기 뭣해서.. 밖에 풍경좀 찍어보고싶었다..!

 

첫 눈을 기다리는 중 이라 할 수 있겠다~..

'TIL' 카테고리의 다른 글

22.11.09 [파이썬기본문법 2 & 알고리즘]  (0) 2022.11.10
22.11.08 [파이썬 기본 문법]  (0) 2022.11.08
22.11.04 [프로젝트 발표]  (0) 2022.11.04
22.11.03 [Restful 한 API..]  (0) 2022.11.03
22.11.02 [html두장 배포하기]  (0) 2022.11.02
Comments