Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- aws #아키텍트 #과정 #vpc #인프라 구축
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 서브넷 #안에 #ec2 인스턴스 #ami #생성 #firewall
- aws #아키텍트 #과정 #vpc #인프라 구축 #private #resource #security #group
- aws #아키텍트 #과정 #s3 #bucket #생성 #이미지업로드
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #private subnet
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- 프로세스 #CPU #시공유 #커널
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- ipv4 #private #public #instance #curl #연결성 검증 #session manager
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 #프라이빗 #서브넷 #igw #route53 #routing table #ec2 #security group #firewall
- samba #가상머신 #daemon
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 #보안그룹 #생성 #http #ipv4
- mysql #linux #설정 #wordpress #웹사이트 #db 연결 #
- haproxy #wordpree #php #linux #가상화 #가상머신 #내용정리
- aws #아키텍트 #과정 #vpc #인프라 구축 #vpc #nat #gateway #private subnet
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #session manager #curl #명령어 #private #instance
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #웹페이지 #http #public #instance
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #route53 #igw #연결
- aws #아키텍트 #과정 #vpc #인프라 구축 #private subnet #ec2 #인스턴스 #elastic compute #vm
- 쓰레드 #쓰레드풀 #프로세스
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #internet gateway #연결
- 비트 #바이트 #이진수
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #클라우드 #퍼블릭 클라우드 #아키텍트 #과정
- storage #로컬스토리지 #세션스토리지 #백그라운드 서비스
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #igw #curl #명령어 #http
Archives
- Today
- Total
요리사에서 IT개발자로
Java 1장(with 자바의 정석) 본문
자바(Java)란 ?
프로그래밍 언어 (Programing language)
컴퓨터 프로그램(애플리케이션)을 만드는데 사용한다
- 실행환경(JRE) + 개발도구(JDK) + 라이브러리(API)
- 라이브러리를 사용하면 쉽고 빠르게 어플리케이션 개발이 가능하다
자바 사용하는 곳
- PC 어플리케이션 개발 프로그램 (InteliJ, eclipse 등)
- 웹 애플리케이션 개발 프로그램 (Spring boot, 등)
- 모바일 어플리케이션(안드로이드) (Android)
- 빅 데이터(Big Data) (hadoop)
- 게임(마인 크래프트), 과학, 소형기기
자바는 원래 소형기기에 사용되려고 만들어졌다.
자바를 사용하는 이유
- 다양한 분야에서 활발히 사용된다. (안쓰이는 분야가 없다)
- 배우기 쉽고 학습자료가 풍부하다
- 모던 프로그래밍 언어(객체지향+ 함수형이 추가되었다)
- 최근에 나온 언어들 보다 못지않게 발전하고있다.
- 취업에 유리하다.(실무에서 제일 많이 사용한다)
자바의 역사
- 1996년에 첫 개발 JDK(자바 개발자 도구) 1.0
- 1998년에 J2SE 1.2 업데이트 J2SE, J2ME,J2EE
- 2004년에 5.0 or 1.5 업데이트
- 2014년 Java SE 8 업데이트
- 2014년 부터 6개월마다 버전 업그레이드 발표를 하고있다.
안정성으로 인하여 개발을 신중히 검토하였으나 최신기능들을 반영하기 위하여 6개월마다 하는것이다.
자바의 특징
- 배우기 쉬운 객체지향 언어이다.(기존의 프로그래밍 언어+객체지향을 도입)
- C++, Java,Python, Javascript 다 객체지향이다.
- 객제지향이란 하나의 언어를 이해하면 다른 객체지향 언어를 배우기 쉽다.
- 자동으로 메모리 관리를 해준다. (Garbage Collector가 자동으로 해준다.)
- 프로그램 작성이 편리하다.
- 멀티쓰레드를 지원한다.(멀티쓰레드 = 여러개의 작업을 하게 해준다)
- 풍부한 라이브러리로 쉽게 개발 가능하다.(자바가 제공하는 라이브러리는 자료가 풍부해서 쉽고 빠르게 할 수 있다)
- 운영체제에 독립적이다.
자바 가상 머신 (JVM)
- 자바 프로그램이 실행되는 가상 컴퓨터(VM)
- 한번 작성하면, 어디서든 실행이 가능하다(Wirte once, run anywhere)
변수(Variable)란
하나의 값을 저장할 수 있는기억공간
변수의 타입(Data Type)
값 -문자 - char
- 숫자 - 정수 - byte, short, int, long
- 실수 - float, double
논리 - boolean
기본형(Primitive Type)
- boolean, char, byte, short, int, long, float, double = 8개
- 실제 값을 저장한다
참조형(Reference Type)
- 기본형 8개를 제외한 나머지 String, System 등
- 객체의 주소를 저장한다 4byte, 0x00000000~0xffffffff
64bit JVM의 경우 참조형의 크기는 8byte 이다
기본형 (Primitive type)
논리형(boolean) - true와 false 중 하나를 값으로 갖고 조건식과 논리적 계산에 사용된다.
문자형(char) - 문자를 저장하는데 사용되며 변수 당 하나의 문자만을 저장할 수 있다. (여러문자는 String)
정수형 - 정수 값을 저장하는데 사용되며 주로사용하는 것은 int와 long(아주 큰 정수)이다.
byte는 이진데이터를 다루는데 사용되며 short은 c언어와의 호환을 위해 추가 되었다.(많이 쓰이지는 않는다)
실수형 - 실수 값을 저장하는데 사용된다. float와 double이 있다.
1byte | 2byte | 4byte | 8bye | |
논리형 | boolean (true, false) | |||
문자형 | char (유니코드) | |||
정수형 | byte | short | int | long |
실수형 | float (부동소수점) | double (정밀도가 2배) |
1bit = 2진수 1자리
1byte = 8bit
부동 = 떠다니다.
기본형(Primitive type) - 표현범위1
- byte b = 1byte = 1bit 8개 = 1bit는 2진수 한자리(0,1)값을 저장할 수 있다.
- b = 3; 이라면 1byte 오른차수 부터 11이 저장된다.(2진수로 11)
n비트로 표현할 수 있는 값의 갯수 = 2ⁿ
n비트로 표현할 수 있는 부호없는 정수(양수 1~ 2ⁿ)의 범위 = 0~ 2ⁿ -1
n비트로 표현할 수 있는 부호있는 정수 = - 2ⁿ-¹ ~ - 2ⁿ-¹ - 1
기본형(Primitive type) - 표현범위2
- 1byte = 8bit = -128 ~ 127
- short = 2byte = 16bit = -32768~32767 (부호있는 정수 이기에 -부터 시작한다)
- char = 2byte =16bit = 0~65535
- short type과 달리 모두 양수값으로 사용할 수 있다. (부호 없는 정수)
- int = 4byte =32bit = -20억 ~ 20억
- long = 8byte= 64bit = -800경 ~ 800경
- long 보다 큰경우 Biginteger class를 사용하면된다.
기본형(Primitive type) - 표현범위3
자료형 | 저장 가능한 값의 범위 | 정밀도 (오차없는 자리수를 뜻한다) | bit | byte |
float | 1.4E-45~3.4E38 (양수만 표현한 범위) | 7자리 | 32 | 4 |
double(default type | 4.9E-324~1.8E308 | 15자리 | 64 | 8 |
E는 10의 몇제곱을 나타내기 위한 기호
변수의 선언방법
타입 변수명
int score;
score = 100;
int score = 100;
String str = new String("abc");
str = null;
명명 규칙 (Naming convention)
대소문자가 구분되며 길이에 제한이 없다.
- True와 true는 서로 다르다.(대, 소문자)
예약어 (Reserved word)를 사용해서는 안된다.
- true는 예약어라 사용할 수 없지만 True는 가능하다
숫자로 시작해서는 안 된다.
- top10은 허용하지만 7up은 허용되지 않는다
특수문자는 '_'와 '$'만을 허용한다
- $harp은 허용되지만 S$arp는 허용되지 않는다.
권장사항
클래스 이름의 첫 글자는 항상 대문자로 한다.
- 변수와 메소드 이름의 첫글자는 항상 소문자로 한다
여러단어 이름은 단어의 첫 글자를 대문자로 한다.
- lastIdexOf, Stringbuffer
상수의 이름은 대문자로 한다. 단어는'_'로 구분한다
- PL MAX_NUMBER
변수, 상수, 리터럴
- 변수(variable) - 하나의 값을 저장하기 위한 공간
- 상수(constant) - 한 번만 값을 저장할 수 있는 공간
- 리터럴(literal) - 그 자체로 값을 의미하는 것
int score = 100;
score = 200;
char ch = 'A';
String str = "abc";
final int MAX = 100;
MAX = 200; // 에러. 상수의 값은 변경이 불가능하다.
리터럴과 접미사
리터럴(데이터) | 접미사(꼬리) | 리터럴(데이터) | 접미사(꼬리) |
boolean power | true; | ling l | 100000000000L; |
char ch | 'A' | float f | 3.14f |
char ch | '\u0041'; | double d | 3.14d |
char tab | '\t'; | float f | 100f; |
byte b | 127; | 10. | 10.0 |
short s | 32767; | .10 | 0.10 |
int i | 100; | 10f | 10.0f |
int oct | 0100; | 3.14e3f | 3140.0f |
int hex | 0x100; | lel | 10.0 |
형식화된 출력 - Printf()
Println()의 단점 - 출력형식을 지정 불가능하다.
실수의 자리수 조절이 불가능하다
소수점 n자리만 출력하는게 불가능하다.
- System.out.pritnln(10.0/3); = //3.3333333333...
10진수로만 출력된다
- System.out.println(0x1A); // 26
Printf()로 출력형식 지정가능하다
- System.out.printf("%.2f", 10.0/3); //3.33 (소수점 둘째자리까지 출력)
- System.out.printf('%d', 0x1A); //26 (10진수로 출력)
- System.out.printf("%X", 0x1A); //1A (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)로 출력 |
Ex) System.out.printf("age:%d year:%\n", 14, 2017); // "age:14 year:2017\n"이 화면에 출력된다.
\n(%n) = 개행문자 = 줄바꿈역할을 한다.
- System.out.printf("age:%d", age); //출력 후 줄바꿈을 하지 않는다. = %n 이 없다
- System.out.printf("age:%d%n", age); //출력 후 줄바꿈을 한다. = %n이 있다.
정수를 10진수, 8진수, 16진수로 출력한다
- System.out.printf("%d", 15); // 15 = 10진수= decimal = %d
- System.out.printf("%o", 15); // 17= 8 = 8진수= octor = %o
- System.out.printf("%x", 15); // f = 16진수 = hexa =%x
- System.out.printf("%s", Integer.toBinaryString(15)); // 1111= 2진수 = %s
toBinaryString=정수를 2진문자열로 변환해준다
8진수(0)와 16진수(0x)에 접두사 붙이기 -> 지시자 앞에 #을 붙이면된다
- System.out.printf("%#o", 15); // 017
- System.out.printf("%#x", 15); // 0xf
- System.out.printf("%#X", 15); // 0XF
실수 출력을 위한 지시자 %f - 지수형식(%e), 간략한 형식(%g)
- float f = 123.4567890f;
- System.out.printf("%f", f); // 123.456787 =소수점아래 6자리까지 출력 (끝자리 2자리는 의미없는 숫자)
- System.out.printf("%e", f); // 1.234568e + 02 지수형식으로 출력(마지막 숫자 8 은 반올림되어 보여줘서 8이다)
float 보단 double 의 정밀도가 더 높다. (15자리 이기때문에)
- System.out.printf("%g", 123.456789); // 123.457 = 7자리 까지 출력 (마지막 숫자는 반올림)
- System.out.printf("%g", 0.000000001); // 1.00000e-8
실수 지시자 %f, 지수는 %e 를 쓰면된다.
- System.out.printf("[%5d]%n", 10); // [xxx10] (오른쪽 정령)
- System.out.printf("[%-5d]%n", 10); // [10xxx] (왼쪽 정렬)
- System.out.printf("[%05d]%n", 10); //[00010]
%전체자리. 소수점 아래자리는 f
- System.out.printf("d=%14.10f%n", d); //전체 14자리 중 소수점 아래 10자
- System.out.printf("[%s]%n", url) ; // [www.xxx.com]
- System.out.printf("[%20s]%n", url); // [ www.xxxx.com] = 왼쪽 공백
- System.out.printf("[%-20s]%n", url); // [www.xxx.com ] = 오른쪽공백
- System.out.printf("[%.8s]%n" , url); //[www.xxx] = 8자리만 출력
화면에서 입력받기
Scanner란
화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
Scanner 사용
import문 추가
- import java.util.*;
Scanner객체의 생성
- Scanner scanner = new Scanner(System.in); //System.in 은 화면입력
Scanner 객체를 사용
- int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장한다.
- String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장한다
- int num =Integer.parseInt(input); //문자열(input)을 숫자(num)로 변환한다.
계수기(counter = 숫자를 센다)는 숫자를 세는 기계
오버플로우(over flow) : 표현가능한 범위를 넘는 것
- 최대값 + 1 -> 오버플로우가 발생하여 최소값이 나온다. -> 9999+1 = 0000 = 2진수 1111+1 = 0000
- 최소값 = 1 -> 오버플로우가 발생하여 최대값이 나온다. -> 0000-1 = 9999 = 2진수 0000-1 = 1111
부호없는 정수 4bit의 경우 표현범위가 0~15이므로 이값이 계속 반복되고
부호있는 정수 (4bit)의 경우 표현범위가 -8~7이므로 이 값이 무한히 반복된다.
부호없는정수 15+1 -> 0
0-1 -> 15
부호있는정수 7+1 -> -8
-8-1 -> 7
- sMin - 1 -> sMax (32767) // 최소값 - 1 -> 최대값
- sMax +1 -> sMin(-32768) // 최대값 + 1 -> 최소값
- cMin - 1 -> cMax(65535) // 최소값 -1 -> 최대값
- cMax + 1 -> cMin(0) // 최대값 + 1 -> 최소값
10진수 (0,1,2,3,4,5,6,7,8,9) = 0~10-1
- 0~ 9 = 0~10-1
- 00 ~ 99 = 0~10² -1
- 000 ~ 999 = 0~10³ -1
- 0000~9999 = 0~ 10⁴ -1
2진수
- 0~1 = 0~1 -> 0~2-1
- 00 ~ 11 = 0~3 -> 0~2² -1
- 000~111 = 0~7 -> 0~2³-1
- 0000~1111 = 0~2⁴-1
16비트로 표현할 수 있는 정수의 개수 : 65536개
부호있는 정수 short 타입의 표현범위 : -32768~32767
부호없는 정수 char 타입의 표현범위 : 0 ~ 65535
타입간의 변환방법
문자와 숫자간의 변환
- 숫자 3 + '0' -> 문자 3
- 문자 3 - '0'-> 숫자 3
문자열로의 변환
- 3 + " " -> "3"
- '3' + " " -> "3"
문자열을 숫자로 변환
- "3" Integer.parseInt = 숫자 3
- "3.4" double.parseDouble = 숫자 3.4
문자열을 문자로 변환
- "3" charAt(ø) = '3'
반응형
'Java' 카테고리의 다른 글
스파르타 코딩클럽 부트캠프 (Java 문법 1장) (2) | 2024.04.22 |
---|---|
Eclipse 단축키 정리(with 자바의 정석) (0) | 2024.04.18 |
Java 2장(with 이것이 자바다) (0) | 2024.04.11 |
Java 2장(with 자바의 정석) (0) | 2024.04.10 |
Java 1장(with 이것이 자바다) (0) | 2024.04.09 |