- 변수 : 변할 수 있는 값을 담는 저장공간
- 상수 : 안변함!!
자료형
자료형 크기 표현범위 boolean 1바이트 논리값 (true -> 참, false -> 거짓)을 기억 byte 1바이트 파일 전송 -> 파일 다운로드 char 2바이트 문자 1개 -> 자바는 UniCode 사용
null값 없음short 2바이트 -32768 ~ 32767 사이의 정수 int 4바이트 -2147483648 ~ 2147483647 사이의 정수 long 8바이트 -2의 63승 ~ 2의 63승 -1 사이의 정수 float 4바이트 단정도 실수, 소수점 아래로 6자리 정도 double 8바이트 배정도 실수, 소수점 아래로 16자리 정도
- 값은 오른쪽에서 왼쪽에 담긴다.
- 코드는 위에서 아래로 흐른다.
- 변수의 선언 방식 (Java : 카멜표기법)
- 세 개의 숫자 각 선언 후 총합 인쇄
// 세개의 숫자를 각각 변수 선언하고 세수의 총합을 인쇄해보기 int a = 10; int b = 20; int c = 30; int sum = a+b+c; System.out.println(sum);
- 스캐너 통해 가로 세로 입력 받아 사각형 넓이 구하기
// 스캐너를 통해 가로와 세로를 입력받아 사각형의 넓이를 구해보기 Scanner scanner = new Scanner(System.in); System.out.println("사각형의 가로 길이를 입력하세요."); int x = scanner.nextInt(); System.out.println("사각형의 세로 길이를 입력하세요."); int y = scanner.nextInt(); System.out.println("사각형의 넓이는 " + x + y + "입니다.");
- 나이 입력받아 내년 나이 구하기
Scanner scanner = new Scanner(System.in); System.out.println("2022년 올해 나이를 입력해주세요."); int age = scanner.nextInt(); System.out.println("2023년 내년에는 " + (age + 1) + "살 입니다.");
- 두 수 입력 받아 몫과 나머지 구하기
Scanner scanner = new Scanner(System.in); System.out.println("첫번째 숫자를 입력해주세요."); int a = scanner.nextInt(); System.out.println("두번째 숫자를 입력해주세요."); int b = scanner.nextInt(); System.out.println("두 수를 나눈 몫은 " + (a/b) + "입니다."); System.out.println("두 수를 나눈 나머지는 " + (a%b) + "입니다.");
(int) a = 'A';
// 문자를 숫자로
Scanner scanner = new Scanner(System.in);
System.out.println("아스키코드를 알고 싶은 알파벳을 입력하세요.");
char a = scanner.nextLine().charAt(0); // 괄호 안은 인덱스번호
int ia = (int) a;
System.out.println("입력하신 알파벳의 아스키 코드는 " + ia + "입니다.");
자료형1 변수명1 = 값;
자료형2 변수명2 = (변수명1 비교연산자 비교할것) ? "true일 때" : "false일 때"
int h = 18;
String result = h < 12 ? "am" : "pm";
System.out.println(result);
int a = 10;
int b = 5;
System.out.println("전위 증감 연산자 : " + a * ++b);
// 10 * (1 + 5) = 60;
System.out.println("후위 증감 연산자 : " + a * b++);
// 10 * 6 = 60;
// 뒤에 있는 ++는 출력 후 b값에 +1됨
System.out.println("전위 증감 연산자 : " + a * ++b);
// 10 * (1 + 7) = 80;
// 위에서 출력후 ++ 되서 6에서 7로 바뀌어있는 상태에서 또 ++
int a = 10;
int b;
b = a++;
System.out.println(b);
// b = a, 10
// ++는 출력 후
System.out.println(a + " & " + b);
// a는 10에서 ++이 되었으니 11
// b는 위에서 값 받은 후 연산 없으니 그대로 10
b = ++a;
System.out.println(b);
// b = (1+11), 12
// 위에서 a가 11로 바뀌었기 때문
System.out.println(a + " & " + b);
// a는 위에서 11+1이 되었으니 12
// b는 위에서 값 받은 후 연산 없으니 그대로 12
==
-> 해당 문자열의 주소 비교
equals()
-> 저장된 주소에 실제 저장된 데이터를 비교
-> 문자 하나하나 비교하여 값이 같으면 true 반환
-> 기본 자료형과 null을 제외한 클래스로 생성한 객체는 equals로 비교 (== X)
String t1 = "sample";
String t2 = t1;
String t3 = new String("haha");
String t4 = new String("haha");
System.out.println(t1 == t2); // true
System.out.println(t1.equals(t2)); // true
System.out.println(t3 == t4); // false
System.out.println(t3.equals(t4)); // true
이미 선언된 값은 "변수명[인덱스번호] = 값;" 으로 기존 값 덮을 수 있음
자료형[] 변수명 = new 자료형[인덱스길이];
변수명[인덱스번호] = 넣을 값; // 값 넣는 방식
자료형[] 변수명 new 자료형 {값, 값, 값, ...}
// 위의 방식과 다르게 값이 이미 들어가 있어서 값 넣을 필요 없음
System.out.println(Arrays.toString(변수명));
변수명.length;
변수명[변수명.length -1]
// 봄여름가을겨울 출력 , 마지막 값도 출력
String[] seasons = {"봄", "여름", "가을", "겨울"};
System.out.println(Arrays.toString(seasons));
System.out.println(seasons[seasons.length-1]);
// 과일 목록 차례대로 인쇄하기 - 반복문과 함께
List<String> fruits = new ArrayList<>();
fruits.add("바나나");
fruits.add("배");
fruits.add("딸기");
fruits.add("감");
fruits.add("수박");
fruits.add("딸기");
fruits.add("바나나");
System.out.println(fruits);
for (int i = 0; i < fruits.size(); i++) {
String fruit = fruits.get(i);
System.out.println(fruit);
-> (i = 변수명.size()-1; i >= 0; i--)
// 숫자 5개 띄어쓰기로 구분하여 입력한 후 역순으로 출력하기
Scanner scanner = new Scanner(System.in);
System.out.println("숫자 5개를 띄어쓰기로 구분하여 입력하세요.");
int[] a = new int[5];
for (int i = 0; i < a.length; i++) {
a[i] = scanner.nextInt();
System.out.println(a[i]);
}
// 거꾸로 출력하기
for (int i = a.length-1; i>= 0; i--) { // length는 인덱스라 -1
System.out.println(a[i]);
}
// Math.random(): 0 이상이고 1 미만인 무작위수를 발생시킨다.
System.out.println(Math.random());
// 1~6 중에 하나 랜덤. int형이므로
// +1을 안하면 1-5 까지 숫자 중에서 고름
System.out.println((int) (Math.random() * 6) + 1);