Part01 - begin

uglyduck.dev·2020년 9월 27일
0
post-thumbnail
post-custom-banner

Ex01_HelloJava

package com.mywork.ex;			// 패키지 : 최소 3수준 유지

public class Ex01_Hellojava {	// 클래스 (소스파일의 이름과 같다!)
	public static void main(String[] args) {	// main 메소드
		System.out.println("Hello Java");
		// 주석 : C와 같은 방법으로 처리(// , /* */)
		// 실행 : Ctrl + F11
	}
}

Ex02_literal

package com.mywork.ex;

public class Ex02_literal {
	public static void main(String[] args) {
		// 자동 완성
		// Ctrl + SpaceBar
		// sysout 을 입력한 뒤 Ctrl + SpaceBar를 누르면 System.out.println() 자동 완성
		
		// 1. 문자는 홑따옴표('')
		System.out.println('A');
		System.out.println('한');
		
		// 2. 문자열은 쌍따옴표("")
		System.out.println("Hello Java");
		
		// 3. 정수나 실수
		System.out.println(100);
		System.out.println(3.141592);
		
		// 4. 논리값
		System.out.println(true);
		System.out.println(false);
	}
}

Ex03_sysout

package com.mywork.ex;

public class Ex03_sysout {
	public static void main(String[] args) {
		// 1. 줄바꿈
		System.out.println();
		
		// 2. 숫자끼리 + 연산자 : 산술 연산자
		System.out.println(1+1);
		System.out.println(1.5 + 1);
		
		// 3. 문자열끼리 + 연산자 : 연결 연산자
		System.out.println("Hello" + "Java");
		
		// 4. 숫자와 문자열의 + 연산 : 연결 연산자
		System.out.println(100 + "원");
		System.out.println(100 + 100 + "원");
		System.out.println("$" + 100);
		System.out.println("$" + 100 + 100);
		
		// 5. 이스케이프 문자
		// 1) 줄 바꿈 : \n
		// 2) 간격(탭) : \t
		// 3) ' 출력 : '\
		// 4) " 출력 : "\
	}
}

Ex04_PrimitiveType

package com.mywork.ex;

public class Ex04_PrimitiveType {
	public static void main(String[] args) {
		/*
		 * 기본자료형(primitive type)
		 *   1. 정수형
		 *     1) byte
		 *       (1) 크기 : 1바이트(8비트)
		 *       (2) 개수 : 2의 8제곱(256개)
		 *       (3) 범위 : -128 ~ 127 (-2의 7제곱 ~ 2의 7제곱 - 1)
		 *     2) short
		 *       (1) 크기 : 2바이트
		 *       (2) 개수 : 2의 16제곱 (65,636개)
		 *       (3) 범위 : -32,768 ~ 32,767
		 *     3) int
		 *       (1) 크기 : 4바이트
		 *       (2) 개수 : 2의 32제곱 (4,294,967,296개)
		 *       (3) 범위 : -2,147,483,648 ~ 2,147,483,647
		 *     4) long
		 *       (1) 크기 : 8바이트
		 *       (2) 개수 : 2의 64제곱 (18,446,744,073,709,551,616개)
		 *       (3) 범위 : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807         
		 *     5) 100억 : 10000000000 처리를 정상적으로 하려면
		 *                10000000000L 이라고 표기해야 한다. (int 범위를 벗어나는 값은 접미사 L 표기)
		 *     6) 만약 long형으로 처리가 안 되는 숫자는 BigInteger 클래스를 이용해서 처리한다.             
		 */
		
		/*
		 * 변수 선언
		 *   1. 아무데서나 선언할 수 있다.
		 *   2. 변수명은 첫 글자를 소문자로 하고, camel case 방식을 따른다.
		 *   	(각 단어의 첫 글자만 대문자로 하고, 나머지는 소문자로 한다.)
		 *   	예 : myAge
		 *   3. 영문, 숫자, 밑줄(_), 한글이 가능하다.
		 */
		
		// 코드 복사 : 커서를 두고 Ctrl + Alt + ↓
		// 코드 삭제 : 커서를 두고 Ctrl + d
		
		byte var1 = 127;
		short var2 = 32767;
		int var3 = 210000;
		long var4 = 10000000000L;
		
		System.out.println(var1);
		System.out.println(var2);
		System.out.println(var3);
		System.out.println(var4);
		
		/*
		 * 2. 실수형
		 *  1) float
		 *      (1) 크기 : 4바이트
		 *      (2) 구성 : 부호 + 지수 + 소수
		 *      (3) 범위 : -1.4E-45 ~ (부호:-, 지수E-45 10의 -45제곱)
		 *  2) double
		 *      (1) 크기 : 8바이트
		 *      (2) 범위 : -4.0E-324 ~ 
		 *  3) 모든 실수형은 오차가 있다.     
		 */
		float var5 = 3.14F;		// 굳이 float을 사용하려면 숫자 뒤에 접미사 F 표시
		double var6 = 3.14;
		
		System.out.println(var5);
		System.out.println(var6);
		
		/*
		 * 3. 문자형
		 * 	1) char
		 *      (1) 크기 : 2바이트 (C의 char는 1바이트)
		 *      (2) 문자의 크기
		 *      	- 영문 : 1바이트
		 *      	- 한글 : 2바이트 // 한글이 사용가능하기 때문에 2바이트로.
		 *  2) 코드
		 *      (1) ASCII : 1바이트 영문 표준 코드 (C언어)
		 *      (2) UNICODE : 2바이트 국제 표준 코드 (JAVA언어)
		 */
		
		char ch1 = 'A';	
		char ch2 = '한';
		
		System.out.println(ch1 + ch2); // char 문자는 코드 연산 시 숫자로 인식.
		System.out.println("" + ch1 + ch2); // 문자열을 섞어서 출력하면 된다.
		
		/*
		 * 4. 논리형
		 * 	 1) boolean
		 * 		(1) 참 : true
		 * 		(2) 거짓 : false
		 * 		(3) 관계 연산자, 논리 연산자의 결과
		 * 		(4) 변수명 : is 로 시작하는 것이 일반적
		 */
		boolean isPositive;
		isPositive = true;
		if(isPositive) {
			System.out.println("양수이다");
		}
		
		
		/*
		 * 5. 문자열
		 *   1) String
		 *      (1) 참조 자료형이다.
		 *      (2) 값을 저장하지 않고, 주소(참조)를 저장하는 자료형이다.
		 *      (3) 사용 방법
		 *      	String str1 = "Hello";
		 *      	String str2 = new String("Java");		C언어의 포인터 개념과 동일
		 */
		String str = "Hello";
		System.out.println(str);
	}
}

Ex05_Variable

package com.mywork.ex;

public class Ex05_Variable {
	public static void main(String[] args) {
		// 1. 변수 선언 (선언과 초기화 동시에 진행)
		int num1 = 0;
		float num2 = 0F;
		double num3 = 0;
		char ch = 0;
		//String str = 0; 		// 에러
		String str1 = null;		// null : 0번지 (0x00000000)
		String str2 = "";		// "" : 빈 문자열
		
		// 2. 값 대입
		num1 = 100;
		num2 = 1.5F;
		num3 = 1.5;
		ch = '한';
		str1 = "Hello";
		str2 = "Java";
		
		System.out.println(num1);
		System.out.println(num2);
		System.out.println(num3);
		System.out.println(ch);
		System.out.println(str1);
		System.out.println(str2);
		
		// 3. 변수의 스코프 (scope : 범위)
		// 	1) 지역변수 : 코드블록(중괄호{}) 내에서만 접근이 가능, 벗어나면 소멸
		//	2) 전역변수 : 모든 지역에서 사용
		{
			int a = 10;
			System.out.println("코드 블록 내의 a = " + a);
		}
		// 37라인에서 이미 a 변수가 소멸되었기 때문에 아래처럼 접근이 불가!
		// System.out.println("코드 블록 밖의 a = " + a);
	}
}

Ex06_casting

package com.mywork.ex;

public class Ex06_casting {
	public static void main(String[] args) {
		/*
		 * 형 변환 (casting)
		 * 
		 * 	1. 자동 형 변환
		 * 		1) Java 스스로 형 변환
		 * 		2) 타입이 섞인 경우 작은 크기의 타입을 큰 크기의 타입으로 통일시키는 방향으로 형 변환
		 * 		   예) short 과 int 의 연산 -> 둘 다 int 로 변환된 뒤에 연산
		 * 		3) 정수와 실수가 섞인 경우 정수를 실수로 변환
		 * 
		 * 	2. 강제 형 변환 (명시적 형 변환)
		 * 		1) 개발자가 직접 형 변환
		 * 		2) 타입 상관없이 원하는 타입으로 변환
		 * 		3) (자료형)변수, (자료형)값
		 * 		   예) int num = 10;
		 * 			   (double)num : 실수로 처리
		 */
		
		// 1. 자동 형 변환
		System.out.println(1 + 1.5);
		// Java 스스로 System.out.println(1.0 + 1.5); 로 변환 후 처리
		
		double a = 10;
		// Java 스스로 double a = 10.0; 로 변환 후 처리
		System.out.println(a);
		
		
		// 2. 강제 형 변환
		int b = (int)20.9;
		System.out.println(b);
		
		int c = 1;
		int d = 2;
		double e = (double)c / d;	// 강제 형 변환(c) + 자동 형 변환(d)
		System.out.println(e);
	}
}

Ex07_parsing

package com.mywork.ex;

public class Ex07_parsing {
	public static void main(String[] args) {
		/*
		 * 문자열 반환은 형 변환(casting)이 아니고, 구문 분석(parsing)이다.
		 * 
		 * 1. 문자열 -> 정수 (String -> int)
		 *    Integer.pasrseInt("10") -> 10
		 *    
		 * 2. 문자열 -> 실수 (String -> double)
		 *    Double.pasrseDouble("3.14") -> 3.14
		 *    
		 * 3. 정수 / 실수 -> 문자열 (int/double -> String)
		 *    String.valueOf(10) -> "10"
		 *    String.valueOf(3.14) -> "3.14"
		 */
		
		String strAge = "20";
		String strHeight = "180.5";
		
		int age = Integer.parseInt(strAge);
		double height = Double.parseDouble(strHeight);
		
		System.out.println("나이 : " + age + "살, 키 : " + height + "cm");
		// 문자열의 비교는 "=="로 진행하지 않습니다.
		// equals 메소드를 이용해서 비교합니다.
		if(String.valueOf(age) == strAge) {
			System.out.println("같다!");
		}else{
			System.out.println("다르다!");
		}
	}
}

Ex08_operator01

package com.mywork.ex;

public class Ex08_operator01 {
	public static void main(String[] args) {
		/*
		 * 1. 산술 연산자
		 * 		정수      실수
		 * 	+	덧셈	  덧셈
		 *  -	뺄셈	  뺄셈
		 *  *   곱셈      곱셈
		 *  /   몫		  나누기
		 *  %   나머지    X
		 * 
		 * 2. 대입 연산자
		 * 	= : 대입
		 *  += : 더해서 대입
		 *  -= : 빼서 대입
		 *  *= : 곱해서 대입
		 *  /= : 몫으로 대입, 나눠서 대입
		 *  %= : 나머지를 구해서 대입
		 */
		
		// 문제. 카프리카 수를 구하기 위해 2자리 정수를 앞뒤로 분리, 4자리 정수를 앞뒤로 분리하는 방법
		// 앞뒤로 분리해서 (앞+뒤)*(앞+뒤) == 자신
		// 81 : (8 + 1) * (8 + 1) == 81
		int num1 = 81;
		int front1;
		int end1;
		front1 = num1 / 10;
		end1 = num1 % 10;
		
		System.out.println(front1 + ", " + end1);
		
		int num2 = 3025;
		int front2;
		int end2;
		front2 = num2 / 100;
		end2 = num2 % 100;
		
		System.out.println(front2 + ", " + end2);
	}
}

Ex09_operator02

package com.mywork.ex;

public class Ex09_operator02 {
	public static void main(String[] args) {
		/*
		 * 3. 증감 연산자
		 * 
		 * 	1) 증가
		 * 		(1) a++ : a를 사용하고 증가
		 * 		(2) ++a : a를 중가하고 사용
		 *  2) 감소
		 *  	(1) a-- : a를 사용하고 감소
		 *  	(2) --a : a를 감소하고 사용
		 * 
		 * 4. 시프트 연산자
		 * 		
		 * 	1) 왼쪽 시프트
		 * 		(1) <<
		 * 		(2) 왼쪽으로 한 자리씩 밀어낸다.
		 * 		(3) 비트 연산
		 * 		(4) 2를 곱하는 효과가 있다.
		 * 		
		 * 	2) 오른쪽 시프트
		 * 		(1) >>
		 * 		(2) 오른쪽으로 한 자리씩 밀어낸다.
		 *      (3) 비트 연산
		 *      (4) 2로 나누는 효과가 있다.
		 */
		
		int num = 8;
		System.out.println("왼쪽 시프트 : " + (num << 1));
		System.out.println("오른쪽 시프트 : " + (num >> 1));
	}
}

Ex10_operator03

package com.mywork.ex;

public class Ex10_operator03 {
	public static void main(String[] args) {
		/*
		 * 5. 관계 연산자
		 * 
		 *  1) >= : 이상, 크거나 같다
		 *  2) > : 초과, 크다
		 *  3) <= : 이하, 작거나 같다
		 *  4) < : 미만, 작다
		 *  5) == : 같다 (기본 자료형)
		 *     equals : 같다 (문자열)
		 *  6) != : 같지 않다
		 *  
		 * 6. 논리 연산자
		 * 
		 * 	1) && : and 연산
		 *  2) || : or 연산
		 *  3) !  : not 연산
		 *  4) short evaluate 를 지원
		 *  	- && : false 가 나오면 그 이후는 처리하지 않음 (어차피 false니까)
		 *  	- || : true 가 나오면 그 이후는 처리하지 않음 (어차피 true니까)
		 * 
		 * 7. 조건 연산자
		 * 	1) (조건식) ? 조건식이 true인 경우 : 조건식이 false인 경우
		 *  2) if else문의 대용
		 *  
		 */
		
		int a = 10;
		
		System.out.println(a == 10 && a < 100);	   // true
		System.out.println(a != 10 || a == 10);    // true
		System.out.println(!(a == 10));			   // false
		
		int b = 10;
		boolean result = (a == 100) && (++b > 10);	
		// result : false
		// b: 10		// 짧은 연산을 지원한다. 앞의 조건이 false이므로 뒤의 조건은 실행하지 않는다.
		System.out.println("result : " + result + ", b : " + b);
		
		int age = 18;
		boolean isAdult = (age >= 20) ? true : false;
		int fee = isAdult ? 4000 : 2000;
		System.out.println("요금 : " + fee); 		
		String id = "admin";
		String auth = id.equals("admin") ? "인증성공" : "인증실패";
		// String auth = id.equals(id) ? "인증성공" : "인증실패";	  +상관 없이 동작하지만 비추!
		System.out.println(auth);
	}
}
profile
시행착오, 문제해결 그 어디 즈음에.
post-custom-banner

0개의 댓글