gwooden_코린이

java (2일차) 본문

java/2일차

java (2일차)

gwooden22 2022. 12. 3. 15:38
728x90

※출력문

print 3가지

System.out.print <- 줄바꿈 없이 문자열을 그대로 출력
출력시 ("text"); <- 대괄호와 세미콜론 필수
*나머지 print도 동일하게 단, 변수를 대입할 수 있어 대괄호 없이도 사용 가능
printf 
println <- ln은 줄바꿈을 해줌

 

※변수

정수
		예)
		int a;
		a = 10;

		System.out.println(a); --> 출력값 ● 10

		System.out.printf("%d", a);  --> 출력값 ● 10
		두 번째 같은 경우 정수를 나타내는 명령어가 필요 %d는 정수를 뜻한다.
▶실수
		float
		double <-- 실수형 변수로 많이 사용됨
		
		예)
		double b = 3.14;
		
		System.out.println(b); --> 출력값 ● 3.14
		System.out.println("실수형 변수 : " + b); --> 출력값 ● 10실수형 변수 : 3.14
		
		System.out.println("실수형 변수 : " + b + "ㅁㄴㅇ"); --> 출력값 ● 10실수형 변수 : 3.14ㅁㄴㅇ
		System.out.println(a + b); --> 출력값 ● 13.14

			★println 문자열과 동시에 실수형 출력을 원할 시 +를 실수형 변수를 선언한 문자 앞에 추가

		System.out.printf("%f", b); --> 출력값 ● 3.140000

			★printf 사용 시 %f를 사용하여 실수형 변수 출력

▶정리
★변수
int a = 10;  <--- 정수를 저장
double b = 3.14;  <--- 실수를 저장
char c = 'c';  <--- 문자를 저장 (작은괄호를 사용)
String d ="helle";  <--- 문자열를 저장 (대괄호 사용)
boolean e = true; or false;  <--- 참과 거짓을 저장

★주석
//로 이용

시작 /* 끝 /* 을 사용하면 주석을 길게 이용할 수 있음
예) 
    /*
    아래 코드들은 다양한 변수를 선언
      */

 

★복습
		/*
		아래 코드들은 다양한 변수를 선언
		 */
		
		int a = 10; // 정수
		double b = 3.14; //실수
		char c = 'c'; //문자
		String d ="helle"; //문자열
		boolean e = true; //true, false
		
		a = 20; // 코딩문은 위에서 아래로 읽혀져서 처음 정수 변수를 10이라고 정했어도 후에 20이라고 정하면
			기존에 지정한 정수를 선언한 값은 지워진다.
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		System.out.println(e);
		
		출력값
		20
		3.14
		c
		helle
		true
★추가
		System.out.printf("정수 : %d\n", a);
		System.out.printf("실수 : %f\n", b);
		System.out.printf("문자 : %c\n", c);
		System.out.printf("문자열 : %s\n", d);
		System.out.printf("bool : %b\n", e);

		출력값
		정수 : 20
		실수 : 3.140000
		문자 : c
		문자열 : helle
		bool : true

◈역슬레시 기능
\n 사용 시 줄바꿈 기능을 추가 가능

이클립스는 컨트롤 + 역슬레시 사용 시 해당 코드 한 줄이 주석 처리가 된다.
여러줄을 잡고 하면 한번에 하나씩 주석 처리가 된다.

컨트롤 + 시프트 + 역슬레시는 뭉텅이로 전체 주석 처리를 해준다.


		int a = 123;
		int b = 54321;
		
		System.out.printf("%5d\n", a); <--- 여기서 %d 사이에 원하는 숫자를 넣으면 그 숫자만큼 자릿수를 채워준다.
		System.out.printf("%d\n", b);

		예)
		   123
		54321

			해당 기능은 콘솔창에서 나열을 이쁘게 보고싶을 때 사용해서 크게 사용은 안한다.

		double c = 2.2542;
		double d = 157.512558;
		
		float f = 123.56452545f; // f사용시 자동으로 압축해서 값을 출력
		
		System.out.printf("%.2f\n", c); // .2두 번째 자리까지 출력
		System.out.printf("%.3f\n", d); // .3을 하면 세 번째 짜리까지 출력
		// 5 이상 숫자는 반올림 되서 출력됨

		출력값
		2.25
		157.513

이스케이프 문자 <-- 참고정도
구글 검색 시 많이 나옴


※연산

+, - , *, /
% : 나머지 계산

10 % 3 : 10 나누기 3의 나머지를 계산

 

int num1 = 20;
		int num2 = 6;
		
		System.out.println("두수 합 : " + (num1 + num2));
		결과값 --> 26
		
		문자열을 포함해서 변수를 출력할 때는 구분을 지어줘야 된다.

		System.out.println("두수 나눈 결과 : " + (num1 / num2));
		결과값 --> 3
		정수로 계사하면 값은 정수로 출력됨



		int num1 = 20;
		double num2 = 6;  <-- 실수가 저장크기가 크다 보니 정수가 메인이 아닌 실수가 메인이되어 소수점이 표시됨
		
		System.out.println("두수 합 : " + (num1 + num2));
		System.out.println("두수 나눈 결과 : " + (num1 / num2));
        
		결과값 -->
		두수 합 : 26.0
		두수 나눈 결과 : 3.3333333333333335
int a = 10;
		int b = 3;
		
		System.out.println("두수 나눈 나머지 : " + (a % b));
		결과값 --> 두수 나눈 나머지 : 1

		// 자료형 변환 --> 명시적 형변환
		System.out.println("나눈 결과 : " + (a / b));
		결과값 --> 나눈 결과 : 3

		여기서 아래 처럼 바꿔주면
		System.out.println("나눈 결과 : " + (a / (double)b));
		결과값 --> 나눈 결과 : 3.3333333333333335
		소수점이 표시된다. 형변환할 선언된 변수 앞에 변경하고싶은 변수를 넣어준다.

		
		아래 처럼 num2가 실수형이지만 출력문 중 첫 번째 출력문은 소수점 없이 깔끔하게 표기하고 싶을때 변형하고 싶은 변수를 넣어주면 된다.
		int num1 = 20;
		double num2 = 6;
		
		System.out.println("두수 합 : " + (num1 + (int)num2));
		System.out.println("두수 나눈 결과 : " + (num1 / num2));
        
		결과값 -->
		두수 합 : 26 <-- 이 처럼 소수점이 사라진 것을 확인할 수 있다.
		두수 나눈 결과 : 3.3333333333333335

※입력문

 

컨트롤 + 시프트 + O
import java.util.Scanner; <-- 자동 입력 단축키

Scanner sc = new Scanner(System.in); <-- 해당 문을 사용하기 위해서는 스캐너를 불러오는 명령어를 입력해야 된다 위 참조!

 

▶정수
	import java.util.Scanner; <--- 스캐너 명령어 불러오기

	public class Sample03 {

	public static void main(String[] args) {
		
		int a; // 정수를 저장할 변수는 a
		
		Scanner sc = new Scanner(System.in); // 스캐너  문

		System.out.println("숫자를 입력하세요");
		a = sc.nextInt(); //숫자를 입력할 수 있는 명령어
			//실행 시 숫자를 입력하면 a라는 변수에 입력한 숫자가 입력된다.
		
		System.out.println("입력한 숫자는 : " + a);
			// 입력한 숫자가 맞는지 나온 후 프로그램 종료

★tip
코딩문장을 자동완성기능으로 사용할 시 컨트롤 + 스페이바 이용 단, 특정 상황에서

 

▶실수
		double b;
		
		Scanner sc = new Scanner(System.in);

		System.out.println("실수를 입력하세요");
		b = sc.nextDouble();
		
		System.out.println("입력한 실수는 : " + b);

		결과값 -->
		실수를 입력하세요
		21.5415 //직접 입력한 수
		입력한 실수는 : 21.5415
▶문자
		
		문자 입력 : qwe
		문자만 출력하기 때문에 오류가 날 수 있어 .charAt(0); 해당 명령어를 사용해준다. 여기서 숫자는 사용한 문자에 순번위치
		결과값은 q가 된다.

		char c; // 문자를 저장할 변수는 c
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("문자 입력 : ");
		
		c = sc.next().charAt(0); //.charAt는 원하는 위치에 단 하나의 문자 출력을 도와주는 명령어
		
		System.out.println("입력한 문자 :" + c);

		결과값 -->
		문자 입력 : qwe
		입력한 문자 :q
▶문자열

		String d; 
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("이름을 입력하세요 : ");
		d = sc.next(); //문자열이다 보니 next까지만 명령어를 입력하면 된다.
			     //sc.nextLine(); 으로도 사용이 가능
		
		System.out.println("안녕하세요!" + d + "님");

		출력값 -->
		이름을 입력하세요 : 홍길동
		안녕하세요!홍길동님

★복습
import java.util.Scanner; <-- 단축키를 이용해서 명령어 불러오기

Scanner sc = new Scanner(System.in); <-- 스캐너 명령어 필수 입력

sc.nextInt(); <-- 정수
sc.nextDouble(); <-- 실수
sc.nextLine(); <--문자열
sc.next().charAt(0); <-- 문자


☞퀴즈
아래 처럼 코딩하기

이름을 입력하세요 : 김정한
나이를 입력하세요 : 27
성별을 입력하세요 : m
전호번호를 입려하세요 : 010-5130-5274
===회원정보===
이름 : 김정한
나이 : 27
성별 : m
전화번호 : 010-5130-527


위 퀴즈에서는 변수는 총 4가지를 선언해줘야 된다.
☞풀이

package study02;

import java.util.Scanner;

public class Sample04 {

	public static void main(String[] args) {
		
		String name; //문자열
		int age; //정수
		char s; //문자
		String hp; //문자열
		
		Scanner sc = new Scanner(System.in);
		
		//아래는 입력 코딩
		
		System.out.print("이름을 입력하세요 : ");
		name = sc.next(); //문자열이니 next 사용
		
		System.out.print("나이를 입력하세요 : ");
		age = sc.nextInt(); //정수입력이라 nextInt 사용
		
		System.out.print("성별을 입력하세요 : "); // M /F 불대문?
		s = sc.next().charAt(0); //문자입력이니 next().charAt(0)을 사용
		
		System.out.print("전호번호를 입려하세요 : ");
		hp = sc.next(); //다른 방법도 있지만 현재과정에서는 단순하게 next를 이용
		
		//아래는 결과값 도출 코딩
		
		System.out.println("===회원정보===");
		
		System.out.println("이름 : " + name);
		
		System.out.println("나이 : " + age);
		
		System.out.println("성별 : " + s);
		
		System.out.println("전화번호 : " + hp);

★next 와 nextLine 차이점 (상황에 맞게 잘사용할 것!)

next로 설정시 엔터로 입력해 준 값을 저장해주고 넘어간다.
nextLine은 전에 next에서 값과 엔터값 까지 모두 저장하고 넘어가다 보니 nextLine 명령어는 그냥 넘어가 버리게 된다.
nextLine은 탭키, 엔터키, 스페이스바키 까지 모두 같이 인식을 한다.

★tip : 숫자 두개를 출력해야 되는 상황일때

		int num1, num2;
			
		System.out.print("숫자 두개를 입력하세요 : ");
		num1 = sc.nextInt();
		num2 = sc.nextInt();

☞퀴즈
아래 처럼 코딩하기
국어 점수 : 87
영어 점수 : 81
수학 점수 : 97
점수 총합 : 265
점수 평균 : 88.3
		int kr; //국어점수 - 정수
		int eng; //영어점수 - 정수
		int math; //수학점수 - 정수
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("국어 점수 : ");
		kr = sc.nextInt(); //정수라 nextInt 사용
		
		System.out.print("영어 점수 : ");
		eng = sc.nextInt();
		
		System.out.print("수학 점수 : ");
		math = sc.nextInt();
		
		System.out.println("점수 총합 : "+ (kr + eng + math));
		System.out.println("점수 평균 : "+ ((kr + eng + math)) / 3.0);
		//소수점 표기시 변형 변수를 해도 되지만, 직접 입력한 값을 소수점으로 표기해도
		//하지만 소수점이 너무 많아 탈락

 

★리펙토링 <-- 위 코딩을 더 효율성 있게 재코딩

		int kr, eng, math;
		int sum;
		double avg;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("국어 점수 : ");
		kr = sc.nextInt(); //정수라 nextInt 사용
		
		System.out.print("영어 점수 : ");
		eng = sc.nextInt();
		
		System.out.print("수학 점수 : ");
		math = sc.nextInt();
		
//		System.out.println("점수 총합 : "+ (kr + eng + math));
//		System.out.println("점수 평균 : "+ ((kr + eng + math)) / 3.0);
		//소수점 표기시 변형 변수를 해도 되지만, 직접 입력한 값을 소수점으로 표기해도 가능
		
		sum = kr+eng+math;
		avg = sum / 3.0;
		
		System.out.println("점수 총합 : " + sum);
		System.out.println("점수 평균 : " + avg);

		System.out.printf("소수 첫째짜리 : %.1f ", avg); //소수점 첫 째자리까지 표기시 print f문을 사용하고 %.1f를 활용하면 된다.

▶연산

 

int a = 10;
		
		System.out.println(a);
		//a가1증가된 값을 출력
		a = a + 1; //옆에 수식 처럼 a값에 1을 더해서 11을 만들수 있다.
		System.out.print(a);

		a += 1; //다른 방법으로는 이런식으로도 가능하다. 
			+= 오른쪽항의 값을 왼쪽에 대입해서 플러스
			-= 오른쪽항의 값을 왼쪽에 대입해서 마이너스
			*= 오른쪽항의 값을 왼쪽에 대입해서 곱하기
			/= 오른쪽항의 값을 왼쪽에 대입해서 나누기

★정리
 a += 1,    a = a + 1,   a++,   ++a
 a -= 1,    a = a - 1,   a--,   --a

 


▶논리연산(비교 연산)

 

>
<=
<
<=
==
!=


a와 b가 10 이상?(and - 곱리곱 연산)

a >=10 && b>=10
&&은 and연산

 

예)
		int a = 10, b = 20;
		boolean c;
		
		// a와 b가 10 이상?(and - 곱리곱 연산)
		
		System.out.println(a>=10 && b>=10);

a가 10이상이거나 b가 2이상? (or - 논리합 연산)
a>=10 || b>=20
||는 or연산

!->논리 부정 not 연산
!a

^ -> 배타적 논리합 XOR <-- 해당 연산은 코딩에서 잘 사용하지 않는다.
(두개가 다를 경우 true)
a>=10 ^ b>=20


결과값은 true / false가 나온다.

 

예)
			int a = 10, b = 20;
		
			System.out.println(a>b);


		결과값)
			false
예)
			int a = 10, b = 20;
			boolean c;
		
			c = b>=a;
		
			System.out.println(c);


		결과값)
			True

▶비트연산 - 2진수 1, 0

 

10진수 0~9

27 -> 2진수로 변환 (나눌수 있을때 까지 나누는 값)
값 : 11011 (2진수)

자바 코딩 시 아래 처럼 하면 값은 '11011' 2진수로 표기
System.out.println(Integer.toBinaryString(27));
System.out.println(Integer.toBinaryString(31));

System.out.println(27 & 31); // 1을 true 인식, 0을 false로 인식

첫 번째가 11011 값
두 번째가 11111 값
27


10을 2진수로 하면 1010 ~a 10
0000 1010    ~a  10
1111 0101    -> 음수 10진수
1000 1010    ->1의 보수  (숫자 첫 자리는 바뀌지 않는다.)
+          1
1000 1011    ->2의 보수
결과물 : -11

1의 보수 -> 1을 0으로 0을 1로
2의 보수 -> 1의 보수를 한 값 +1

0000 1010 -> 10
1111 0101 -> 1의 보수 처리된 결과물
+          1
1111 0110 -> 2의 보수 처리된 결과물

 

▶쉬프트 연산

		int a = 10;
		
		System.out.println(Integer.toBinaryString(a));
		System.out.println(Integer.toBinaryString(a<<2));
		
		System.out.println(a<<2); //두칸씩 왼쪽으로 민다.

		결과값 :
		1010 <-- 기존
		101000 <-- 두칸씩 밀린 결과물 
		40 <-- 최종

☞퀴즈 아래처럼 나오게 코드작성
두 자연수를 입력 :
472 <-(1) 입력한 자연수 첫 번째
458 <-(2) 입력한 자연수 두 번째
3776 <-(3)  첫 번째 수와 두번째 수 세번째 자리 수의 곱한 값
2360 <-(4)  첫 번째 수와 두번째 수 두번째 자리 수의 곱한 값
1888 <-(5)  첫 번째 수와 두번째 수 첫번째 자리 수의 곱한 값
216176 <-(6)    두 자연수의 곱한 값
		int a, b;
		int c, d , e;

		Scanner sc = new Scanner(System.in);
		
		System.out.print("두 자연수를 입력 : ");
		a = sc.nextInt();
		b = sc.nextInt();
		
		c = a * (b % 10); //b는 1의 자리
		d = a * (b / 10 % 10); //b는 10의 자리
		e = a * (b / 100); //b는 백의자리
		
		
		System.out.println(c);
		System.out.println(d);
		System.out.println(e);
		System.out.println(a*b);

▶삼황 연산 -> 조건식 결과에 따라 출력됨

조건식 ? 참일때 코드 : 거짓일 때 코드

★예)
//입력한 점수가 80점 이상이면 합격 아니면 불합격

 

int a;
		
		Scanner sc = new Scanner(System.in);

		System.out.print("점수를 입력하세요 : ");
		a = sc.nextInt();
		
		System.out.println(a>=80 ? "합격" : "불합격");
		a>=80이 조건식
		? <-- 참 또는 거짓인지
		"합격" true 인지 "불합격" false인지 문자열 입력
			


		이항/단항

		a+b

		!a

▶조건문

 

if문 기본 형식 --- 다채롭게 쓸 때 삼황연산 보다는 if문을 주로 사용하면 코딩이 더욱 깔끔하고 다채롭다.

if는 따로 ; 세미클론을 안 적는다.
if(조건식) {
 조건식이 참일 때 실행할 코드
} else {   //else는 생략도 가능하다. else 코드는 지워도 무방
조건식이 거짓일 때 실행할 코드
}

 


★if문을 통해 여러 조건을 내세우려고 할 때
예제) 입력한 점수가 80점 이상이면 A, 60점이상이면 C... 등등

 

if (조건식1) {
			    조건식1 참일 때 코드
		} else if(조건식2) {
				조건식2 참일 때 코드
		} else if(조건식3) {
				조건식3 참일 때 코드
		} else {
			모두 거짓일 때 코드
		}
★예)

			//입력한 점수가 80점이상이면 합격, 아니면 불합격
		
		int a;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("점수를 입력하세요 : ");
		a = sc.nextInt();
		
		if(a>=80) {
			System.out.println("합격");
		} else {
				System.out.println("불합격");

		}
★예) <-- 여러 조건을 내세울 때

			//입력한 점수가 80점이상이면 합격, 아니면 불합격
		
		int a;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("점수를 입력하세요 : ");
		a = sc.nextInt();
		
		if(a>=80) {
			System.out.println("A");
		} else if(a>=60) {
			System.out.println("B");
		} else {
			System.out.println("C");
		}


			만약 순서를 바꾼다면

				if(a < 80 && a>=60) {
					System.out.println("B");
				} else if(>=80) {
					System.out.println("A");
				} else {
					System.out.println("C");
				}

★퀴즈 - 짝수, 홀수 코드 작성 if문
int a;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("숫자를 입력하세요 : ");
		a = sc.nextInt();

		
		if(a % 2 == 0) {
			System.out.println("짝수");
		} else {
			System.out.println("홀수");
		}
		int a;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("숫자를 입력하세요 : ");
		a = sc.nextInt();
		
		
		if(a % 2 == 0 && a % 7 == 0) {
			System.out.println("짝수");
		} else {
			System.out.println("홀수");
		}
728x90
Comments