본문 바로가기
2022/JAVA 자바

[JAVA] 자바 정리

by Or0i쿠 2022. 9. 15.

01.자바프로그래밍

#자바 가상기계(JVM)

바이트 코드를 해석하고, 실행할 수 있는 가상의 운영체제 역할을 수행

JVM은 OS와 자바프로그램의 중간다리 역할 수행

자바 가상기계 자체는 각 플랫폼에 맞게 포팅되야 하므로 플랫폼 종속적

자바 가상기계는 서로 다른 플랫폼에서 동일한 자바 실행환경을 제공

 

02.변수와 자료형

# 변수의 이름 제약사항

변수의 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있고, 특수문자 중에도‘$, _’ 만

사용할 수 있다.

변수 이름은 숫자로 시작할 수 없다.

자바에서 이미 사용 중인 예약어는 사용할 수 없다.

# print 출력문

*print = System.out.print();

*println = System.out.println();

*printf = System.out.printf();

- print

단순출력만 해주므로 추가기능을 하지 않음

- println

Enter 기능이 포함된 출력문 

- printf

서식을 지정하여 출력함

* 서식

자료형바이트 크기범위

정수자료형byte1-2^7 ~ 2^7-1

short2-2^15 ~ 2^15-1

int4-2^31 ~ 2^31-1

long8-2^63 ~ 2^63-1

문자자료형float4-2^31 ~ 2^31-1

double8-2^63 ~ 2^63-1

실수자료형char2

논리자료형boolean1ture, false

# 변수

 

# 변수의 이름 지을 때 규칙

변수의 이름은 영문자 (대문자, 소문자)나 숫자를 사용할 수 있고 (단 변수명이 숫자로 시작해선 안됨)

자바에서 이미 사용 중인 예약어(키워드)는 사용할 수 없다.

특수문자는 $, _ 만 사용 가능

# 변수명 잘못 사용된 예

- int char; // 예약어(키워드)를 변수명으로 사용 못함.

- int 1bc // 숫자로 시작 할 수 없음

- int b#@ // 특수문자는 $, _ 만 가능

# 자료형​

- int형 : 정수 사용 시 가장 많이 사용됨(자바에서 정수형은 디폴트가 int 이다.) ※default : 시스템이 미리 정해진 값이나 조건을 자동으로 적용시키는 것

- long형 : java에서 정수를 표현하는 가장 큰 단위

Long형에 int 자료형 최대범위 초과 수를 long에 대입할 때 숫자 뒤에 L 또는 l 를 붙인다.

예시) long num=2000; long num=12345678900L;

 

int 자료형은 값은 1,5,10,12 등의 정수만 가능하다.

String 자료형의 값은 "z" "korea" 등의 문자나 문자열만 가능하다.

 

#정수 자료형

자료형이 다른 정수끼리 더할 때?

- 프로그램이 실행되어 정수값을 연산할 때 4바이트를 기본단위로 사용.

- 두 수를 연산하기 전 두 정수는 int형으로 저장됨.

- int형: 정수를 사용할 때가 가장 많이 사용.

- long형: 자바에서 정수를 표현하는 가장 큰 단위

long num=12345678900L;

long num=1000;

- ‘Long‘형에 ‘int‘자료형 최대범위 초과수를 long에 대입할 때 숫자 뒤에 ‘L‘이나 ‘l‘를붙인다

03.자바의 여러가지 연산자

# 연산자 : 연산에 사용하는 기호 

 

# 기본 연산자

- 대입 연산자

*왼쪽 변수 = 오른쪽 변수 (또는 식)

부호 연산자

*+,-연산자로 이항연산자, 단항연상자로 사용

산술 연산자

*사칙 연산에서 사용하는 연산자 (+ - * / %)

증감 연산자

* 단항 연산자로 연산자 앞,뒤에 사용하여 1만큼 늘리거나 줄인다.

관계 연산자

*항이 두 개이며, 두 개의 항 중에 어느 것이 더 큰지 작은지 같은지 여부를 검사

논리 연산자

*두가지 명제 가 모두 참이면 논리 곱 = 참 하나만 참이면 논리 함 = 참 

복합 대입 연산자

*대입 연산자와 다른 연산자를 조합해 하나의 연산자처럼 사용하는 연산자

조건 연산자

*세개의 항을 이용해 조건연산이 참인 경우와 거짓인 경우에 다른 결과값이 나온다.

#비트 연산자

-비트논리 연산자 : 비트 단위로 & | ^ ~ 연산이 이루어짐

*& = 두 개의 비트값이 모두 참일 때 1

*| = “ 하나라도 1이면 1

*^ = 연산자가 =면 0 ≠ 1

*~ = 0을 1로 1을 0으로

 

04.제어흐름 이해허기

 

# 조건문

- if : 조건식에는 true 또는 false 값을 나타내는 연산식이나 boolean 변수가 올 수 있다.

if문은 조건식의 결과에 따라 블록 실행 여부가 결정된다.

*if / else if → 각 조건식이 true이면 각 if와 else if의 블록을 실행한다.

*else → 조건식이 false이면 else 블록이 실행

*구조 

if (조건) { 실행할코드 } if else (조건) { 실행할코드 } else { 위의 모든 조건이 거짓일 때 실행할코드 }

- switch-case : 입력변수의 값과 일치하는 case 입력값(입력값1, 입력값2, ...)이 있다면 해당 case문에 속한 문장들이 실행된다. case문마다 break 라는 문장이 있는데 해당 case문을 실행 한 뒤 switch문을 빠져나가기 위한 것이다. 

*구조

switch(입력변수) { case 입력값1: ... break; case 입력값2: ... break; default: ... break; }

# 반복문

- while : 조건에 따라 반복할지 말지 결정할 때 사용

* 조건식이 트루면 반복 펄스면 반복응 멈춘다.

*구조 

while (조건) { 반복할 실행문; }

- for : 특정한 코드를 반복하기 위해 사용

* for 뒤에 소괄호 안에, 초기화값; 조건식; 증감식 순서대로 입력핝다.

*구조

 

05. 클래스와 객체

# 클래스

객체의 속성과 기능을 코드로 구현한 것

클래스 이름은 대문자로 시작 (개발자들 사이의 규칙, 코딩 컨벤션)

패키지 이름은 소문자

멤버변수 (클래스 속성을 구현)

!구조접근제한자

# 메서드 : 클래스 기능을 구현

# 패키지 : 클래스 파일의 묶음

- StudentView클래스

- 전체이름 : domain.student.view.StudentView

- 같은 이름의 클래스라도 다른 패키지에 속해 있으면 서로 연관이 없음

# 카멜 케이스 명명 규칙(Camel Case naming conventions)

- 이름에 여러 단어들을 혼합하여 사용한다면 첫 번째 단어는 소문자, 두 번째 단어부터는 대문자로 시작 예) luckySeven, myHouse, firstName 등

- 이름을 지을 때 숫자를 먼저 입력 불가

- 대소문자 구분

# 장점

- 가독성을 높일 수 있다.

- 다른 개발자들이 이해하기 쉬움

- 유지보수

 

권장사항, 회사 내부규칙 우선

 

06.클래스와 객체2

# this 참조변수와 생성자

this 참조변수 : 인스턴스가 바로 자신을 참조하는데 사용하는 변수

→ 객체 내부에 있는 인스턴스 멤버에 접근 하기위한 변수

클래스 내에 변수가 많아지는 것을 막기위해 사용

07.배열과 ArrayList

# 배열 : 같은 타입의 여러 변수를 하나의 묶음 으로 다루는 것

* 인덱스(index)는 0부터 시작

*구조

# 다차원 배열 : 배열이 여러개로 되어 있는 형태

*구조

# ArrayList : 배열에서 많은 조작이 필요할 때유용하게 사용되는 클래스

* Generic을 사용해 자료형을 선언 (Generic = 자료형을 일반화시키는 것 !구조

* 배열은 항상 한 가지의 타입만을 요소로 가질 수 있지만, 상속을 통해 상속하는 모든 것을 요소로 넣을 수 있다. !구조

 

08.상속과 다형성

# 상속 : 하나의 클래스가 또 다른 클래스를 선택해 그 클래스의 정보들을 물려받는 것

*상속받을 때는 ’접근 제어자‘가 private인 것은 불가능하고, 패키지가 다를 때는 default인 경우에도 상속이 불가능함

* 다중상속이 불가능 → 여러 ’(자식)클래스‘가 하나의 ’(부모)클래스‘로부터 정보를 물려받는 것은 가능하지만, 한 ’(자식)클래스‘가 여러 ’(부모)클래스‘로부터 정보를 물려받는 것은 불가능

*구조

# 메서드 오버라이딩

# 다형성 ; 하나의 클래스가 여러 가지 모습을 할 수 있도록 만드는 것

* 상속이나 인터페이스라는 개념을 이용하는 이유는 바로 다형성을 구현하기 위해서임

# 다운 캐스트 & instanceof

*다운캐스트 = 하위 클래스로 형 변환하는 과정

*instanceof = 다운캐스팅을 하기 전에 상위클래스로 형 변환된 인스턴스의 원래 자료형을 확인하는 예약어로 오류를 막기위해 사용

09.추상클래스

# 추상클래스 : 여러 클래스의 내용 중 공통적인 부분만을 추출해 만들어진 클래스

*추상 클래스에는 하나 이상의 추상 메소드를 포함. 추상 메소드가 없어도 ㄱㅊ

* 선언만 있고, 본체는 없는 메소드 

* 추상 클래스를 상속받는 클래스가 선언만 되어 있는 메소드의 내용을 채운다.

*추상 클래스와 추상 메소드를 선언할 때는 abstract을 쓴다 

*각 클래스들에 존재하는 공통된 필드와 메소드를 뽑아내어 이름을 통일하기 위해 사용

# 템플릿 메서드 : 로직 흐름을 정의하는 역할

# final 예약어 : 더 이상 수정핫 수 없다

* 변수 = 상수 / 메서드 = 하위클래스에서 재정의할 수 없음 / 클래스 = 상속할 수 없음

 

10.인터페이스

#인터페이스 란?(interface)

• 모든 메서드가 추상 메서드( abstract method)로 이루어진 클래스

• 형식적인 선언만 있고 구현은 없음

!구조

• 인터페이스에 선언된 모든 메서드는 public abstract 로 추상 메서드

• 인터페이스에 선언된 모든 변수는 public static final 로 상수

'2022 > JAVA 자바' 카테고리의 다른 글

java  (0) 2023.04.27
[JAVA]SWING 예제  (0) 2022.09.15
[JAVA] 기초  (0) 2022.04.09