organize/자바

자바 처음부터 다시 시작하기 2

001cloudid 2024. 4. 10. 16:53
728x90

두 변수 값 바꾸기

		//두 변수 값 교환
		int x = 10;
		int y = 20;
		
		x = y; 
		y = x;
		
		System.out.println(x);
		System.out.println(y);
		
		int a = 10;
		int b = 20;
		int temp;
		
		temp = a;
		a = b;
		b = temp;
		
		System.out.println("a = " + a);
		System.out.println("b = " + b);

 

값의 타입

		//값의 타입
		//값(data) : 문자(char), 숫자(정수(byte, short, int, long), 실수(float, double)), 논리(boolean) <- 기본형
		
		//변수의 타입 : 기본형(Primitive type), 참조형(Reference type)
		//기본형 : boolean, char, byte, short, int, long, float, double
		//		  실제 값을 저장 
		//참조형 : 기본형을 제외한 나머지(String, System 등)
		//		  메모리 주소를 저장(4 byte 또는 8 byte)
		Date today; //참조형 변수 today를 선억
		today = new Date(); //today에 객체의 주소를 저장
		//참조형 변수는 객체의 주소를 저장한 것

 

기본형 종류와 범위

		//기본형의 종류와 크기
		//논리형(boolean) : true와 false 중 하나의 값을 갖고 있으며, 조건식과 논리적 계산에 사용

		//문자형(char) : 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있음. 여러문자열은 String을 사용

		//정수형 : 정수 값을 저장하는 데 사용
		//byte : 이진 데이터를 다루는데 사용
		//short : c언어와 호환을 위해 추가됨(단 잘 사용안됨)
		//int : 정수 값을 사용할 때 주로 사용됨
		//long : 아주 큰 정 수 값을 저장할 때 사용

		//실수형 : 실수 값을 저장하는 데 사용
		//float
		//double
		
		/*
		 * 			1		2		4		8		(단위 byte)
		 * 논리형  boolean	
		 * 문자형			  char
		 * 정수형  byte	  short		int		long
		 * 실수형						float	double
		 * ※ 1bit = 2진수 1자리, 1byte = 8bit
		 */
		
		//부호 있는 정수의 범위 : -2^(n-1) ~ 2^(n-1) -1 ※정수 타입
		//부호 없는 정수의 범위 : 0 ~ 2^n-1 ※char의 경우 0 ~ 2^16-1 => 0~65535
		
		
		//실수형 정밀도(오차없는 자리수)
		//float 7자리
		//double 15자리

 

printf()

		//println()의 단점
		//1) 출력 형식을 지정할 수 없음 : 실수의 자리수를 조절할 수 없음 - 소수점 n자리만 출력하려면
		System.out.println(10.0/3);
		
		//2) 출력이 10진수로만 출력됨
		System.out.println(0x1A);
		
		//println의 단점을 보완 => printf() : 출력형식을 지정할 수 있음
		System.out.printf("%.2f", 10.0/3);
		//"%.2f" -> 소수점 둘째자리
		System.out.printf("%d", 0x1A);
		//"%d" -> 10진수
		System.out.printf("%X\n", 0x1A);
		//"%X" -> 16진수
		
		//printf() 지시자
		//%b : Boolean 형식으로 출력
		//%d : 10진(decimal) 정수의 형식으로 출력
		//%o : 8진(octal) 정수의 형식으로 출력
		//%x, %X : 16진(hexa-decimal) 정수의 형식으로 출력
		//%f : 부동 소수점(floating-point)의 형식으로 출력
		//%e, %E : 지수(exponent) 표현식의 형식으로 출력
		//%c : 문자(character)로 출력
		//%s : 문자열(string)로 출력
		System.out.printf("age:%d year:%d\n", 24, 2024);
		
		System.out.println();
		//정수를 10진수, 8진수, 16진수로 출력
		// %n == \n 개행문자 
		System.out.printf("%d%n", 15); //10진수
		System.out.printf("%o%n", 15); //8진수
		System.out.printf("%x%n", 15); //16진수
		System.out.printf("%X%n", 15); //16진수
		System.out.printf("%s%n", Integer.toBinaryString(15)); //2진수 ※2진수로출력하는 지시자는 없음
		
		System.out.println();
		
		//8진수와 16진수에 접두사 붙이기 #
		System.out.printf("%#o%n", 15);
		System.out.printf("%#x%n", 15);
		System.out.printf("%#X%n", 15);
		
		System.out.println();
		
		//실수 출력을 위한 지시자 %f, 지수형식 %e, 간략한 향식 %g
		float f = 123.4567890F;
		System.out.printf("%f%n", f); //소수점아래 6자리(정밀도에 의해서=>따라서 double을 자주 사용)
		System.out.printf("%e%n", f); //지수형식
		System.out.printf("%g%n", 123.456789); //간략한 형식
		System.out.printf("%g%n", 0.000000001); //간략한 형식
		
		System.out.println();
		
		System.out.printf("[%5d]%n",10);
		System.out.printf("[%-5d]%n",10); //왼쪽 정렬
		System.out.printf("[%05d]%n",10);
		
		System.out.println();
		
		//%전체자리.소수점 아래자리f
		double d = 123.12345;
		System.out.printf("%14.10f%n", d);
		
		System.out.println();
		
		System.out.printf("[%s]%n", "github.com/mystory001");
		System.out.printf("[%30s]%n", "github.com/mystory001");
		System.out.printf("[%-30s]%n", "github.com/mystory001");
		System.out.printf("[%.10s]%n", "github.com/mystory001");
//		System.out.printf("[%-.10s]%n", "github.com/mystory001"); 이건 오류남

 

Scanner

		//Scanner
		//화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
		Scanner scanner = new Scanner(System.in);
		//System.in => 화면입력
		
		String input = scanner.nextLine();
		int num = Integer.parseInt(input); //문자열을 숫자로 변환
		//숫자 -> 문자열 : 숫자 + ""
		//문자열 -> 숫자 : Integer.parseInt();

 

		Scanner scanner = new Scanner(System.in);
		
//		int num1 = scanner.nextInt();
//		int num2 = scanner.nextInt();
//		System.out.println(num1);
//		System.out.println(num2);
		
		String input = scanner.nextLine();
		int num = Integer.parseInt(input);
		
		System.out.println(num);

 

 

오버플로우

 

		//최솟값 - 1 => 최대값
		//최댓값 + 1 => 최솟값
		
		//10진수
		//0 ~ 9 ↔ 0 ~ 10^1-1
		//0 ~ 99 ↔ 0 ~ 10^2-1
		//0 ~ 999 ↔ 0 ~ 10^3-1
		//...
		
		//2진수
		//0 ~ 1 ↔ 0 ~ 2^1-1
		//0 ~ 11 ↔ 0 ~ 2^2-1
		//0 ~ 111 ↔ 0 ~ 2^3-1
		//...
		
		//n bit 표현할 수 있는 정수의 개수는 0 ~ 2^n - 1 (부호없는경우)

 

타입 간 변환

		//타입간의 변환
		//1) 문자와 숫자간의 변환(문자 '0'을 더하거나 빼줌)
		//3(숫자) +'0'(문자) -> '3'(문자)
		//cf) 문자 -> 숫자
		//'3'-'0' -> 3
		
		//2) 문자열로의 변환
		//3(숫자) -> "3"(문자열)
		//3 + ""(빈문자열) -> "3"
		//'3'(문자) -> "3"
		//'3' + ""(빈문자열) -> "3"
		
		//3) 문자열을 숫자로 변환
		//"3"(문자열) -> 3(숫자)
		//Integer.parseInt("3") -> 3
		
		//"3.14" -> 3.14
		//Double.parseDouble("3.14") -> 3.14
		
		//"3" -> '3'
		//"3".charAt(0) -> '3'
		
		String str = "3";
		System.out.println(str.charAt(0) - '0'); //숫자
		// == System.out.println(3.charAt(0) - '0');
		System.out.println('3' - '0' + 1);
		System.out.println(Integer.parseInt("3")+1);
		System.out.println("3" + 1);
		System.out.println(3 + '0');

 

728x90