int age = 29; // 변수
age = 30; // 메모리 안에 값의 재할당이 가능하다.
final int AGE = 29; // 상수
AGE = 30; // X, 상수는 메모리 안에 값을 재할당 할 수 없다.
상수를 사용하는 이유는 값(리터럴)에 의미있는 이름을 지어주기 위함 이다.
코드의 유지보수성을 높이기 위함이다.
final int WIDTH = 20;
final int HEIGHT = 10;
// 앞으로 어떠한 곳에 상수가 쓰이던지 상수 값만 바꾸면 모든 식도 수정 된다.
// 식에서 상수의 이름을 보고 값이 어떤 역할을 하는지 알 수 있다.
int triangleArea = (WIDTH * HEIGHT) / 2;
int 앞에 final을 쓰게 된다면, a는 상수(constant)가 된다. 여기서의 리터럴은 10이다.
리터럴 이란 값 자체를 의미한다.
int score = 100; // 100 은 리터럴
final int MAX = 200; // 200 은 리터럴
String str = "abs" // "abs" 는 리터럴
컴퓨터는 연산시 데이터 타입을 맞춰야 한다. 이유는 컴퓨터는 2진수만 알아 듣기 때문이다.
ex) int + long 의 데이터 타입을 가진 값을 연산하려면 둘 중 하나를 형 변환 시켜 연산 해야한다.
이 때 컴퓨터는 값을 보존하기 위해서 int 보다 더 큰 값을 범위를 저장할 수 있는 long 으로 변환해서 연산을 진행한다.
int 와 float 의 데이터 타입을 가진 값을 연산하면 float 으로 데이터 타입이 변경 된다. 이유는 int,float 모두 같은 메모이 사용 크기를 가지고 있지만 float 이 저장되는 값의 범위가 크기 때문에 소수점 값의 보존을 위해서 float 으로 변경 된다.
👉 일반적으로 연산시 데이터 타입의 크기가 큰 방향으로,정수 보다는 실수형으로(소수점의 값을 보존하기 위해) 데이터 타입이 변경 됩니다.
**byte ➡️ short,char ➡️ int ➡️ long ➡️ float ➡️ double**
int wholeNumber = (int)PI;
👉 강제로 형 변환이 가능하다. 하지만 int 는 4byte 정수만을 저장할 수 있기 때문에 소수점 값은 값 손실이 일어난다.
short num1 = 1;
short num2 = 2;
short num3 = (short) (num1 +num2);
👉 int 범위 이하에서는 연산을 진행하면 int로 자동 형변환이 발생한다. 따라서 위에 변수 num3 에 (num1 + num2) 값을 저장할 수 없어 에러가 발생한다. short 로 데이터 타입을 변경하여 저장 하고 싶다면 (short)로 강제 형 변환 시켜야 한다.
연산자 우선 순위
( ) 괄호는 최우선 연산자 – 실무에서 많이 쓰임
결합 방향은 같은 우선 순위일 때 먼저 계산 하는 것
int x=1, y=1;
int a = x++; // x 값이 사용되기 전에 증가된다. a는 1가 된다.
int b = ++y; // y 값이 사용된 후에 증가된다. b는 2가 된다.
System.out.println("a = "+ a +" b = "+b);
문자열과 숫자(정수나 실수)가 있으면, 문자열로 결합한다.
두 개의 다른 데이터 타입이 연산을 할 경우 형변환이 일어남
문자열 + 실수 = 문자열로 캐스팅 숫자를 문자로 인식함
int x=1, y=1;
int a = x++; // x 값이 사용되기 전에 증가된다. a는 1가 된다.
int b = ++y; // y 값이 사용된 후에 증가된다. b는 2가 된다.
System.out.println("a = "+ a +" b = "+b);
답 a = 1 b= 2
//if else
int a;
if(5<4) {
a = 50;
}else {
a = 40;
}
System.out.println(a); //결과 = 40
//삼항연산자
int b = (5 < 4) ? 50 : 40;
System.out.println(b); //결과 = 40
int num = 0;
while(num<5) {
System.out.println("I like java" + num);
num++;
}
do {
System.out.println("I like java" + num);
num++;
} while (num < 5);
do while : 최초 한번은 무조건 실행 된다
while : 조건에 따라서 실행 된다
int num = sc.nextInt();
for(int i =1; i<=9;i++) {
System.out.println(num*i);
}

break : 반복문 탈출 할때
for(int i = 1;i<100;i++) {
if ((i % 5 == 0)&&(i % 7 == 0)) {
System.out.println(i);
break; // 해당 반복문을 중지 시킨다
}
}
continue : 조건검사로 이동
for(int i = 1; i < 100; i++) {
if(i %3 != 0) {
continue; // 3의 배수가 아닐경우 다시 조건 검사로 이동한다
}
System.out.println(i); // 3의 배수만 출력한다
}
첫 번째 방법
int[] S = new int[10];
두 번째 방법
int[] scores = {65, 74, 23, 75, 68, 96, 88, 98, 54};
foreach + ctrl + space : foreach 구문 자동 완성//배열 생성
int[] arr = new int[1000];
//1~1000까지 넣기
for(int i=0; i < arr.length; i++) {
arr[i] = i+1;
}
//배열 값들 합 구하기
int sum = 0;
for (int num : arr) {
sum += num;
}
//출력
System.out.println(sum);
//result
500500
int num = (int) (Math.random()*100) + 1; (1을 더해줘야 한다. 안 더하면 0~99로 나온다)arr 값을 전부 보고싶을 때 Arrays.*toString*(arr)int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
int num = (int) (Math.random()*100) + 1;
arr[i] = num;
}
System.out.println(Arrays.toString(arr));
int max = 0;
for (int num : arr) {
max = (num > max) ? num : max;
}
System.out.println(max);
public static void main(String[] args) {
int num = 1;
boolean search = false;
while(num<100) {
if(((num%5)==0) && ((num % 7 ) == 0)) {
search =true;
break;
}
num++;
}
if(search)
System.out.println("찾는 정수 : " + num);
else
System.out.println("5의 배수이자 7의 배수인 수를 찾지 못했습니다");
}
public static void main(String[] args) {
int num = 0;
for(int i=1; i<= 100; i++) {
if(i % 7 == 0 && i % 8 == 0) {
num = i;
break;
}
}
System.out.print("찾는정수:" + num);
}
public static void main(String[] args) {
int num=0;
int count = 0;
while ((num++) < 100) {
if (((num% 5) != 0) || ((num % 7) != 0))
continue;
count++;
System.out.println(num);
}
System.out.println("count : " + count);
}
배열 합구하기
public static void main(String[] args) {
int[] arr = new int[1000];
int sum = 0;
//입력
for(int i = 0; i<arr.length; i++) {
arr[i] += i+1;
}
//합구하기
for (int num : arr) {
sum += num;
}
System.out.println(sum);
System.out.println(Arrays.toString(arr));
}
배열 랜덤 숫자 중 최대값
public static void main(String[] args) {
int[] arr = new int[10];
int max= 0;
for(int i =0; i<arr.length; i++) {
arr[i] = (int)(Math.random()*100)+1;
if(arr[i] > max) {
max = arr[i];
}
}
System.out.println(max);
System.out.println(Arrays.toString(arr));
입력받아 구구단
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int num = sc.nextInt();
for(int i= 1; i<10; i++) {
System.out.println( num + "x" + i + "=" + num*i);
}
}
짝수 구구단
for (int i = 2; i < 10; i++) {
if (i % 2 == 0) {
for (int j = 1; j < 10; j++) {
System.out.println(i + "x" + j + "=" + (i * j));
}
}
}
for (int i = 2; i < 10; i++) {
if (i % 2 != 0) {
continue;
}
for (int j = 1; j < 10; j++) {
System.out.println(i + "x" + j + "=" + (i * j));
}
}
for(int i = 0; i<5; i++) {
for(int j=0; j<5; j++) {
System.out.print("*");
}
System.out.println();
}
for(int i = 0; i<5; i++) {
for(int j=0; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 5; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 1; i <= 5; i++) {
for (int j = 5; j > i; j--) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 1; i < 10; i += 2) {
for (int j = 9; j > i; j -= 2) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
입력받아 별찍기
public static void main(String[] args) {
// 입력받기
Scanner sc = new Scanner(System.in);//
int num = sc.nextInt();
// 별과 공백 찍기
for (int i = 1; i <= num; i++) {
// 공백
for (int j = i; j < num; j++)
System.out.print(" ");
// 별찍기
for (int j = 1; j <= 2 * i - 1; j++)
System.out.print("*");
System.out.println(); //
}
}
로또 번호 무작위
public static void main(String[] args) {
int lotto[] = new int[6];
for(int i = 0; i<lotto.length; i++) {
lotto[i] = (int)(Math.random()*45)+1;
for(int j =0; j <i; j++) {
if(lotto[i] == lotto[j]) {
i--;
break;
}
}
}
System.out.println(Arrays.toString(lotto));
}
숫자맞히기
public static void main(String[] args) {
// random 변수 생성
Random random = new Random();
final int RANDOM_NUM = random.nextInt(100);
final int cnt = 10;
// Scanner 생성
Scanner sc = new Scanner(System.in);
// 변수 맞추기
for (int i = 0; i <= cnt; i++) {
if (i == cnt) {
System.out.println("찾지 못하였습니다.");
break;
}
System.out.print("정답을 추측하여 보시오: ");
int num = sc.nextInt();
if (num < RANDOM_NUM)
System.out.println("HIGH");
else if (num > RANDOM_NUM)
System.out.println("LOW");
else {
System.out.print("축하합니다. 시도횟수=" + (i + 1));
break;
}
}