[JAVA] 자바 기본 구조

gogori6565·2022년 9월 17일
0

JAVA

목록 보기
1/11

📌 자바의 기본 구조

클래스

//Hello 라는 이름의 클래스 선언
public calss Hello {
}
  • class 키워드로 클래스 선언
  • public 으로 선언 시 다른 클래스에서 접근 가능

주석

  • // 또는 /**/

메소드

  • C/C++ 에서의 함수를 메소드로 지칭
public static int sum(int n, int m){
...
}
  • 클래스 바깥에 작성 불가
    즉, 위에서 작성한 public class Hello{} 의 { } 안에 메소드들을 작성해야함
  • main() 도 메소드임

main() 메소드

  • 자바는 main()에서 실행 시작
public static void main(String[] args){
}
  • public static void 로 선언
  • String[] args 로 실행 인자를 전달 받음

메소드 호출

  • C/C++ 에서의 함수 호출 처럼 호출하면 됨
    ex) sum(10,20)

변수 선언

  • 변수 타입과 변수 이름 선언
    ex) int i=20; //C와 동일
  • 메소드 내에서 선언된 변수는 지역 변수
    지역 변수는 메소드 실행이 끝날 시 소멸
  • 세미콜론(;)으로 문장을 끝내야함

화면 출력

  • 표준 출력 스트림에 메시지 출력
System.out.println("Hello");
  • 표준 출력 스트림 System.outprintln() 메소드를 호출한 거임
  • println() 은 여러 타입의 데이터 출력 가능, 출력 후 다음 행으로 커서 이동

식별자

  • 클래스, 변수, 상수, 메소드 등에 붙이는 이름

식별자 원칙

  • 특수 문자, 공백, 탭은 식별자 사용 불가. 그러나, _ $ 는 사용 가능
  • 유니코드 문자 가능, 한글 불가
  • 자바 언어의 키워드 불가
  • 첫 글자 숫자 불가
  • boolean 리터럴 (true, false) 와 널 리터럴 (Null) 은 불가
  • 길이 제한 X
  • 대소문자 구별
    ex) Test 와 test 는 별개의 식별자

📌 자바 데이터 타입

자바의 변수형은 프리미티브 타입레퍼런스 타입으로 나뉜다.

프리미티브 타입

: 값을 변수에 대입하여 사용하는 형태

  • 특징 : 기본 타입의 크기가 정해져 있음 / CPU나 운영체제에 따라 변하지 않음
  1. boolean - 1 bit
  2. char - 2 byte
  3. byte - 1 byte
  4. short - 2 byte
  5. int - 4 byte
  6. long - 8 byte
  7. float - 4 byte
  8. double - 8 byte

레퍼런스 타입

: 값을 변수에 대입하지만 변수는 참조값(메모리상)을 가지고있지 값(프리미티브타입 값들로 이루어진)을 직접 들고있지는 않는 것이 특징

  1. 배열(array)에 대한 레퍼런스
  2. 클래스(class)에 대한 레퍼런스
  3. 인터페이스(interface)에 대한 레퍼런스

📌 문자열

문자열은 기본 타입이 아니다

  • String 클래스로 문자열을 표현

    • 문자열 리터럴 - "JDK" , "한글"
    String toolName = "JDK"
    • 문자열이 섞인 + 연산 -> 문자열 연결
    toolName + 1.8  //"JDK1.8"
    "(" + 3 + "," + 5 + ")"  //"(3,5)"
    System.out.println(toolName + "이 출시됨");  //"JDK1.8이 출시됨" 출력

📌 리터럴

리터럴(literal)

: 프로그램에서 직접 표현한 값

  • 정수, 실수, 문자, 논리, 문자열 리터럴 있음
    ex) 12, 23.123, '%', true, "hello"

정수 리터럴

  • 10, 8, 16, 2진수 리터럴
15 -> 10진수 리터럴 15
015 -> 0으로 시작하면 8진수. 십진수로 13
0x15 -> 0x로 시작하면 16진수. 십진수로 21
0b0101 -> 0b로 시작하면 2진수. 십진수로 5
  • 정수 리터럴은 int 형으로 컴파일
  • long 타입 리터럴은 숫자 뒤에 L 또는 l 을 붙여 표시
    ex) long a = 24L;

실수 리터럴

  • 소수점 형태나 지수 형태로 표현한 실수
    ex) 12. 12.0 .1234 0.1234 1234E-4

  • 실수 타입 리터럴은 double 로 컴파일

  • 숫자 뒤에 f(float) 나 d(double) 을 명시적으로 붙이기도 함

float f = 0.1234f;
double d = .1234D; //단, .1234D 와 .1234 는 동일하게 취급

문자 리터럴

  • 단일 인용부호('')로 문자 표현
char a = 'A';
char b = '글';
char c = \u0041; // 문자 'A'의 유니코드 값(0041) 사용
char d = \uae00; // 문자 '글'의 유니코드 값(ae00) 사용

\u 다음에 4자리 16진수(2byte의 유니코드)로 나타내기도 함

특수문자 리터럴

\b 백스페이스
\t
\n 라인피드 (line feed)
\f 폼피트 (form feed)
\r 캐리지 리턴 (carriage return)
\" 이중 인용부호 (double quote)
\' 단일 인용부호 (single quote)
\\ 백슬래시 (backslash)

논리 리터럴 / boolean 타입

  • true / false
  • boolean 타입 변수에 치환하거나 조건문에서 사용
boolean a = true;
boolean b = 10 > 0; // 10>0가 참이므로 b 값은 true
boolean c = 1; // 타입 불일치 오류. C/C++와 달리 자바에서 1,0을 참, 거짓으로 사용 불가

C/C++와 달리 자바에서 1,0을 참, 거짓으로 사용 불가

그 외 리터럴

Null 리터럴 : 레퍼런스에 대입 사용

int n = null; //불가능!! 기본 타입에 사용 불가
string str = null; //가능~

문자열 리터럴 (스트링 리터럴)

  • 이중 인용부호로 묶어 표현
    ex) "Hello World", "자바"
  • 문자열 리터럴은 String 객체로 자동 처리함

tip1. JDK7 부터 숫자에 _ 허용함. -> 가독성을 높임

  • 숫자 리터럴의 아무 위치에나 언더스코어 _ 를 허용함
  • 컴파일러는 리터럴에서 _ 를 빼고 처리
int price = 20_100; // 20100과 동일
long cardNumber = 1234_5678_1357_9998L; // 1234567813579998L와 같음
long controlBits = 0b10110100_01011011_10110011_111110000;
long maxLong = 0x7fff_ffff_ffff_ffffL;
int age = 2______5; // 25와 동일

허용되지 않는 4가지 경우

int x = 15_; // 오류. 리터럴 끝에 사용할 수 없다.
double pi = 3_.14; // 오류. 소수점(.) 앞뒤에 사용할 수 없다.
long idNum = 981231_1234567_L; // 오류. _L(_F) 앞에 사용할 수 없다.
int y = 0_x15; // 오류. 0x 중간이나 끝에 사용할 수 없다. 0x_15(오류)

tip2. var 키워드로 변수 타입 생략

  • var 와 동일한 기능으로 C++의 auto 가 있다
  • 지역 변수의 선언에만 사용 가능
  • 변수 타입 선언 생략 -> 컴파일러가 타입 추론
var price = 200; // price는 int 타입으로 결정
var name = "kitae"; // name은 String 타입으로 결정
var pi = 3.14; // pi는 double 타입으로 결정
var point = new Point(); // point는 Point 타입으로 결정
var v = new Vector<Integer>(); // v는 Vector<integer> 타입으로 결정
  • 단, 변수 선언문에는 반드시 초기값을 지정해야함
var name; //컴파일 오류, 타입 추론 불가

📌 상수

  • final 키워드 사용
  • 선언 시 초기값 지정
  • 실행 중 값 변경 불가
final double PI = 3.14;
profile
p(´∇`)q

0개의 댓글