자바의 구성요소
프로젝트 → 패키지 → 클래스 → 메소드 → 소스코드
* 클래스는 앞글자가 대문자이다.
* 메소드는 이름뒤에 소괄호가 온다.
출력 메소드
의미로는 괄호 안에 있는 값을 콘솔 창에 출력하며, 사용목적은 개발자가 오류를 해결하기 위해 값을 확인할 때 사용한다.
print() : 전달된 값을 출력하고 줄바꿈이 안 된다.
println() : 전달된 값을 출력하고 줄바꿈이 된다.
printf() : 형식(format) 에 맞는 값을 출력하며, 줄바꿈이 안 된다. → 따옴표(" ") 안에 \n을 입력하면 줄바꿈을 할 수 있다.
public class Hellojava {
public static void main(String[] args) {
// Hello JAVA;
System.out.println("Hello JAVA");
}
}
제어문자(Escape string)
반드시 따옴표 안에서 작성하며, 문자열 안에서 사용되며 미리 예약된 특수한 기능을 하는 문자이다.
역슬래시(\)를 사용한다.
ex)
\n : 줄바꿈, 개행문자
\t : 일정 간격을 띄어줌(tab)
\" : 문자열 안에 큰 따옴표를 표현
\' : 문자열 안에 작은 따옴표를 표현
\\ : 문자열 안에 역슬래시를 표현
변수 및 자료형
변수(variable) : 값을 저장하는 저장공간이며, 값을 재사용하기 위해 사용한다.
변수의 특징
1. 변수는 오직 하나의 자료형(data type)만 저장할 수 있다.(변수에는 자료형이 존재)
2. 변수는 오직 하나의 값만 저장할 수 있다.
주소값 : 메모리(RAM)에 저장공간이 할당되면 고유한 값인 주소값이 부여된다.
*중복이 없음
자료형(1byte = 8bit)
| 자료형 | type | byte | 값 |
| 정수형 | int(기본형) | 4 | 3, 1, 2,,, -17, -1 |
| long | 8 | 3L, 1L, 2L,,, -17L | |
| 실수형 | float | 4 | 3.0F, 1.25F,,, -12.15F |
| double(기본형) | 8 | 3.0, 5.5, 1.0,,, -17.0 | |
| 문자형 | char | 2 | 'a', 'b', '가', 'c',, |
| 논리형 | boolean | 1 | true, false(참, 거짓) |
| 문자열 | String | ?? | "abc", "가나다", "길동이",,, |
*문자 : 작은 따옴표로 감싸진 1개의 문자
*문자열 : 큰 따옴표로 감싸진 0개 이상의 문자
변수의 선언
1. 변수를 단순히 선언
자료형 변수명;
ex) int age;
2. 변수를 선언과 동시에 초기화
자료형 변수명 = 초기값;
ex) int age = 10;
3. 여러개의 변수를 선언하는 방법
자료형 변수명1, 변수명2, 변수명3,,,;
*변수 선언시 주의사항
같은 영역에서 같은 이름의 변수를 선언할 수 없다.
되도록 소스코드 위쪽에 한꺼번에 선언하며, 되도록 선언과 동시에 초기화를 한다.
*변수명 주의사항
문자부터 시작한다
특수문자를 쓸 수 없다(단, _와 $는 가능)
공백을 사용할 수 없다
키워드(예약어)를 사용할 수 없다
되도록이면 소문자로 시작(대소문자 구분됨)
되도록이면 의미있는 이름으로 사용하며, 한글은 사용하지 않는다.
카멜표기법 : 공백을 가지게 되는 이름의 첫글자를 대문자이다.
userAge
userName
스네이크표기법 : 공백대신 언더바를 사용한다.
user_age
user_name
public class Variable {
public static void main(String[] args) {
// 변수 선언
int month;
String season;
// 변수에 값을 저장
month = 10;
season = "가을";
// 변수를 출력
System.out.println(month);
System.out.println(season);
// 변수를 선언과 동시에 초기화
int date = 9;
System.out.println(date);
// 변수 여러개 선언
String lastName, firstName;
String lastName="이", firstName="태경";
// 주어진 값과 자료형을 가지고 선언과 동시에 초기화 하기
// int(10) double(172.0), float(17.2), String(본인의성), boolean(true), char('M')
int age = 10;
double height = 172.0;
float declare = 17.2F;
String lastName = "이";
boolean istrue = true;
char gender = 'M';
System.out.println(age);
System.out.println(height);
System.out.println(declare);
System.out.println(lastName);
System.out.println(istrue);
System.out.println(gender);
}
}
변수 및 상수의 사용
data 변수를 저장공간으로 볼지, 값으로 볼지가 중요하다.
int data = 20; // 저장공간
data + 7; // 값
System.out.println(data + 7); // 값
ex) data = data + 17; // 앞 data : 저장공간, 뒤 data : 값
상수(항상 그대로인 수)
값을 변경할 수 없도록 한다.
final 자료형 상수명 = 값;
단, 상수명은 전부 대문자로 약속한다.
public class ConstantTest {
public static void main(String[] args) {
// 상수
final int PASSWORD = 1566; // 상수는 대문자로 입력하며, final을 사용한다.
PASSWORD = 1577; // 상수이기 때문에 재할당을 하게되면 err가 난다.
System.out.println(PASSWORD); // 1566
// 변수
int pw = 1566;
pw = 1577; // 변수이기 때문에 새로 정의한 값으로 출력된다.
System.out.println(pw); // 1577
}
}
서식문자
출력 형식을 지정하며, %로 시작하며 printf()에서 사용한다.
반드시 따옴표 안에서 작성하며, 쉼표 ',' 뒤에 나오는 값이 형식 지정자 위치로 들어가게 된다.
ex) System.out.printf("오늘의 날씨는 %s입니다", "맑음");
%o octal(8진수 정수)
%d decimal(10진수 정수)
%x hexadecimal(16진수 정수)
%f float(실수) → 소수점 6자리 까지 출력된다. (컴퓨터가 알고 있는 가장 정확한 자리수)
%c character(문자)
%s string(문자열)
public class FormatTest {
public static void main(String[] args) {
String weather = "맑음";
int month = 10;
int date = 8;
double max = 16.2;
double min = 8.137;
System.out.println("오늘은 " + month + "월 " + date + "일입니다."); // 위아래 같은 값을 출력한다.
System.out.printf("오늘은 %d월 %d일입니다.\n", month, date); //오늘은 10월 8일입니다.
System.out.printf("오늘은 날씨 %s입니다.\n", weather); // 오늘은 날씨 맑음입니다.
System.out.printf("오늘은 날씨 %s입니다.\n", "맑음"); // 값으로 넣어도 되나 위에처럼 변수의 값을 넣는게 효율적이다.
System.out.printf("오늘은 최고기온은 %f도 입니다.\n", max); // 오늘은 최고기온은 16.200000도 입니다.
System.out.printf("오늘은 최처기온은 %f도 입니다.\n", min); // 오늘은 최처기온은 8.137000도 입니다.
System.out.printf("오늘은 최저기온은 %.2f도 입니다.\n", min); // 오늘은 최저기온은 8.14도 입니다. // 둘째자리까지 출력되며, 반올림 되어서 출력된다.
// 정수
System.out.printf("코카콜라의 가격은 %05d원입니다.\n", 5); // 코카콜라의 가격은 00005원입니다. // 5자리이며, 나머지는 0으로 채우고, 오른쪽정렬이다.
System.out.printf("코카콜라의 가격은 %-5d원입니다.\n", 5); // 코카콜라의 가격은 5 원입니다. // 5자리이며, 왼쪽정렬이다.
// 문자열
String menu = "펩시콜라";
System.out.printf("%.2s의 가격은 1000원 입니다\n", menu); // 펩시의 가격은 1000원 입니다 // 세번째 자리에서 반올림한 후 두번째 자리부터 출력, 몇 글자가 출력될건지 정한다.
// 원주율을 반올림하여 3.1416으로 출력하려고 합니다.
// printf()를 사용하여 출력(값 수정x)
double parameter = 3.14159265358979;
System.out.printf("원주율 = %.4f\n", parameter); // 원주율 = 3.1416
}
}
형변환(type casting)
자동 형변환
정수 + 실수 = 실수
ex) 1 + 1.0 = 2.0
문자 + 정수 = 정수
ex) 'A' + 1 = 66
강제 형변환
(자료형) 변환 가능한 값
ex) (int)3.14 = 3
public class CastingTest {
public static void main(String[] args) {
// 자동 형변환
int num1 = 5;
double num2 = 17.2;
System.out.println(num1 + num2);
// 문자 + 정수 = 정수
int num3 = 1;
char word = 'A'; // 65
System.out.println(num3 + word); // 66정수로 출력된다. 아스키 코드 참조
// 강제 형변환
System.out.println((int) 10.2345); // 10
System.out.println((double) 10); // 10.0
System.out.println((char) 70); // F // 70을 문자형으로 하면 F이다.
}
}

문자열의 형변환
1. 다른 자료형 → 문자열
기본 자료형과 빈 문자열을 연결(+) 시켜서 형변환 한다.
기본 자료형과 + ""(빈 문자열)
3 + "" = "3"
1.25 + "" = "1.25"
2. 문자열 → 다른 자료형
문자열 자료형은 int, double, char, boolean과 같은
기본 자료형이 아닌 클래스 타입이기 때문에 해당 클래스의 메소드로 형변환을 시킨다.
정수형 Integer.parseInt("문자열")
실수형 Double.parseDouble("문자열")
논리형 Boolean.parseBoolean("문자열")
문자형 문자열.charAt()
public class CastingTest2 {
public static void main(String[] args) {
// ctrl + shift + f = 코드 자동 정렬
// 문자열은 +가 연산이 아닌 연결
System.out.println(3 + 5); // 8
System.out.println("3" + "5"); // 35
// 다른 자료형 -> 문자열 형변환 // 빈 문자열을 더해야 한다.
String intStr = 10 + "";
String douStr = 10.3 + "";
String charStr = '가' + "";
String boolStr = false + "";
System.out.println(intStr + douStr + charStr + boolStr); // 1010.3가false
// 문자열 -> 다른 자료형
int num = Integer.parseInt("117");
// int num2 = Integer.parseInt("117.8"); // int 정수형이 아니고 실수형 double이기 때문에 err가 난다.
System.out.println(num); // 117
System.out.println(num2); // err
double num2 = Double.parseDouble("10");
System.out.println(num2); // 10.0
}
}
입력 메소드
입력하기 전에 출력을 통해서 이떤 값을 입력해야 할지 사용자에게 알려줘야 한다.
import java.util.Scanner; 를 통해서 먼저 불러온 다음에 사용해야 한다.
ctrl + shift + o 하면 자동으로 import된다.
입력 클래스가 없는 상태에서 ctrl + shift + o 하면 import 한 것이 자동 삭제된다.
입력 클래스
Scanner sc = new Scanner(System.in); // sc는 변수 값이다.
Scanner 에서 ctrl + spacebar를 누를 시 해당 정보를 확인할 수 있다.
입력 메소드
next() : 사용자가 입력한 문자열 값
사용자가 입력한 값 중 공백 또는 줄바꿈 문자를 구분점으로 각 문자열을 분리한다.
첫번째 문자열은 첫번째 next()에 담고 두번째 문자열은 두번째 next()에 담는다.
nextLine() : 사용자가 입력한 문자열 값
공백 또는 줄바꿈 문자도 값으로 취급하기 때문에 그대로 입력받는다.
nextInt() : 입력받은 값을 정수형으로 저장한다.
import java.util.Scanner; // ctrl + shift + o 하면 자동으로 import된다.
public class InputTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // ctrl + shift + o
System.out.println("이름을 입력하세요.");
String name = null; // 입력을 받지 않은 상태에서 아무런 값이 없다는 초기화를 한 상태이다.
name = sc.next();
System.out.println(name + "님 환영합니다.");
// next()
String name2 = null;
name2 = sc.next();
System.out.println(name + name2 + "님 환영합니다.");
// nextLine()
String name3 = null;
name3 = sc.nextLine();
System.out.println(name3 + "님 환영합니다.");
// nextInt()
Scanner sc = new Scanner(System.in);
int num1 = 0; // num1을 초기화한 상태이다.
System.out.println("정수를 입력하세요.");
num1 = sc.nextInt();
System.out.println("나이 차이는 " + (30 - num1) + "입니다.");
// 정수 5를 입력받을 경우 // 나이 차이는 25입니다.
}
}