본문 바로가기

Language/JAVA

[JAVA] 기본 예제, 데이터 타입, 식별자, 상수, 변수

예제

package chap02;

//예제 2-1 : Hello, 자바 프로그램의 기본 구조

public class Hello { //Hello 클래스 선언

	public static int sum(int n, int m) { //정수 n과 m을 매개변수로 하는 메서드 sum선언
		//public=공개 static=정적 메서드 의미
		return n+m;
	}
	
	//main() 메소드 선언
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int i=20; //정수형 변수 i선언과 동시에 정수 20의 값 저장
		int s; //정수형 변수 s 선언
		char a; //문자열 a변수 선언
		
		s=sum(i,10); //sum()메소드 호출, 앞서 선언된 i=20을 통해 20+10=30의 값 출력
		a='?'; //a변수에 '?'문자열 저장
		System.out.println(a); //문자 '?'화면 출력
		System.out.println("Hello"); // Hello 문자열 화면 출력 
		System.out.println(s);//정수 s 값 화면 출력
	}

}

 

예제 풀이

 

클래스 

public class Hello { //Hello 클래스 선언

	
	}

Hello 이름의 클래스를 선언합니다.
여기서 public은 접근 제어자중 하나로, 다른 패키지에서도 접근을 가능하게 해주는 권한을 부여합니다.

 

주석문

// 한 줄주석
/* 여러 행 주석*/​

 

main() 메서드

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

java의 main()메서드이며, main까지만 입력 후 spaceBar를 누르면 자동완성 기능이 있습니다.
특징은 (1)public static void로 선언하며, (2)String[] args로 실행 인자를 전달 받습니다.

일반메서드

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

해당 메서드는 C/C++에서의 함수를 메소드로 지칭합니다.
메서드는 클래스 바깥에서 작성할 수 없으며, 구조를 보시면 항상 클래스 안쪽에 메서드를 작성합니다.

 

메서드 호출

s=sum(i,10);

sum()메서드를 호출하는 것
sum() 메서드를 호출할 시 변수 i의 값과 정수 10의 값을 전달
sum() 메서드의 n=20, m=10형태로 전달 및 저장
리턴값인 10+20=30 최종적으로 값 30 리턴해줍니다.

따라서 sum(i,10)의 결과는 30이므로 변수 s에는 30을 저장합니다.

변수 선언

int i=20;
char a;

정수형 변수 i 선언과 동시에 정수 20의 값을 저장합니다.
문자열 a변수를 선언합니다.

*메소드 내에서 선언된 변수는 지역변수, 메소드 외에서 선언된 변수는 전역변수로 부릅니다.
위 변수는 지역변수라 볼 수 있습니다.

화면 출력

System.out.println("Hello");

syso까지 입력 후 Ctrl+spaceBar를 누를 시 자동완성기능이 적용됩니다.
java에서도 printf, println, print 등 다양한 형태의 출력함수가 있는데, println()은 여러 타입의 데이터를 출력할 수 있으며, 출력 후 다음 행으로 커서가 이동합니다.

 

 

식별자

식별자: 클래스, 변수, 상수, 메소드 등에 붙이는 이름을 말합니다.

원칙:
1)'@', '#', '!'와 같은 특수 문자, 공백 또는 탭은 식별자로 사용x , but '_' , '$'은 사용o
2)유티코드 문자 사용 o, 한글 사용 o
3)자바 언어의 키워드 식별자로 사용 x
4)식별자의 첫 번째 문자로 숫자 사용 x
5)불린 리터럴(true, false)과 널 리터럴(null)은 식별자로 사용x
6)길이 제한 x

 

대소문자 구별

int barChart;
int barchart;
->서로 다른 식별자로 선언되었습니다.

 

자바의 데이터 타입

boolean 논리형
char 문자형
byte 정수형
short
int
long
float 실수형
double

 

레퍼런스 타입

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

 

특징

기본 타입의 크기는 CPU 혹은 운영체제에 따라 변하지 않습니다.

 

 

문자열

문자열은 기본 타입이 아닙니다(위 표에서는 문자열이 포함되지 않습니다.)
문자열은 String클래스로 표현합니다.

String toolName="JDK";

ex) "JDK", "한글", "계속하세요"

문자열+정수형 -> 문자열
문자열+ 연산 -> 문자열

입력 출력결과
toolName + 1.8 JDK1.8
"(" + 3 + "," + 5 + ")" (3,5)
System.out.println(toolName + "이 출시됨"); JDK1.8이 출시됨

 

 

변수와 선언

변수 : 프로그램 실행 중에 값을 임시로 저장하기 위한 공간이며, 변수를 사용하기 전 미리 선언합니다.

변수 선언
데이터 타입에서 정한 크기의 메모리 할당합니다.

 

리터럴과 정수 리터럴

리터럴(literal)
프로그램에서 직접 표현한 값이며, 종류는 정수, 실수, 문자, 논리, 문자열 리터럴 등이 있습니다.

정수 리터럴

15 10진수 15
015 0으로 시작하면 8진수, 십진수로 13
0x15 0x로 시작하면 16진수, 십진수로 21
0b0101 0b로 시작하면 2진수, 십진수로 5

정수 리터럴은 int형으로 컴파일하며, long 타입 리터럴은 숫자 뒤에 L 또는 l을 붙여 표시해야 합니다.
ex) long g = 24L

 

실수 리터럴

실수 타입 리터럴은 double타입으로 컴파일합니다.

double d=0.1234;
double e=1234E-4;

숫자 뒤에 f(float)나 d(double)을 명시적으로 붙이기도 합니다.

float f=0.1234f;
double w=.1234D; //.1234D와 .1234는 동일

 

문자 리터럴
단일 인용부호(' ')로 문자 표현
'a', 'W, '가', '*', '3', '7', '글'

char a='W';
char b='글';
char c=\uae00; //'글'의 유니코드 값(ae00) 사용

\u 다음에 4자리 16진수로, 2 바이트의 유니코드(Unicode)

특수문자 리터럴은 백슬래시(\)로 시작합니다.

특수문자 리터럴 의미 특수문자 리터럴 의미
\b 백스페이스(backspace) \r 캐리지 리턴(carriagae return)
\t 탭(tab) \" 이중 인용부호(double quote)
\n 라인피드(line feed) \ 단일 인용부호(single quote)
\f 폼피드(form feed) \\ 백슬래시(backslash)

 

 

논리 타입 리터럴

논리 값 표시 
1)true or false
2)boolean 타입 변수에 치환하거나 조건문에 이용합니다.

 

+기본 타입 이외 리터럴

null 리터럴 : 레퍼런스에 대입 사용합니다.

int n=null; //기본 타입에 사용 불가
String str = null;

 

문자열 리터럴(스트링 리터럴) : 이중 인용부호로 묶어서 표현합니다.
ex)"Good", "Morning", "자바", "3.19", "26", "a"
문자열 리터럴은 String 객체로 자동 처리됩니다.

String str= "Good";

 

상수

상수 선언
1)final 키워드를 사용합니다.
2)선언 시 초깃값을 지정합니다.
3)실행 중 값 변경은 불가합니다.

final int LENGTH=20;

static final double PI = 3.141592; //static으로 선언하는 것이 바람직

 

var키워드

기존의 변수 선언 방식: 변수의 타입을 반드시 지정해야 합니다.

var 키워드
타입을 생략하고 변수를 선언 가능합니다.
컴파일러가 추론하여 변수 타입을 결정해줍니다.

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>타입으로 결정