예제
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>타입으로 결정
'Language > JAVA' 카테고리의 다른 글
[JAVA] 명품 자바 에센셜 예제 3장 (0) | 2021.12.17 |
---|---|
[JAVA]명품 자바 에센셜 예제 2장 (0) | 2021.12.13 |
[JAVA]MultipartRequest cannot be resoloved (0) | 2021.12.08 |
[JAVA]String cannot be resolved to a type (0) | 2021.11.30 |
[Java] 기본 프로젝트 생성, 간단한 출력 (0) | 2021.09.14 |