변수 : 하나의 값을 저장하기 위한 (임시)공간
변수에 이름을 지어줘야함
ex) int r = 10 // r이라는 변수에 10이 담겨있음
변수를 선언했다 ▶ Stack이라는 메모리 공간에 변수에 대한 공간이 생기는 것 (변수는 메모리에 저장됨)
변수 이름 지을 때
자료형 (데이터가 들어갈 수 있는 크기/종류)
▼기본자료형 (String 제외)
▼참조자료형
기본자료형 이 외 대문자로 시작하는 모든 자료형
ex) String, Class 등 (String == Class)
정수형 기본값 : int (4byte-컴퓨터의 기본 byte)
실수형 기본값 : double (8byte-좀 더 정확한 수 표현)
long은 L(대문자)로 붙임
float는 f를 붙임
*둘다 기본형이 아니기 때문에 붙여서 구별해줘야함
값 대입 (초기화) : 값을 대입하는 것
= : 대입연산자
★int age; // age라는 이름으로 선언
age = 10;
대입연산자 기준 오른쪽에 있는 값 10이 왼쪽에 있는 공간 age에 들어감
리터럴
: 값 자체
ex) short s = 32767
초기화 : 변수를 사용하기 전 처음으로 값을 저장하는 것
★
-선언 후 초기화
int age;
age = 100;
-선언과 동시에 초기화
int age = 100;
public void declareVariable
boolean isTrue;
boolean isTrue = true;//오류 메시지
▶변수가 같은 이름으로 중복 선언되었음
기능클래스와 실행클래스 나눠서 진행
import (ctrl+shift+o) : 참조하려는 class가 어디있는지 알려주는 기능, 오류 보기에 자동생성 가능
상수 : 변하지 않는 수 (한 번만 저장할 수 있는 메모리)
final int AGE ;
1) 앞에 final (상수 예약어)
2) 변수가 대문자
▶위 두가지 조건이 만족하면 상수
*final은 변수/class 둘 다 붙을 수 있음 (종단의 의미)
문자열에서 +는 연결의 의미
ex) String str = new String("기차"+"칙칙폭폭");
but +맨앞에 문자가 나오면 덧셈의 역할을 할 수 없음 just 연결 역할
ex)
String str = "기차"+123+45+"출발";
▶기차12345출발
String str = 123+45+"기차"+"출발";
▶168기차출발
String str = "기차"+(123+45)+"출발";
▶기차168출발
long정수보다 float실수가 더 큼!
int char도 형변환 가능! (아스키코드)
ex) int num = 'A' ; // 65
char ch1 = 97; //a
자동 형변환 : 작은 자료형을 큰 값의 자료형으로 컴퓨터가 자동으로 변환
ex ) int = 123456789 > double = 123456789.0
▶int 보다 double이 커서 double 결과값으로 출력
강제 형변환: 큰 값의 자료형을 작은값의 자료형으로 사람이 강제로 변환 (데이터 손실 가능성 有)
▶ 값 앞에 같이 변환하고 싶은 타입을 넣어주면 됨
ex)
int iNum = 10;
long lNum = 100L;
int result = (int)(iNum + lNum) ;
println : 줄바꿈을 해주는 메소드
print : 줄바꿈을 해주지 않는 메소드
printf : 변경해줘야 할 변수가 많을 때 사용, 데이터가 들어올 자리를 마련 (줄바꿈 되지 않음)
+%n 줄바꿈
ex)
public void printfEx() {
String str1 = "안녕하세요";
String str2 = "반갑습니다";
System.out.println(str1 + ", 박신우입니다."+str2 + ".");
System.out.printf("%s, 박신우입니다. %s.", str1, str2);
} // 안녕하세요, 박신우입니다. 반갑습니다.
Scanner
: 사용자로 부터 받은 문자열을 처리하는 클래스
스캐너 코드 작성 순서
1) import 작성
import java.util.Scaneer
★반드시 class 외부에 위치할 것!
2) Scanner 생성
Scanner sc = new Scanner(System.in);
→ System.in : 사용자로부터 값을 입력 받겠다.
3) 키보드 입력 값 받기
#참고
반환 값이 없는 메소드 : void 등
반환 값이 있는 메소드 : int, boolean, double, String 등 자료형
*반환값 여부는 변수에 커서를 올려놓아서 확인
예제)
import java.util.Scanner;
public class E_KeyboardInput {
public void input1() {
Scanner sc = new Scanner(System.in);
System.out.print("문자열을 입력해주세요 :");
String str = sc.next();
System.out.print("숫자를 입력해주세요 :");
int num = sc.nextInt(); // long num = sc.nextInt();도 가능
System.out.printf("%s,%d", str, num);
}
}
1) next라는 메소드는 사람으로부터 값을 받아옴
2) next에서 반환된 값을 string이라는 공간에 문자열로 받을 수 있음
★Scanner에서 Int는 long으로 변경가능 (자동 형변환 가능, 강제 형변환은 안됨)