변수 : 뚜껑을 열었다 닫았다 할 수 있는 상자
상수 : 뚜껑을 다시는 열 수 없는 상자
class Main { public static void main(String[] args) { int intType = 100; // 정수형 double doubleType = 150.5; // 실수형 String stringType = "나동빈"; // 문자형 System.out.println(intType); // 출력 // System.out.println();은 ()내용 출력 뒤에 한 칸 줄바꿈 System.out.println(doubleType); System.out.println(stringType); } } |
변수
class Main { final static double PI = 3.141592; // final : 한 번 선언되면 바뀌지 않는다 // static : 하나의 클래스에서 공유하는 자원 // double : 실수형을 의미 public static void main(String[] args) { int r = 30; System.out.println(r * r * PI); } } |
오버플로우
class Main { final static int INT_MAX = 2147483647; // int형 자료형이 가질 수 있는 가장 큰 값 public static void main(String[] args) { int a = INT_MAX; System.out.println(a); // a+1을 출력시 최소값 } } |
사칙연산 계산
class Main { public static void main(String[] args) { int a = 1; int b =2; System.out.println("a + b = " + (a+b)); // ""안에 있는 부분은 문자열, +를 한 다음 ()안에 적은건 정수형 결과 System.out.println("a - b = " + (a-b)); System.out.println("a * b = " + (a*b)); System.out.println("a / b = " + (a/b)); } } |
형변환
class Main { public static void main(String[] args) { int a = (int) 0.5; // 실수형을 정수형으로 형변환 System.out.println(a); // 0이 나온다 // 실수형을 정수형으로 바꾸면 소수점 자리 부분이 제거 } } |
실수 값을 반올림 할 때는 변수에 0.5를 더한 뒤 정수형으로 형변환
즉, 반올림한 값 = (int)(실수 + 0.5);
class Main { public static void main(String[] args) { double b = 0.5; int a = (int) (b + 0.5); // b는 어떠한 실수값이든 0.5를 더하고 int형으로 바꿔주기 때문에 항상 반올림이 된 값만 출력 System.out.println(a); } } |
자료형
: 그때 그때마다 사용할 수 있는 나에게 필요한 데이터 타입을 만들어준다
프로그램에서 표현하고싶은 데이터 형태를 정의한다.
- 원시자료형 Primitiave
: boolean, char, byte, shor, int, long, float, double
- 비원시자료형 Non-Primitive
: 다른 자료형들을 엮어 만든 개념 String, Array
(substring 같은 내부적인 함수가 존재함 그래서 비원시자료형)
double형을 이용하여 평균 구하기
class Main { public static void main(String[] args) { double a = 10.3; double b = 9.6; double c = 10.1; System.out.println((a + b + c)/3); } } |
아스키코드 기반의 char형을 사용해 a부터 z까지 출력
class Main { public static void main(String[] args) { for (char i = 'a'; i < 'z'; i++){ // 아스키코드를 사용하여 컴퓨터 내부적으로 1씩 증가시키기 System.out.println(i + " "); // " "으로 한 칸 띄어쓰기 만들기 } } } |
10진수를 8진수 혹은 16진수로 바꾸어 출력
소수점 표기 형식을 지수 형식으로 출력하고 싶으면 %e 사용
class Main { public static void main(String[] args) { int a = 200; System.out.println("10진수 : " + a); System.out.format("8진수 : %o \n", a); // %o는 형식지정자, a값은 %o의 위치에 들어가게됨 // %o가 의미하는 것은 어떤 10진수 정수를 8진수로 출력해라 System.out.format("16진수 : %x", a); } } |
String의 substring 함수를 활용해보기
String은 내부적으로 char 배열로 되어있다.
String은 클래스 기반의 비원시적 자료형
public class Main { public static void main(String[] args) { String name = "John Doe"; System.out.println(name); System.out.println(name.substring(0, 1)); // 앞 0은 문자의 몇번째 자리를 출력할 건지 // 뒤 1은 총 마지막 자리가 몇번째 자리인지 System.out.println(name.substring(3, 6)); // 세번째 문자열 n부터 6번째 문자열 D까지 출력 System.out.println(name.substring(5, 8)); } } |
연산자
1+2 에서 1,2는 피연산자 +는 연산자
초를 입력 받아 몇 분 몇 초인지 계산하는 프로그램
public class Main { final static int SECOND = 1000; public static void main(String[] args) { int minute = SECOND / 60; // 분은 초를 60으로 나눈 것 int second = SECOND % 60; // 초는 60으로 나눈 나머지 System.out.println(minute + "분" + second + "초"); } } |
==, ><, &&, ||, ! 연산의 개념을 이해하고 프로그램 작성
&& : AND 연산자
|| : OR 연산자
public class Main { public static void main(String[] args) { int a = 50; int b = 50; System.out.println("a와 b가 같은가요?" + (a == b)); System.out.println("a가 b보다 큰가요?" + (a > b)); System.out.println("a가 b보다 작은가요?" + (a < b)); System.out.println("a와 b가 같으면서 a가 30보다 큰가요?" + ((a == b) && (a > b))); // AND 연산자니까 좌 우 둘 다 참일시 참 System.out.println("a가 50이 아닌가요?" + !(a == 50)); } } |
'조건 ? 참 : 거짓' 연산의 형태를 숙지하고 프로그램 작성
public class Main { public static void main(String[] args) { int x = 50; int y = 60; System.out.println("최댓값은" + max(x, y) + "입니다."); } // 반환형, 함수 이름, 매개 변수로 구성 static int max(int a, int b){ // a와 b 중 더 큰 값을 반환하는 max라는 함수 // main mathod에서 함수를 사용하려면 함수 앞에도 static 붙이기 int result = (a > b) ? a : b; return result; } } |
pow()를 이용한 거듭제곱 연산 프로그램을 작성
public class Main { public static void main(String[] args) { double a = Math.pow(3.0, 20.0); // 3의 20 제곱이 a라는 변수에 담긴다 System.out.println("3의 20제곱은" + (int) a + "입니다."); } } |
100 < x < 200은 (100 < x) && (x < 200)로 표현해야한다. (&& - AND 연산자)
i++ (i +=1) (i = i + 1) 셋 다 같은 표현 모두 1만큼 증가시킨다.
조건문 & 반복문
조건문 : 조건에 따라 결정 내리는 것
반복문 : 반복적으로 같은 처리를 되풀이
If 문을 이용하여 문자열이 특정 문자열을 포함하는지 확인하는 프로그램
public class Main { public static void main(String[] args) { String a = "I Love You."; // String은 하나의 문자열을 의미하는 자료형, 비원시적이고 클래스 기반으로 만들어짐 그래서 내부적인 함수를 가질 수 있다 if (a.contains("Love")) { // contains는 자바가 제공하는 하나의 함수, String에서만 제공해주는 특별한 기능 // 특정한 a라는 변수가 어떠한 문자열을 포함하는지 검사하는 역할 // if를 통해 Love를 포함하는 경우 실행되는 부분 System.out.println("Me Too."); } else { // 포함하지 않는 경우 실행되는 부분 System.out.println("I Hate You."); } } } |
점수에 따라서 다른 메세지를 출력하는 프로그램
public class Main { public static void main(String[] args) { int score = 95; if (score >= 90) { System.out.println("A+입니다."); } else if (score >= 80) { System.out.println("B+입니다."); } else if (score >= 70) { System.out.println("C+입니다."); } else { System.out.println("F입니다."); } } } |
문자열과 정수형을 각각 조건문을 이용해 활용해보고 그 차이점을 공부하기
public class Main { public static void main(String[] args) { String a = "Man"; int b = 0; // 자바는 String을 비교할 때 equal()을 이용 // 그 이유는 String은 다른 자료형과 다른 문자열 자료형이기 때문 if (a.equals("Man")){ System.out.println("남자입니다."); } else { System.out.println("남자가 아닙니다."); } if (b == 3){ System.out.println("b는 3입니다.."); } else { System.out.println("b는 3이 아닙니다.."); } if (a.equalsIgnoreCase ("man") && b == 0 ){ // 대소문자를 무시하고 같은지 보기 System.out.println("참입니다."); } else { System.out.println("거짓입니다."); } } } |
while을 이용하여 1부터 1000까지의 합을 출력하는 프로그램
while : 어떠한 상태일 때 얼마동안 실행시켜라
public class Main { public static void main(String[] args) { int i = 1, sum = 0; while (i <= 1000) { sum += i++; // 1 부터 1000까지의 합이 sum에 담긴다. } System.out.println("1부터 1000까지의 합은" + sum + "입니다."); } } |
for문을 이용하여 삼각형을 출력하는 프로그램
public class Main { final static int N = 30; public static void main(String[] args) { // for문 : 초기화 부분, 조건 부분, 연산 부분 for (int i = N; i > 0; i--){ for (int j = i; j > 0; j--){ System.out.print("*"); } System.out.println(); // 줄바꿈 시행 } } } |
for문을 이용하여 원을 출력하는 프로그램
public class Main { final static int N = 15; public static void main(String[] args) { // x^2 + y^2 = r^2 for (int i = -N; i <= N; i++) { for (int j = -N; j <= N; j++){ if (i*i + j*j <= N*N){ System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); } } } |
for(;;)는 while(true)와 똑같이 무한 루프라는 의미
break로 빠져 나올 수 있다.
public class Main { public static void main(String[] args) { int count = 0; for (;;) { System.out.println("출력"); count ++; if (count == 10){ break; } } } } |
기본 입출력
: Scanner 클래스를 이용하여 사용자와의 상호작용
특정한 정수를 입력 받아서 그대로 출력하는 프로그램
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner (System.in); //System.in은 콘솔창에서 입력하는 데이터 System.out.print("정수를 입력하세요 : "); int i = sc.nextInt(); // 콘솔창에 입력되는 정수들을 받아서 i라는 변수에 넣어준다. System.out.println("입력된 정수는 " + i + "입니다."); sc.close(); // 프로그램이 안정적으로 종료되기 위하여 씀 } } |
파일에 차례로 입력된 모든 정수에 100을 곱해 출력하는 프로그램
input.txt 70 580 30 102 503 |
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Main { public static void main(String[] args) { File file = new File ("input.txt"); // input.txt라는 파일을 읽어와서 file 변수가 그것을 처리할수 있게 해줌 try { Scanner sc = new Scanner (file); // file을 매개변수로 file을 통해 입력 받기 while(sc.hasNextInt()){ //sc가 읽어올 파일에서 다음으로 읽을 정수가 있는지 System.out.println(sc.nextInt() * 100); // 다음 정수를 읽어 온 다음에 100을 곱해 출력 } sc.close(); // 파일 입출력이 끝났을때 입력 } catch (FileNotFoundException e){ System.out.println("파일을 읽어오는 도중에 오류가 발생했습니다."); // 예외처리구문 } } } |
자바에서는 Scanner 클래스만 잘 활용해도 다양한 입출력 형태를 자유자재로 구사할 수 있다.
자바는 입력을 받을 때 기본적으로 Scanner 클래스를 사용
Scanner로 문자열을 입력 받고 싶을 때에는 next() 함수와 nextLine()을 적절히 사용할 수 있다.
연습문제
1. 자신의 이름을 출력하는 프로그램
import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.println("이현"); } } |
2.
import java.util.Scanner; public class Main { public static void main(String[] args) { System.out.println(10 + 10); System.out.println(30 * 30); System.out.println(20 - 5); System.out.println(40 / 3); System.out.println(395 % 18); } } |
의 실행 결과 써보기
20
900
15
13
17
3.
**********
**********
**********
**********
**********
**********
**********
**********
**********
**********
사각형 모양을 출력하는 프로그램
import java.util.Scanner; public class Main { public static void main(String[] args) { for(int i = 1; i <=10; i++){ for(int j = 1; j <=10; j++){ System.out.print("*"); } System.out.println(); // 줄바꿈 } } } |
'JAVA' 카테고리의 다른 글
자바 기초 6 (상속) (0) | 2021.10.13 |
---|---|
자바 기초 5 (클래스) (0) | 2021.10.13 |
자바 기초 4 (배열) (0) | 2021.10.13 |
자바 기초 3 (반복 함수와 재귀 함수) (0) | 2021.10.13 |
자바 기초 2 (객체지향) (0) | 2021.10.12 |