멀티캠퍼스 백엔드 과정 9일차-10일차 일부[6월 13일~14일] - JAVA

GoldenDusk·2023년 6월 13일
0

자바 언어의 이해

자바는 api를 공부해나가는 과정

  • 참고 사이트

Java Development Kit Version 17 API Specification

단어 뜻 정리

컴퓨터

  • 기계어(machine language) 0과 1로 이루어진 이진 코드
  • 사람이 사용하는 언어 : 자연어
  • 사람과 컴퓨터가 대화를 하기 위해서는 프로그래밍언어(다리)가 필요

프로그래밍 언어

  • 저급 언어 : 기계어에 가까운 언어(어셈블리)
  • 고급 언어 : 사람이 쉽게 이해 할 수 있는 언어
    • 소스 파일 ⇒ 컴파일(자바 : java.c) ⇒ 기계어 변환 ⇒ 기계어
  • 공학 : 사람들(누구나)의 삶의 대한 편의성을 증대시키기 위한 학문

객체

  • 컵, 마우스, 키보드, 에어컨, 화분..
  • 미세먼지, 초미세먼지, 빛, 소리

자바를 배워야 하는 이유

  • 자바는 플랫폼에 독립적임**(JVM)**
    • 자바 코드는 먼저 바이트코드로 컴파일되며 자바 가상 머신(JVM)이 있는 모든 시스템에서 실행할 수 있음
  • 자바는 객체지향 프로그래밍 언어
  • 독립 실행형 애플리케이션
    • 파일 프로세스를 추가하지 않고 별도의 컴퓨터 프로세스에서 실행되는 응용 프로그램
  • 웹 애플리케이션
    • 클라이언트에 의해 실행되는 클라이언트-서버 소프트웨어 응용 프로그램

메모장으로 자바 만들기

  • javac Hello. java를 하면 Hello.class가 생김

  • 기계어

  • java Hello를 누르면 자바 파일 실행 결과 창 뜸

자바 구성 요소

자바 동작 구조

자바 프로젝트의 기본 구조

  • jre가 없으면 실행이 안됨

자바 프로그램의 기본 구조

기본 구조

  • 자바 프로그램은 하나 이상의 클래스로 구성됨
  • 각 클래스의 프로그램 코드를 별도의 소스 파일에 저장하고 각 소스 파일명을 소스 파일에 정의된 클래스명과 동일하게 지정해야 함
    → 만약 이름이 다르면 컴파일 과정에서 오류 발생
    → 모든 자바 소스 파일의 확장자 : .java

패키지

  • 패키지는 기능을 기반으로 클래스를 구성하는 데 사용됨
  • 패키지문 : 클래스가 저장되는 네임스페이스
  • 패키지문을 생략하면 이름이 없는 기본 패키지에 클래스명만 선언됨
package javastudy;

클래스

  • class 키워드를 사용하여 클래스를 선언함
  • 클래스명은 대부분 첫 글자가 대문자로 시작함
  • 전체 클래스의 내용은 중괄호({ }) 안에 포함되어야 함

main() 메서드

  • main() 메서드 : 모든 자바 애플리케이션의 시작점이자 진입점임
  • 즉 자바 애플리케이션이 시작될 때마다 가장 먼저 호출되는 메서드임
  • 메서드명은 대부분 소문자로 시작함
  • 하나의 자바 프로그램에는 main() 메서드를 가진 클래스가 반드시 존재해야 함

처리문(statement)

  • 자바 프로그램의 동작을 명시하고 이러한 동작을 컴퓨터에 알려주는 데 사용되는 문장
  • 자바의 모든 처리문은 반드시 세미콜론(;)으로 끝나야 함
  • 프로그램을 실행하면 main() 메서드 안의 처리문이 순차적으로 실행

변수와 자료형

변수(Variable)

변수란

  • 컴퓨터 프로그램이 처리할 데이터를 저장하는 저장 위치
  • 메모리 위치의 이름
  • 저장된 값은 변경 가능
  • 즉, 변수는 특정 자료형의 값을 저장하는 메모리 공간 위치를 의미

변수 선언

자료형 변수명, 변수명; // 같은 자료형이면 ,로 여러 개의 변수 동시에 선언 가능

변수의 선언과 초기화

자료형 변수명 =;

변수 출력

int a= 20, b=30;
System.out.print(a +""+ b); //가능
System.out.print(a, b); //불가

변수의 유형(유효 범위에 따라)

  1. 전역 변수 (Global Variables):
    • 전역 변수는 어떠한 메서드나 블록 내에서도 선언되지 않고 클래스 레벨에서 선언된 변수
    • 전역 변수는 해당 클래스 내에서 어디서든 접근 가능
    • 프로그램 실행 도중에 생성되며, 프로그램이 종료될 때까지 유지
    • 전역 변수의 값은 해당 클래스의 모든 메서드에서 공유되므로 조심해서 사용
  2. 지역 변수 (Local Variables):
    • 지역 변수는 메서드, 생성자, 블록 내에서 선언되는 변수
    • 지역 변수는 선언된 블록 내에서만 유효하며, 해당 블록을 벗어나면 소멸됩니다.
    • 지역 변수는 해당 블록 내에서만 접근 가능하며, 다른 메서드나 블록에서는 직접 접근할 수 없습니다.
    • 지역 변수는 메서드가 호출될 때 생성되고, 메서드 실행이 완료되면 소멸됩니다.
  3. 매개 변수 (Parameters):
    • 매개 변수는 메서드나 생성자에 전달되는 값으로서, 메서드 내에서 사용되는 지역 변수
    • 매개 변수는 메서드나 생성자를 호출할 때 전달되는 값에 따라 초기화
    • 매개 변수는 해당 메서드나 생성자 내에서만 사용 가능하며, 메서드 외부에서는 직접 접근할 수 없다.
    • 매개 변수는 해당 메서드나 생성자의 실행 도중에 생성되고, 실행이 완료되면 소멸

변수명 생성 규칙

  • 영문자(대, 소문자), 숫자, 밑줄(_), 달러($)로만 구성 가능
  • 숫자로 시작 불가
  • 공백 포함 불가
  • 미리 정의된 키워드(=예약어) 사용 불가

상수(Constant)

상수란

  • 프로그램이 실행하는 동안 메모리에 저장된 데이터 변경 불가하고 반드시 선언과 동시에 초기화해야함
  • final 키워드
    • 고정 시켜 버림

    • 한 번 초기화되면 값을 변경 불가

    • 주로 변하지 않는 값이나 설정 값에 사용

      final int speed = 20;
    • 메서드나 클래스에 적용될 때

      메서드에 적용될 때:

      • final로 선언된 메서드는 하위 클래스에서 오버라이드(재정의)할 수 없다.

      • 즉, 하위 클래스에서 해당 메서드를 변경하거나 재정의할 수 없다.

      • 메서드의 동작을 불변하게 유지하고 싶을 때 사용

      • 상위 클래스의 메서드를 하위 클래스에서 재정의하지 못하도록 제한하는 역할

        클래스에 적용될 때:

      • final로 선언된 클래스는 상속될 수 없는 클래스

      • 다른 클래스에서 이 클래스를 상속하여 확장할 수 없다.

      • 클래스의 구현을 변경하지 못하도록 제한하는 역할

      • 보안, 안정성, 성능 등을 고려하여 확장을 막고자 할 때 사용

변수와 상수에 대해 알아둬야 할 것들

변수는 메모리 공간을 기억하는 용도로 사용

  • 카멜 표기법 : 첫 번째 단어는 소문자, 그 이후 새로운 단어들은 대문자로 시작
    • 가독성 증가
int _studentNameNumber = 10;

상수는 변하지 않는 값

  • 리터럴(literal)
    int num = 1;
    • 문자 그대로의 값
    • ex. 1 A
    • 변수에 대입하던 모든 숫자, 문자, 논리값(true, false) ⇒ 리터럴
    • 리터럴은 프로그램 시작 시. 특정 메모리 공간상수 풀(constant pool)에 자동 로딩
  • final 상수
    final double PI = 3.1415928168;
    final int MAX_SIZE = 100;
    • 프로그래머가 임의로 상수를 정의하여 사용할 수 있도록 자바에서 final 키워드를 사용하면 상수를 만들어 쓸 수 있다.
    • 상수의 이름 규칙
      • fianl 상수의 이름은 대문자를 이용해서 만든다.
      • _ 를 이용하여 네이밍을 한다.(스네이크 표기법)

자료형

  • 효율적으로 데이터를 사용하고 메모리를 아껴쓰기 위해 자료형 사용

정수형

  • 숫자
  • 상황에 따라서 데이터의 최대 크기를 정할 필요가 있다.
  • byte(1byte) - short(2byte) - int(4byte) 기본 - long(8byte)
  • 정수형+ 실수형 크기 byte기준
    • byte(1) - short(2) - int(4) - long(8) //정수 - float(4) - double(8)
  • 1byte = 8bit 255까지
    • 1byte ⇒ 양수로만 표현 1~256
    • 0을 포함 0, 1~255
    • 음수까지 표현 -128~1, 0, 1~127
  • 예제와 주석
package javastudy;

public class Ex01_VariableType
{

	public static void main(String[] args)
	{
		// 1. 숫자형 
		 byte num1 = 1; short num2 = 1; int num3 = 1; //기본 자료형 long num4 = 1;
		 
		 System.out.println(num1); 
		 System.out.println(num2);
		 System.out.println(num3);
		 System.out.println(num4);
	
	}

}
  • printf에서 받을 때 %d

문자형

  • char/2byte /
  • 유니코드(다양한 언어를 지원하는 코드 셋)
  • 아스키코드(128개, 영문자, 숫자, 특수문자)
  • 인코딩
    • ‘A' ==> 이진수로 바꾸면 0000 0000 0100 0001
  • 디코딩
    • 0000 0000 0100 0001 ==> 'A'
  • 예제
package javastudy;

public class Ex01_VariableType
{

	public static void main(String[] args)
	{
		// 전부 사람이 볼 수 있는 A로 바꿔서 출력함
		 char ch1='A'; 
		 char ch2=65; 
     char ch3 = 0x41; 
		 char ch4 = 0b00000001000001;
		 
		 System.out.println(ch1); 
		 System.out.println(ch2); 
		 System.out.println(ch3);
		 System.out.println(ch4);
		 
		// 3. 논리형 : 어떤 변수의 참, 거짓의 값을 나타내는데 사용 boolean/1byte
		
		boolean check1 = true;
		boolean check2 = false;
		
		boolean check3 = (1<2);
		
		System.out.println(check3);
	}

}
  • printf에서 받을 때 %c

논리형

  • 어떤 변수의 참, 거짓의 값을 나타내는데 사용 boolean/1byte
  • 예제
package javastudy;

public class Ex01_VariableType
{

	public static void main(String[] args)
	{
		boolean check1 = true;
		boolean check2 = false;
		
		boolean check3 = (1<2);
		
		System.out.println(check3);
	}

}

실수형

  • double, float 사용
  • 자료형이 다를 때 캐스팅
  • 실수형은 소수 부분이 있고 음숫값을 허용
  • 실수를 가지고 연산하는 건 컴퓨터가 오차가 생김 100 ⇒ 9. 999999986
    • 실수는 정확한 값이 아니고, 수식에 의해 저장되는 근사치

    • 예제

      package javastudy;
      
      public class DoubleError1
      {
      
      	public static void main(String[] args)
      	{
      		double num1 = 1.0000001;
      		System.out.println(num1);
      		double num2 = 2.0000001;
      		System.out.println(num2);
      		double result = num1 + num2;
      		System.out.println(result);
      		
      		double dNum = 0.0;
      		for(int i=0; i<1000; i=i+1) {
      			dNum = dNum + 0.1;
      		}
      		System.out.println(dNum);  //실수를 가지고 연산하는 건 컴퓨터가 오차가 생김
      		// 실수는 정확한 값이 아니고, 수식에 의해 저장되는 근사치
      	}
      
      }

  • 기본값
    • float : 0.0f, double:0.0d

    • float pi = 12.25f; (뒤에 f를 붙여주는 게 가독성이 좋음)

      final double PI = 3.14;
      		int r = 20;
      		int result = (int)(r*r*PI); // int로 캐스팅 PI가 더 크기에 result에 맞춰서 int 타입으로 캐스팅
      		System.out.println(result);

소수를 표현하는 방식

  • 고정 소수점
    • 부동 소수점과는 달리 소수점 위치가 고정되어 있는 표현 방식

      • 소수점 이하 자리의 수를 고정된 비트 수
    • 소수의 표현 범위나 정밀도를 제어할 수 있다는 장점

    • 큰 수나 작은 수를 표현하는 데는 한계

    • 예시

      • 16비트 고정 소수점: 부호(1비트) + 정수부(7비트) + 소수부(8비트)
      • 예시 값: 0.75
      • 이진 표현: 0 0000000 11000000
        • 부호: 0 (양수)
        • 정수부: 0000000 (0)
        • 소수부: 11000000 (0.75)
    • 코드

      float floatValue = 1.234f;
      System.out.println(floatValue); // 출력: 1.234
  • 부동 소수점
    • 부동 소수점은 소수점을 고정된 위치가 아니라 "부동"시키며, 실수를 정수 부분과 소수 부분으로 분리하여 표현

    • 0.1 ⇒ 1.0(가수부) X 10110^{-1}(지수부)

    • EX.

      • float(4byte = 8*4 =32bit) : 부호(1bit) + 지수부(8) + 소수부(23) = 32bit
      • double(8byte = 8*8=64bit) : 부호(1bit) + 지수부(11) + 소수부(52) = 64bit
    • 예시

      • 32비트 부동 소수점(float): 부호(1비트) + 지수부(8비트) + 소수부(23비트)
      • 예시 값: 1.234
      • 이진 표현: 0 01111111 00111011010001111010111
        • 부호: 0 (양수)
        • 지수부: 01111111 (127)
        • 소수부: 00111011010001111010111 (0.234)
    • 코드

      import java.math.BigDecimal;
      
      BigDecimal fixedValue = new BigDecimal("0.75");
      System.out.println(fixedValue); // 출력: 0.75

예제(자료형 사용해보기)

package javastudy;

public class Datatype01
{

	public static void main(String[] args)
	{
		int a = 10;
		short s = 2;
		byte b = 6;
		long l = 125362133223L;
		
		System.out.println(a);
		System.out.println(s);
		System.out.println(b);
		System.out.println(l);

	}

}

메모리에 저장 법

Q. 컴퓨터에서 데이터를 어떻게 메모리에 저장될까?

💡 A. `int num = 1;` 1. 자료형 int 메모리에 **주소 4개를 확보**해서 공간을 비운 후 2. 십진수 1을 **이진수로 변경**해서 이 공간에 저장 3. 이 공간(주소)을 **변수 num에 기억**시킨다.

System.out.println(num);
1. num 변수의 값은 어디..?(메모리 어디에 적어뒀는지 찾아보자!)
2. 찾아낸 메모리의 시작 위치로 찾아감
3. num 변수는 int형이니까 4바이트를 읽는다.
4. int형이니까 10진수로 바꿔서 숫자로 알려준다.

printf의 형식 지정자

일반적인 형식 지정자

  • %d: 정수를 10진수로 출력
  • %o: 정수를 8진수로 출력
  • %x 또는 %X: 정수를 16진수로 출력 (소문자 또는 대문자)
  • %f: 실수를 소수점 형식으로 출력
  • %e 또는 %E: 실수를 지수 형식으로 출력 (소문자 또는 대문자)
  • %s: 문자열을 출력
  • %c: 문자를 출력
  • %b: 논리값을 출력 (true 또는 false)
  • %n: 줄바꿈 문자를 출력
  • "%+,d\n” : 부호도 보이고 자동으로 ,도 넣어주는 형식 지정자
class Main {
    public static void main(String[] args) {
        System.out.printf("%15s%,15d%+,15d\n", "Seoul", 10312545, 91375);
        System.out.printf("%15s%,15d%+,15d\n", "Pusan", 3567910, 5868);
        System.out.printf("%15s%,15d%+,15d\n", "Incheon", 2758296, 64888);
        System.out.printf("%15s%,15d%+,15d\n", "Daegu", 2511676, 17230);
        System.out.printf("%15s%,15d%+,15d\n", "Gwangju", 1454636, 29774);
    }
}

사용법

package ch2;

class PrintfEx1 {
	public static void main(String[] args) {
		byte  b = 1;
		short s = 2;
		char  c = 'A';

		int  finger = 10; 
		long big = 100_000_000_000L;       
		long hex = 0xFFFF_FFFF_FFFF_FFFFL ;  // 0x는 16진수

		int octNum = 010;      
		int hexNum = 0x10;      // 16
		int binNum = 0b10;      // 0b : 2진수
		String name = "ju";

		System.out.printf("b=%d%n", b);
		System.out.printf("s=%d%n", s);
		System.out.printf("c=%c, %d %n", c, (int)c); // (int) c : 정수 숫자로 바꿔서 넣어라
		System.out.printf("finger=[%5d]%n",  finger); // [%5d] 5자리로 표현하라 => 즉, 공백 3, 숫자 2
		System.out.printf("finger=[%-5d]%n", finger); // [%-5d] 뒤에 공백 3개
		System.out.printf("finger=[%05d]%n", finger); // [%05d] 공백 대신 0으로 채움, -를 하면 숫자가 꼬임
		System.out.printf("big=%d%n", big);
		System.out.printf("hex=%#x%n", hex); // %#x는 부호 없는 정수 값을 16진수로 표현하고, 접두사 "0x"를 함께 출력
		System.out.printf("octNum=%o, %d%n", octNum, octNum); //%o 부호 없는 정수 값을 8진수로 표현하는데 사용  
		System.out.printf("hexNum=%x, %d%n", hexNum, hexNum); // %x  부호 없는 정수 값을 16진수로 표현
		System.out.printf("binNum=%s, %d%n", Integer.toBinaryString(binNum), binNum);  
		System.out.printf("name : %s%n", name); //%s는 문자열 출력
	}
}

자바 용어

  • void : 반환 값이 없다.
  • printf : 첫 번째 매개변수는 출력 형식을 지정하는 문자열

이클립스

단축키

  • 패키지 선택 후 ctrl + n 선택시 class 등 선택 가능
  • 주석 처리할 범위를 드래그 후 ctrl + shift + / 하면 전체 주석 처리
  • Sysout 후 ctrl + space System.out.println(); 자동완성
  • ctrl+alt에 방향키를 누르면 그 방향에 있는 걸 복사
  • ctrl + shift + F 자동 줄바꿈
  • 전체 묶어서 받을 수 있음

자바 입력 받기

입력받은 것으로 결과 출력하기

package javastudy;

import java.util.Scanner; //입력 가능하게 만들어주는 것

public class FinalUse
{

	public static void main(String[] args)
	{
		final int MAX_NUM = 100;
		final int MIN_NUM;
		MIN_NUM=60;
		
	
		Scanner input = new Scanner(System.in); //입력을 받아서 작업할 수 있는 공간을 받음
		System.out.println("학생 점수 입력:");
		int myScore = input.nextInt(); //정수로 받아서 저장함
		
		if(myScore < MIN_NUM) {
			System.out.println("넌 F야!");
		}
		else {
			System.out.println("통과!");
		}
	}

}

기본 논리식

  • 기본 논리 예제
package javastudy.day02;

import java.lang.System;

public class Calculator
{
	public static void main(String[] args) {
	int x = 1;
	int y = 2;
	
	int result = x+y;
	
	System.out.printf("x = %d y= %d result = %d",x, y, result);
	
	boolean result1;
	result1 = (x==20);
	System.out.println(result1);
	
	result1 = (x!=20);
	System.out.println(result1);
	
	result1=(x>20);
	System.out.println(result1);
	
	result1=(x>0 && x<20);
	System.out.println(result1);
	
	result1=(x<0 ||x>200);
	System.out.println(result1);
	
	
	}
}

형변환

자동 형변환

설명

  • 자동으로 타입 변환이 일어난다. 값의 허용범위가 작은 타입이 허용범위가 큰타입으로 내입될 때 발생한다.
  • 기본타입의 허용범위 순서 : byte < short , char < int < long <float <double
  • 예) byte byteValue = 10; int intValue = byteValue;
    • 자동타입 변환, 작은게 큰거 안으로 들어가기 때문이다
    • 무조건 실수 > 정수타입
  • 자동타입에서 예외상황
    • char charValue1 = byteValue;
    • char는 허용범위는 음수를 포함하지 않고, byte타입은 음수를 포함하기 때문이다.

예제

* 1. 자동 타입 변환 : 자동으로 타입 변환이 일어난다. 값의 허용범위가 작은 타입이 허용범위가 큰타입으로 내입될 때 발생한다. -
 * - 기본타입의 허용범위 순서 : byte < short , char < int < long <float <double
 * -) byte byteValue = 10;
 *         int intValue = byteValue;
 * //자동타입 변환, 작은게 큰거 안으로 들어가기 때문이다.
 * 
 */
public class CastingEx
{

	public static void main(String[] args)
	{
		long longValue = 50000000000L;
		float floatValue = longValue; //long이 float보다 작기 때문에 자동 형변환 가능
		double doubleValue = longValue; //long이 double보다 작기 때문에 자동 형변환 가능
		
		System.out.println(longValue+" "+ floatValue + " " + doubleValue);
		
		char charValue = 'A';
		int exchar = charValue;
		System.out.println(exchar);
		
		byte byteValue = 65;
		/*
		 * char charValue1 = byteValue; 
		 * - 자동타입에서 예외상황 : char는 허용범위는 음수를 포함하지 않고,  byte타입은 음수를 포함하기 때문이다.
		 */
	}

}

강제 형변환

설명

  • 큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환이 안된다.
  • 타입 캐스팅 연산자 : ()
  • 작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용범위 타입
    • int => byte : 허용범위를 넘어가면 허용범위 안에 수로 바뀜
      • ex. int var1 = 128; byte var2 = (byte) var1;
      • 128은 넣을 수 없는 값이라 -128로 출력이 됨
      • byte의 허용 범위 : -128~127
    • long => int
    • int => char
    • 실수 => 정수

예제

package javastudy.day02;

/*2. 강제 타입 변환 : 큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환이 안된다.
 *  타입 캐스팅 연산자 : ()
 * 
 *  작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용범위 타입
 *  int => byte
 *  long => int
 *  int => char
 *  실수 => 정수
 */
public class CastingEx1
{

	public static void main(String[] args)
	{
		int var1 = 128;
		byte var2 = (byte) var1;
		//128은 넣을 수 없는 값이라 -128로 출력이 됨 허용 byte의 허용 범위 : -128~127 
		// 허용 범위 외에는 허용 범위 숫자로 바뀜
		System.out.println(var2); 
		
		long var3 = 300;
		int var4 = (int)var3;
		System.out.println(var4);
		
		int var5 =  65;
		char var6 = (char)var5;
		// 문자로 바뀜
		System.out.println(var6);
		
		double var7 = 3.14;
		int var8 = (int)var7; 
		// 소수부는 날라감
		System.out.println(var8);
	}

}

문자열 형변환

설명

  • String을 그 외의 것으로 형 변환 하거나 반대로 한거나
  • 문자열을 기본타입으로 변경하는 경우
    • byte value = Byte.parseByte(str);
    • short value1 = Short.parseShort(str1);
  • 기본타입의 값을 문자열로 변경하는 경우
    • String.valueOf( 기본타입값);

예제

package javastudy.day02;

/*
 * String => byte String => short String => int String => long String => float
 * String => double String => boolean
 */
public class PrimitiveStringCoversionEx
{

	public static void main(String[] args)
	{
		String str = "10";
		byte value = Byte.parseByte(str);
		System.out.println((str + 10) + " " + (value + 10)); // 1010 20

		String str1 = "200";
		short value1 = Short.parseShort(str1);
		System.out.println((str1 + 10) + " " + (value1 + 10)); // 20010 210

		String str2 = "3000";
		int value2 = Integer.parseInt(str2);
		System.out.println((str2 + 10) + " " + (value2 + 10)); //300010 3010
		
		String str3 = "400000000";
		long value3 = Long.parseLong(str3);
		System.out.println((str3 + 10) + " " + (value3 + 10)); //40000000010 400000010
		
		String str4 = "12.345";
		float value4 = Float.parseFloat(str4);
		System.out.println((str4 + 10) + " " + (value4 + 10)); //12.34510 22.345001
		
		String str5 = "12.345";
		double value5 = Double.parseDouble(str5);
		System.out.println((str5 + 10)+ " " + (value5 + 10)); //12.34510 22.345
		
		String str6 = "true";
		boolean value6 = Boolean.parseBoolean(str6);
		System.out.println((str6 + 10) + " " + (value6)); //true10 true
		
		// 반대로 기본타입의 값을 문자열로 변경하는 경우, String.valueOf( 기본타입값);
		// String str7 = String.valueOf(기본타입값);
		
		String str7 = String.valueOf(value6);
		String str8 = String.valueOf(3.14);
		
		System.out.println(str8 + 10 + "문자열로 변환되었습니다.");
	}
}

6월 13일에 한 것

정올

  • 단계별 예제 출력 예제 풀기
  • 총체적인 예제 있는 것 5가지 코드 정리
// 1번 문제
class Main {
    public static void main(String[] args) {
        System.out.println("My name is Hong");
    }
}

// 2번 문제
class Main {
    public static void main(String[] args) {
        System.out.print("My hometown\nFlowering mountain");
    }
}

//3번 문제
class Main {
    public static void main(String[] args) {
        System.out.println("TTTTTTTTTT");
        System.out.println("TTTTTTTTTT");
        System.out.printf("%6s\n", "TT");
        System.out.printf("%6s\n", "TT");
        System.out.printf("%6s", "TT");
    }
}

//4번 문제
class Main {
    public static void main(String[] args) {
        System.out.printf("%s%3d\n", "kor", 90);
        System.out.printf("%s%3d\n", "mat", 80);
        System.out.printf("%s%4d\n", "eng", 100);
        System.out.printf("%s%4d\n", "sum", 270);
    }
}

//5번 문제
class Main {
    public static void main(String[] args) {
        System.out.printf("%15s%,15d%+,15d\n", "Seoul", 10312545, 91375);
        System.out.printf("%15s%,15d%+,15d\n", "Pusan", 3567910, 5868);
        System.out.printf("%15s%,15d%+,15d\n", "Incheon", 2758296, 64888);
        System.out.printf("%15s%,15d%+,15d\n", "Daegu", 2511676, 17230);
        System.out.printf("%15s%,15d%+,15d\n", "Gwangju", 1454636, 29774);
    }
}
  • 정올 출력문제 10개 정리
// 1. 연습문제 1
class Main{
    public static void main(String[] args){
        int a = 10;
        char b = 65;
        System.out.printf("a = %d\nb = %c",a, b);
    }
}

//2. 자가진단 1
class Main {
    public static void main(String[] args) {
        int a = -100;

        System.out.printf("%d", a);
    }
}

//3. 연습문제 2
class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        System.out.printf("%d %d",b, a);
    }
}

//4. 자가진단 2 
class Main {
    public static void main(String[] args) {
       int a = -1;
       int b = 100;

       System.out.printf("%d\n%d", a, b);
    }
}

//5. 연습문제 3
class Main {
    public static void main(String[] args) {
        int numberA = 10;
        int numberB = 20;

        System.out.printf("%d + %d = %d\n", numberA, numberB, numberA+numberB);

        numberA = 30;
        numberB = 40;

        System.out.printf("%d + %d = %d\n", numberA, numberB, numberA+numberB);
          }
        }

// 6. 자가진단 3 
class Main {
    public static void main(String[] args) {
        int numberA = 55;
        int numberB = 10;

        System.out.printf("%d - %d = %d\n", numberA, numberB, numberA-numberB);

        numberA = 2008;
        numberB = 1999;

        System.out.printf("%d - %d = %d\n", numberA, numberB, numberA-numberB);
    }
        }

// 7. 연습문제 4
class Main{
    public static void main(String[] args){
        final double PI = 3.140000;
        int radius = 5;
        int a = 2;

        double circumference = radius* 2 * PI;
        double area = radius * radius * PI;

        System.out.printf("원주 = %d * %d * %f = %f\n", radius, a, PI, circumference);
        System.out.printf("넓이 = %d * %d * %f = %f", radius, radius, PI, area);

    }
}

// 8. 자가진단4
class Main{
    public static void main(String[] args){
       int weight = 49;
       double percentage = 0.268300;

       System.out.printf("%d * %f = %f", weight, percentage, weight*percentage);

    }
}

9. 연습문제 5
	class Main{
    public static void main(String[] args){
       System.out.println("전체 7자리로 맞추고 소수 4자리까지 출력");
       System.out.printf("x = %7.4f\n", 1.234); //7자리.소수자리
       System.out.printf("y = %7.4f\n", 10.3459);
       System.out.println();
       System.out.println("소수 2자리까지 출력(반올림)");
       System.out.printf("x = %.2f\n", 1.234); //7자리.소수자리
       System.out.printf("y = %.2f", 10.3459);

    }
}

10. 자가진단 5
class Main {
    public static void main(String[] args) {
        double yd = 91.44;
        double in = 2.54;

        System.out.printf(" 2.1yd = %.1fcm\n", 2.1*yd);
        System.out.printf("10.5in =  %.1fcm", 10.5*in);
    }

회고

오늘은 자바 문법 했다. 학교에서 지겹게 하던거 보니까 반갑기도 하고 신기했다.
하지만 자바은 뒤에 갈 수록 어려워져서 빠르게 논리적인 사고를 할려면 많이 문제 풀어봐야 할 듯
정올도 열심히 사용해보자 기초하기에는 제일 적절한 듯.. 다음주부터는 알고리즘이랑 CS도 다시 공부
시작해야겠다.. CS는 정보처리기사 실기 준비할 겸해서 미리미리 하면 될 듯
주말에는 아르바이트 풀타임 해서 힘들지만 5달만 힘내보자!!!

profile
내 지식을 기록하여, 다른 사람들과 공유하여 함께 발전하는 사람이 되고 싶다. gitbook에도 정리중 ~

0개의 댓글