printf, println
키보드 입력받기
gradle compileJava
배열 선언
주소변수
반복문
HDD의 구조, RAM의 구조 추가하기
printf, println 리터럴 출력값
println() = 출력 + 줄바꿈
값을 주지 않으면 줄바꿈만 수행한다. //System.out.println();
print() 는 출력만 한다. 줄바꿈 없다.
이스케이프 문자를 통해 줄바꿈을 수행한다. //System.out.print('\n');
특정형식 문자
// %s : 지정한 자리에 문자열을 삽입한다.
// 삽입할 값은 오른쪽에 설정한다.
System.out.printf("이름: %s\n", "홍길동");
System.out.printf("안녕하세요! %s입니다.\n", "임꺽정");
// %d : 정수 값을 10진수 문자열로 만들어 삽입한다.
// %x : 정수 값을 16진수 문자열로 만들어 삽입한다.
// %c : 정수 값을 문자로 만들어 삽입한다.
// %b : true/false 값을 문자열로 만들어 삽입한다.
System.out.printf("%d %x %c %b\n", 65, 65, 65, false);
// 한 개의 값을 여러 곳에 삽입할 수 있다.
// %[n$]s : n은 문자열에 삽입될 값의 순서이다. 순서는 1부터 증가한다.
System.out.printf("%d %1$x %1$c\n", 65);
System.out.printf("%3$d %1$x %2$c\n", 65, 66, 67); // 3$(67), 1$(65), 2$(66)
형식을 갖춰서 날짜 값 출력하기
public static void main(String[] args) {
// 현재 날짜 및 시각 정보를 생성한다.
// java.lang 패키지의 멤버를 사용할 때는 그냥 이름을 지정하면 된다.
// 그 외 다른 패키지의 멤버를 사용할 때는 반드시 패키지 이름을 함께 지정해야 한다.
java.util.Date today = new java.util.Date();
// %t[날짜 및 시각 옵션]
// 날짜 및 시간 옵션
// Y : 날짜 및 시각 데이터에서 년도를 추출하여 4자리로 표현한다.
// y : 날짜 및 시각 데이터에서 년도를 추출하여 뒤의 2자리로 표현한다.
System.out.printf("%1$tY, %1$ty\n", today);
2023, 23
// A : 날짜 및 시각 데이터에서 요일을 추출하여 긴 이름으로 표현한다. ex) Sunday
// a : 날짜 및 시각 데이터에서 요일을 추출하여 짧은 이름으로 표현한다. ex) Sun
System.out.printf("%1$tA %1$ta\n", today);
화요일 화
// 년-월-일 시:분:초를 출력하라! 예) 2019-01-04 12:04:30
System.out.printf("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS\n", today);
2023-05-30 16:57:11
키보드 입력 받기 - 문자열 한 줄 읽기
public class Exam0220 {
public static void main(String[] args) {
// 1) 키보드로 입력한 데이터를 읽을 때 사용할 도구를 준비한다.
java.io.InputStream keyboard = System.in;
// 2) InputStream은 바이트 단위로 읽는 기능이 있다.
// 바이트 단위로 읽어서 int나 문자열로 바꾸려면 또 코딩해야 하는 불편함이 있다.
// 이런 불편함을 줄이기 위해 자바에서는 바이트를 개발자가 원하는 값으로
// 바꿔주는 기능이 들어 있는 도구를 제공한다.
// 그 도구가 java.util.Scanner 이다.
// => 키보드를 스캐너에 연결한다.
java.util.Scanner keyboardScanner = new java.util.Scanner(keyboard);
// nextLine()
// - Scanner 도구를 사용하여 키보드로부터 한 줄의 문자열을
// 가져올 때 사용하는 명령이다.
// - 동작은?
// 사용자가 한 줄 입력할 때까지,
// 즉 입력 데이터에 줄바꿈을 의미하는 0d0a 2바이트가 들어올 때까지 대기한다.
// 사용자가 엔터키를 누르면,
// 입력값으로 0d0a 2바이트 값이 들어오고,
// nextLine()은 그 전까지 들어온 데이터를 문자열로 만들어 리턴한다.
String str = keyboardScanner.nextLine();
키보드 정보를 담을 그릇 = 키보드 정보
실무에서는 위처럼 키보드에 담고 또 담는게 아니라 바로 system in 넣음
위 예제는 흐름 보기 위한 것
scanner: 우리가 원하는 데이터형태로 내는 역할. nextline 이라는 기능이있음(줄단위로 잘라서 리턴하는 기능)
키보드에서 한줄 단위로 입력 받을 수 있군아..!
다음 스캐너를 쓰기 위해서 꼭 닫아줘야함.(닫아야하는 것들이 몇개 있음, 공공자들. 컴터끄면 같이 꺼지긴 함)
여러 개의 데이터를 한 번에 입력하고 쪼개서 읽기
System.out.print("나이, 이름, 취업여부? ");
int age = keyboardScanner.nextInt(); //첫 번째 값
// 한 개의 토큰을 읽을 때 유용하다.
String name = keyboardScanner.next(); // 그 다음 값
boolean working = keyboardScanner.nextBoolean();
keyboardScanner.close();
System.out.printf("%d, %s, %b\n", age, name, working);
//%d = 정수
%s = string 문자열
%b = 불리언 값
gradle compileJava 실행하면 gradle 폴더 속 모든 java 파일이 컴파일 됨.
package bitcamp.myapp;
// 코드 본문에서 사용할 클래스가 어떤 패키지의 클래스인지 지정한다.
import java.util.Scanner;
public class App {
public static void main(String[] args) {
System.out.println("나의 목록 관리 시스템");
System.out.println("-----------------------------");
// 키보드 스캐너 준비
Scanner scanner = new Scanner(System.in);
// 배열 선언 (크기 3)
no라는 이름의 int 타입 배열을 선언하고 있으며, 배열의 크기를 3으로 지정
int[] no = new int[3];
String[] name = new String[3];
int[] age = new int[3];
boolean[] working = new boolean[3];
char[] gender = new char[3];
float[] leftEye = new float[3];
float[] rightEye = new float[3];
//for문
for (int count = 0; count < 3; count++) {
System.out.print("번호? ");
no[count] = scanner.nextInt();
System.out.print("이름? ");
name[count] = scanner.next();
System.out.print("나이? ");
age[count] = scanner.nextInt();
System.out.print("재직중(True/False)? ");
working[count] = scanner.nextBoolean();
System.out.print("성별(남자:M, 여자:W)? ");
String str = scanner.next();
gender[count] = str.charAt(0);
System.out.print("시력(왼쪽, 오른쪽)? ");
leftEye[count] = scanner.nextFloat();
rightEye[count] = scanner.nextFloat();
}
System.out.println("============================");
for (int count = 0; count < 3; count++) {
System.out.printf("번호: %d\n", no[count]);
System.out.printf("이름: %s\n", name[count]);
System.out.printf("나이: %d\n", age[count]);
System.out.printf("재직여부: %b\n", working[count]);
System.out.printf("성별(남자(M),여자(W)): %c\n", gender[count]);
System.out.printf("좌우시력: %.1f,/%.1f\n", leftEye[count], rightEye[count]);
}
scanner.close();
}
}
char c = 'A'; //변수에 저장되는 것은 문자 'A'의 UCS-2 코드 값이다. (UCS = 유니코드 2바이트)
숫자를 문자로 형변환 Type conversion? type casting (char)(v+i)
public class Exam0431 {
public static void main(String[] args) {
// 자바는 'UCS(Universal Character Set; ISO 10646)'라는 국제 표준 문자 인코딩 규격에 따라 문자를 다룬다.
// UCS-2 라고도 부르며, 각 글자를 0 ~ 65535 까지의 16비트 코드 값으로 저장한다.
// 자바는 UCS-2 코드 값을 저장하기 위해 2바이트 크기의 메모리를 사용한다.
// 다음은 2바이트 크기의 UCS-2 코드 값을 저장할 변수를 선언한다.
char c;
c = 0;
c = 65535;
// char(2byte) 크기의 메모리 범위를 초과하면 문법 오류이다.
//c = -1; // 컴파일 오류 발생!
//c = 65536; // 컴파일 발생!
}
}
char c1, c2, c3;
// 문자 'A'를 변수에 저장하는 방법?
//- 문자 'A'의 UCS-2 코드 값을 저장하면 된다.
//
c1 = 65; // 문자 'A'의 코드 값을 10진수로 표현한 것.
c2 = 0x41; // 문자 'A'의 코드 값을 16진수로 표현한 것.
c3 = 0b0100_0001; // 문자 'A'의 코드 값을 2진수로 표현한 것.
char c = 'A'; // c 변수에 저장되는 것은 문자 'A'의 UCS-2 코드 값이다.
System.out.println(c);
출력값: A |
//문자의 UCS-2 코드 값을 확인하기
// println()은 int 변수의 값은 10진수로 출력한다.
int i = 'A';
System.out.println(i);
출력값: 65 |
배열(array)
int [ ] no = New int [3]
no[0] = 38;
no[1] = 278;
no[2] = 331;
//
no = 메모리 주소를 저장할 변수 = 레퍼런스
데이터 타입 int 인 3개의 메모리의 배열 설정
인덱스 0번 부터 2번까지 값 지정
자바는 음수 인덱스 허용 안함. 인덱스는 유효범위를 벗어날 수 없다.
배열 선언
public class Exam0530 {
public static void main(String[] args) {
int[] arr1 = new int[5];
arr1 = new int[5];
...
배열(변수)선언 후 값을 할당해야함
// 배열 선언문 분석:
// arr1
// - 배열 메모리의 주소를 담는 변수이다.
// - 이렇게 메모리의 주소를 보관하는 변수를 '레퍼런스'라 부른다.
//
// new int[5]
// - new 명령은 사용할 메모리를 확보하는 명령이다.
// - 즉 연속된 5 개의 int 타입 메모리를 준비하라는 명령이다.
// - 사용할 메모리를 확보한 후 그 메모리의 찾아 갈 수 있도록 시작 주소를 리턴한다.
// - 이렇게 값을 저장하기 위해 확보된 메모리를 "인스턴스"라 부른다.
//
// new 명령은 메모리를 확보하는 명령이다.
// - 리턴 값은 확보된 메모리의 시작 주소이다.
// 배열 레퍼런스만 따로 선언할 수 있다.
int[] arr1;
// 배열 인스턴스를 생성하고 그 주소를 레퍼런스에 저장한다.(메모리 할당 후 사용가능)
arr1 = new int[5];
배열 기본값
// - 정수 배열(byte[], short[], int[], long[]) : 0
// - 부동소수점 배열(float[], double[]) : 0.0
// - 논리 배열(boolean[]) : false
// - 문자 배열(char[]) : '\u0000'
// - 주소 변수(Object[]) : null
|
CPU(중앙처리장치) - 계산수행
RAM - 데이터 임시보관
HDD - 데이터 (반)영구보관
SSD - 데이터 안 날라가게 벽을 여러개 둬서 가둠
ACTOR
APP 처리 요청하는 대상 // 사람일 수도, process(S/W), 센서(H/W) 일수도 있음.
HDD의 구조, RAM의 구조 추가하기
값 변수와 주소변수(reference)
*Primative data ( 총 8개)
int a; a=100; a라는 이름의 4byte 메모리 안에 100이라는 값 넣음 |
*Reference data
Data today = new Data( ); 날짜 및 시간 데이터가 들어있는 Date 주소를 today라는 이름의 메모리에 전달(저장) 값이 저장된 주소를 저장하는 것 |
반복문 (**조건이 참인 경우 반복 실행)
while(조건) { 반복코드 } |
do { 반복코드 } while(조건) |
for (초기변수; 조건; 증감) { 반복코드 } |
'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > 웹프로그래밍' 카테고리의 다른 글
[NC7기-27일차(6월1일)] - 웹프로그래밍 8일차 (0) | 2023.06.01 |
---|---|
[NC7기-26일차(5월31일)] - 웹프로그래밍 7일차 (0) | 2023.05.31 |
[NC7기-24일차(5월26일)] - 웹프로그래밍 5일차 (0) | 2023.05.26 |
충격적인 숫자 리터럴 (0) | 2023.05.25 |
[NC7기-23일차(5월25일)] - 웹프로그래밍 4일차 (4) | 2023.05.25 |