자바 기초 - 1

mDev_97·2021년 12월 30일
0

Java

목록 보기
2/28

자바 기본 예제

public class Hello {
	public static int sum(int n, int m) {
    		return n+m;
	}
    
    	// 메인 메소드에서 실행
    	public static void main(String[] args) {
    	int i = 20;
    	int s;
        char a;
        
        s = sum(i, 10); // sum 메소드 호출
        a = '?';
        System.out.println(a); // '?' 문자열을 화면에 출력
        System.out.println("Hello"); // "Hello" 문자열 화면에 출력
        System.out.println(s); // 정수 s의 값을 화면에 출력
        }
}

실행결과

?
Hello
30

클래스 만들기

public class Hello {
}

• Hello 라는 이름의 클래스를 선언
class 키워드로 클래스 선언
public으로 선언하면 다른 클래스에서 접근이 가능하다.
• 클래스 코드는 { } 모두 작성해야 한다.

주석문

• // : 한 라인을 주석 처리
• / 내용 / : 여러 행을 주석 처리

main() 메소드

public static void main(String[] args){
}

• 자바 프로그램은 main()에서 실행을 시작한다.
• public static void로 선언한다.
• String[] args로 실행 인자를 전달받는다.

메소드

public static int sum(int n, int m) {
}

• 클래스 바깥에 작성할 수 없다.

메소드 호출

int i = 20;
s = sum(i, 10);

• sum() 메소드를 호출
• sum() 메소드 호출 시 변수 i의 값과 정수 10을 전달
• sum() 메소드의 n과 m에 각각 20, 10 값을 전달
• sum() 은 n과 m의 값을 더한 30을 리턴
• 변수 s는 정수 30을 전달받는다.

변수 선언

int i = 20;
char a;

• 변수 타입과 변수 이름을 선언
• 메소드 내에서 선언된 변수는 지역 변수
-> 지역 변수는 메소드 실행이 끝나면 자동으로 소멸한다.

문장

int i = 20;
s = sum(i, 20);

• ;(세미콜론)으로 한 문장의 끝을 인식한다.

화면 출력

System.out.println("Hello"); // "Hello" 문자열을 화면에 출력

• 표준 출력 스트림에 메시지 출력
• 표준 출력 스트림 System.out의 println() 메소드를 호출
• println()은 여러 타입의 데이터를 출력할 수 있다.
• println()은 출력 한 후 다음 행으로 커서를 이동시킨다.

식별자

식별자란?

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

식별자의 원칙

• @, #, ! 등과 같은 특수 문자, 공백 또는 탭은 식별자로 사용할 수 없다.

_ , $는 사용 가능한다.

유니코드 문자한글이 사용 가능하다.

• 자바 언어의 키워드는 식별자로 사용 불가능하다.

• 식별자의 첫 번째 문자에 숫자를 사용할 수 없다.

• 일반적으로 _ , $은 식별자의 첫 번째 문자로 사용하지 않는다.(사용할 수는 있다.)

불린 리터럴(true,false)와 널 리터럴(null )은 식별자로 사용할 수 없다.

• 길이 제한은 없다.

대소문자를 구분한다.

자바의 데이터 타입

기본 타입 : 8개

boolean (1비트, true 또는 false)
char (2바이트, Unicode)
byte (1바이트, -128 ~ 127)
short (2바이트, -32768 ~ 32767)
int (4바이트, -2312^{31} ~ 23112^{31}-1)
long (8바이트, -2632^{63} ~ 26312^{63}-1)
float (4바이트, -3.4E38 ~ 3.4E38)
double (8바이트, -1.7E308 ~ 1.7E308)

레퍼런스 타입 : 1개

• 3가지의 용도
배열(array)에 대한 레퍼런스 (배열에 대한 주소)
클래스(class)에 대한 레퍼런스 (객체에 대한 주소)
인터페이스(interface)에 대한 레퍼런스

문자열

문자열은 기본 타입이 아니다.
String 클래스로 문자열을 표현

String toolName = "JDK";
toolName + 1.8  // "JDK1.8"
"(" + 3 + "," + 5 + ")" // "(3, 5)"
System.out.println(toolName + "이 출시됨"); //"JDK1.8이 출시됨" 출력

변수와 선언

변수

• 프로그램 실행 중에 값을 임시로 저장하기 위한 공간
• 변수의 값은 프로그램 실행 중 변경될 수 있다.
• 데이터 타입에서 정한 크기의 메모리를 할당
변수 선언 : 변수의 타입 다음에 변수 이름을 적어 변수를 선언

int price; // 데이터타입 변수이름
char c1, c2, c3; // 3개의 변수를 한 번에 선언
char c1 = 'a', c2 = 'b', c3 = 'c'; // 선언과 동시에 초기값을 지정
double weight = 75.78; // 선언과 동시에 초기값을 지정

= : 대입 연산자

리터럴과 정수 리터럴

리터럴(literal)

• 프로그램에서 직접 표현한 값
• 정수, 실수, 문자, 논리, 문자열 리터릴이 있다.
ex) 78, 12.345, '@', true, "hi" 등

정수 리터럴

• 10진수, 8진수, 16진수, 2진수 리터럴

24 (10진수 리터럴)
028 (8진수, 0으로 시작, 10진수 24)
0x18 (16진수, 0x로 시작, 10진수 24)
0b11000 (2진수, 0b로 시작, 10진수 24)

• 정수 리터럴은 int 형으로 컴파일
• long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙여 표기
ex) long lo = 24L;

실수 리터럴

• 지수 형태 또는 소수점 형태로 표현한 실수

24.0
.2455
0.2455
2455E-4

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

double e = 0.2455;
double d = 2455E-4; // 0.2455와 동일함

• 실수 뒤에 f(float) 또는 d(double)을 붙이기도 한다.

float f = 0.2455f;
double d = .2455D;

문자 리터럴

• 단일 인용부호(' ')로 문자를 표현한다.

char a = 'A';
char g = '자';
char c = \u0041; // 문자 'A'의 유니코드 값을 사용

• 특수 문자 리터럴은 백슬래시()로 시작한다.

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

논리 리터럴(boolean 타입)

• 논리 리터럴은 true, false 2개만 존재한다.
• boolean 타입 변수에 치환하거나 조건문에 사용된다.

boolean a = false;
boolean b = true;
boolean c = 24 > 10; // 참이므로 true
boolean = 24; // 24는 정수형이므로 타입 불일치 오류 발생

whlie(true){
// 무한 루프를 생성할 때도 사용
}

null(널) 리터럴

• 래퍼런스에 대입하여 사용

String str = null;
double d = null; // 오류, 기본 타입에는 사용 불가능하다.

문자열 리터럴(String 리터럴)

• 이중 인용부호를 사용하여 표현
• 문자열 리터럴은 자동으로 String 객체로 처리한다.

String str = "Java";

var 키워드

• var 키워드를 사용하여 변수 타입을 생략
• Java 10부터 도입된 키워드
• 지역 변수 선언에서만 사용한다.
• 변수 타입 선언을 생략 : 컴파일러가 스스로 변수 타입을 추론한다.

var number = 245;  // int 타입으로 자동 결정
var str = "Java";  // String 타입으로 자동 결정
var pi = 3.14;     // double 타입으로 자동 결정
var hello = new Hello();  // Hello 타입으로 자동 결정 (처음 코드 참조)

var str; // 컴파일 오류 발생
// 초기값을 설정하지 않으면 컴파일러가 변수의 타입을 추론할 수 없다.

상수의 선언

• final 키워드를 사용
• 선언 시에 반드시 초기값을 설정하여야 한다.
• 프로그램 실행 중 값을 변경할 수 없다.

final double pi = 3.14;

자동 타입 변환

• 메모리가 작은 타입은 큰 타입으로 자동 변환될 수 있다.
-> 컴파일러가 수행한다.
• 치환문(=) 또는 수식 내에서 타입이 일치하지 않을 경우 발생

double d = 2455; // 2455는 int타입, double 타입으로 자동변환

double circle = 3.14 * 15 * 15;
// 실수 연산을 수행하기 위해 15를 15.0으로 자동 변환한다.
// 피연산자 3.14가 실수이기 때문이다.

자동 타입 변환이 안 되는 경우 : 큰 타입을 작은 타입으로 변환할 경우

강제 타입 변환

double d = 3.14;
int n = d; // 컴파일 오류 발생. double 타입이 int 타입으로 자동 변환x

강제 타입 변환
-> 개발자가 필요 시에 강제로 변수의 타입을 변환
-> ( ) 안에 변환하려는 타입을 지정한다.

• 강제 타입 변환 시에는 값 손실의 우려가 있다.

double d = 3.14;
int n = (int)d; // n은 3으로 저장된다. 0.14 손실 발생
profile
안녕하세요. 백엔드, 클라우드, 인프라에 관심과 열정이 있는 김문성입니다. 😊

0개의 댓글

관련 채용 정보