on my way
이것이 자바다 Chapter02. 변수와 타입 본문
Chapter2. 변수와 타입
2.1 변수 선언
변수 = 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름 (메모리에 저장된 값을 가르키는 주소)
- 변할 가능성 (실행중)
- 다른 곳에서 사용 (여러번)
선언과 초기화
무조건 데이터 타입을 명시해줘야 한다.
자료형 변수명;
예를 들어 double로 선언 후에는 string 타입을 담을 수 없다.
정적 타이핑 (static typing)
동적 타이핑 (dynamic typing)
초기화: 처음하는 행동
변수명 = 값; // 대입
자료형 변순명 = 값; // 선언+초기화
변수명 명명규칙: 의미있는 이름
Camel : 대소문자 섞는 스타일. (자바는 주로)
- 자바소스 파일명(클래스) 대문자로 시작 → Week.java, MemberGrade.java
- 변수명은 소문자로 시작 → score, mathScore
Snake : _로 구분 (DB는 주로)
- student_name, student_last_name,
연산
대입연산 (우선순위 최하)
사칙연산
비교
논리
증감
삼항
package ch02.sec01
public class VariableExchangeExample {
public static void main(String[] args) {
int x = 1;
int y = 2;
System.out.println("x:"+x+" y:"+y);
int tmp = x;
x = y;
y = tmp;
System.out.println("x:"+x+" y:"+y);
}
}
2.2 정수 타입 (8가지)
자료형 구분
기본 자료형 (primitive type)
- 정수: byte, char, short, int(21억이하), long
- 실수: float, double
- 논리(t/f): boolean
- 문자 (char)
범위: int < long < double
참조 자료형 (reference type)
- 배열, 클래스, 인터페이스..
2.3-4 문자 실수 타입
Type mismatch: cannot convert from double to float
java는 타입이 다르면 처리할 수 없다.
// 문자
char c = 'A'; // ASCII코드 65
System.out.println((char)(c+1));
long a = 2200000000L; //2억은 range 초과
// long도 int로 처리가 됨. 끝에 l을 붙여야 함.
float b = 3.14f; // float 굳이 쓰기 X
double d = 3.14;
byte e = -128; // byte 범위 : -128~127
// 10진수
double x = 0.25;
// e 또는 E 포함
double x = 5e2; //5.0*10^2=500.0
double y = 0.12E-2 //0.12*10^(-2)=0.0012
2.5 논리 자료형
기본 자료형 : primitive type (int, long, double, boolean)
참조 자료형 : reference type
boolean stop = true;
if (true) {
System.out.println("STOP");
} else {
System.out.println("START");
}
int x = 10;
boolean result1 = (x==20);
boolean result2 = (x!=20);
boolean result3 = (x>20);
boolean result4 = (0<x && x<20);
boolean result5 = (x<0 || x>200);
2.6 문자열 타입
‘ ’ 를 감싼 한개 문자는 char이지만,
“ “로 감싼 여러 문자는 유니코드로 변환되지 않는다.
String은 참조타입
char var1 = "A"; //compile error
char var2 = "홍길동"; //compile error
String var1 = "A";
String var2 = "홍길동";
package ch02.sec06;
public class StringExample {
public static void main(String[] args) {
String name = "홍길동";
String job= "Programmer";
System.out.println(name);
System.out.println(job);
String str = "나는 \\"자바\\"를 배웁니다.";
System.out.println(str);
str = "번호\\t이름\\t직업 ";
System.out.println(str);
System.out.println("나는\\n");
System.out.println("자바를\\n");
System.out.println("배웁니다.");
String text = """나는
자바를
배웁니다.""";
}
}
이스케이프 문자
\n, \t, \" 는 외우자.
String str1 = "" +
"{\n" +
"\t\"id\":\"눈송이\"\n"+
"}";
String str2 = """
{
"id":"winter",
"name":"눈송이"
}
""";
System.out.println(str1);
System.out.println("----------------------");
System.out.println(str2);
System.out.println("----------------------");
백엔드 할 때 자주 볼 JSON
이 표기법에 따라서 데이터를 주고 받을 때,
2.7 자동 타입 변환
자동 타입(자료형) 변환 - 자동형변환
int < long < double
byte < short , char < int < long < float < double
-> 순서로는 가능
<- 순서로는 불가능
byte byteValue = 10;
int intValue = byteValue; // 자동형변환
// byteValue = intValue; // error
double doubleValue = intValue;
System.out.println(doubleValue);
// intValue = doubleValue;
intValue = (int)doubleValue; // 강제형변환
2.8 강제 타입 변환
강제 타입(자료형) 변환 - 강제형변환
원본값 유지 X, 손실 발생 가능
double pi = 3.14;
int pi2 = (int)pi;
System.out.println(pi2); // 손실 발생
int x = 10;
int y = 3;
int z = 2;
System.out.println((double)x/y); // 정수끼리 연산하면 결과는 무조건 정수
int sum = x+y+z;
double avg = sum / 3;
System.out.println(avg);
byte b1 = 1;
byte b2 = 2;
// byte b3 = b1+b2; //error: 연산은 int끼리 가능
팁!
ctrl+d 라인 삭제
shift+enter 그냥 줄바꿈 됨
이름 뒤 () 면 실행한다.
2.10 문자열을 기본 타입으로 변환
문자열끼리 비교를 하면 .equals() 써야한다.
// 문자열 -> 기본자료형 : 클래스명.parse자료형(값)
String s1 = "221";
// int il = (int)s1; //error
int il = Integer.parseInt(s1);
System.out.println(il);
String s2 = "true";
boolean s21 = Boolean.parseBoolean(s2);
if (s2 == "true") {
System.out.println("true");
} else {
System.out.println("false");
}
// String s3 = new String("true");
String s3 = "true";
System.out.println(s3);
System.out.println(s2 == s3);
System.out.println(s2.equals(s3));
// 기본자료형 -> 문자열 변환 : String.valueOf(값)
String s4 = String.valueOf(1);
System.out.println(s4);
test(10);
}
static void test(int a) {
System.out.println(a);
}
2.11 변수 사용 범위 (scope)
모두 중괄호 기준에서 동작한다.
String s2 = "true";
if (s2 == "true") {
int x2 = 1;
System.out.println(x2);
System.out.println("true");
} else {
System.out.println("false");
}
test(x2); //error
}
static void test(int a) {
System.out.println(a);
}
}
구조가 가장 중요하다.
구조는 모두 중첩, 중복된다.
블럭은 모두 중괄호로 묶인다.
2.12 콘솔로 변수값 출력
printf("형식문자열",값1,값2,...) => f - format(포맷팅)
s: string //전부 가능
d: decimal (숫자)
f: float(실수)
System.out.printf("이름: %s", "김자바");
System.out.printf("이름: %d\n", 25);
System.out.printf("저의 이름은 %s입니다. %d살 입니다.", s2,Integer.parseInt(s1));
2.13 키보드 입력 데이터를 변수에 저장
Scanner scanner = new Scaner(system.in);
타입 / 변수 / = / 값 (이퀄의 오른쪽에는 무조건 값-객체)
scanner.nextLine(), nextInt()
package ch02.sec13;
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.print("x 값 입력: ");
String strX = scanner.nextLine();
int x = Integer.parseInt(strX);
System.out.print("y 값 입력: ");
String strY = scanner.nextLine();
int y = Integer.parseInt(strY);
int result = x+y;
System.out.println("x + y: "+result);
System.out.println();
while(true) {
System.out.print("입력 문자열: ");
String data = scanner.nextLine();
if(data.equals("q")) {
break;
}
System.out.println("출력 문자열: "+data);
System.out.println();
}
System.out.println("종료");
}
}
확인문제
'Computer Science > JAVA' 카테고리의 다른 글
MySQL, Apache Tomcat, Java 설치 및 연동하기 (0) | 2024.04.24 |
---|---|
이것이 자바다 Chapter05. 참조 타입 (0) | 2024.04.01 |
이것이 자바다 Chapter04. 조건문과 반복 (0) | 2024.03.14 |
이것이 자바다 Chapter03. 연산자 (0) | 2024.03.13 |
이것이 자바다 Chapter01. 자바 시작하기 (0) | 2024.03.13 |