주요내용 : casting, scanner, char, String, subString, 대소문자변환, 형변환, indexOf, equals, Date Class, Calendar Class, Unicode, StringTokenizer
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
import java.util.StringTokenizer;
public class hellojava {
@SuppressWarnings("deprecation") // 앞으로 쓰지말라는 경고표시
public static void main(String[] args) {
System.out.println("안녕하세요?"); // 화면에 내용(안녕하세요?)을 출력합니다. 한줄짜리 주석
System.out.println("HelloJava");
System.out.println("반갑습니다.");
/*
* System : 클래스 out : 객체 println : 메소드 ("안녕하세요"?) : 매개변수 값 ; : 문장의 끝
*
*/
// int x = 100; // 정수형 데이터 100을 변수 x에 저장하시오.
// int y = 300;
// int z = x + y; // 덧셈
// System.out.println(z);//400
/*
* int : 정수형 4바이트 메모리 x : 변수 = : 대입 연산자 (오른쪽의 연산의 결과를 왼쪽으로 저장하시오) 100 : 실제적인 데이터
* ; : 문장의 끝
*/
/*
* 1. 데이터 : 자료 => 정수형(소수점이 없는 수=100), 실수형(소수점이 있는 수=123.45), 문자(character = 알파벳 한 문자(대문자/소문자)='a') 문자열(String => 여러개의 문자로 구성="ABCD"), 특수기호(^,%,$,#,@,!,~,&,(,)) 숫자와 문자
* 2. 변수 : x, y, z....
* 3. 자료형 : byte(1), short(2), int(4), long(4), float(4), double(8), boolean(1bit)
* 4. 메모리 : RAM(8GB) = 주소값(address) = 포인터
* 5. algorithm(알고리즘) : 문제해결방법 => 조건문, 반복문, 배열, 객체지향내용...
* 6. 사고력(국어) + 논리력(수학) = 문제해결능력
*/
/*
* 문제 풀이 방법(프로그래밍 5단계)
* 1. 요구사항 파악 : 문제가 목적, 의도 하는 바를 알아내는 것
* 2. 요구사항 분석 : 인재, 비용, 데이터베이스 사양, 서버 사양, 주변상황...
* 3. 요구사항 설계 : 데이터, 변수, 자료형, 형변환, 객체지향접근(클래스, 인터페이스,...)
* 4. 구현 : coding
* 5. 테스트 : 정상적으로 동작하는지 확인!!!
* 6. 배포 및 유지보수 : 60 ~ 70%가 수입원(회사) : SM(System Management)
* 1~5. : SI
*/
//문제1] 1000 + 5000 = 6000이 나오도록 프로그램을 작성하세요.
// 1. 직접 데이터 입력 방법
int a = 1000, b = 5000;
int c = a + b;
System.out.println(c); // 6000
// 2. 키보드로부터 데이터 입력 방법
// Scanner sc = new Scanner(System.in); //sc라는 객체명은 다른걸로 써도 상관없다.
// System.out.println("첫번째 숫자를 입력하세요.");
// int x = sc.nextInt();// 1000
// System.out.println("두번째 숫자를 입력하세요.");
// int y = sc.nextInt();// 5000
//
// int z = x + y;
// System.out.println("두 수의 덧셈의 합은= " + z);// 6000
// 자바는 데이터가 입력될 때, 대부분(기본적으로) 문자로 인식됩니다.(" ") 문자는 연산을 못하므로, nextInt()를 써야함.(정수형으로 값을 받겠다.)
// 3. 키보드로부터 데이터 입력 방법2
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("첫번째 숫자 입력 : ");
String x = br.readLine(); // "3000" 을 문자열로 받는다. readLine : 한라인 전체를 문자열로 받아서 읽어라. 객체명.메소드명 or 클래스명.클래스메소드명 공식
float xx = Float.parseFloat(x); // 3000.0 parse__ : 들어온값에 대해서 __으로 변환하겠다.
System.out.println("두번째 숫자 입력 : ");
String y = br.readLine(); // "6000"
float yy = Float.parseFloat(y); // 6000.0
float zz = xx + yy;
System.out.println(zz); // 9000.0
System.out.println("연산의 결과는 = " + zz);
/* 7.BufferedReader 클래스 : 버퍼에 데이터를 모은다.(4~8kbyte)
* 6.br : object(객체)
* 5.= : 대입연산자
* 4.new : 메모리 할당 연산자
* 3.BufferedReader : 클래스, 객체의 생성, 성능의 향상
* 2.(new InputStreamReader : 1byte씩 입력받아라.
* 1.(System.in)) : 키보드로부터 데이터를 입력합니다.
* ;
*/
// 문제2를 buffered parse 이용하여 나오도록 해보시오.
// first=250, second= 450, third = 550.000f, 합계를 구하여 출력해 봅니다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("첫번째 숫자 입력 : ");
// String x = br.readLine(); // 250
// float xx = Integer.parseInt(x); // 250.0
float xx = Integer.parseInt(br.readLine()); // 한줄로도 쓸수 있다.
System.out.println("두번째 숫자 입력 : ");
String y = br.readLine(); // 450
float yy = Integer.parseInt(y); // 450.0
System.out.println("세번째 숫자 입력 : ");
String z = br.readLine(); // 550.000
float zz = Float.parseFloat(z); // 550.000
float xxx = xx + yy + zz;
System.out.println(xxx); // 1250.0
System.out.println("연산의 결과는 = " + xxx);
//문제2] first=250, second=450, third=550.000f, 합계를 구하여 출력해 봅니다.
int first = 250;
int second = 450;
float third = 550.000f;
int sum;
// casting(강제적 형변환)
sum = (int) ((first + second) + third); // 정수형 + 실수형 => 정수형
System.out.println(sum); // println : 출력 후 줄바꿈
// System.out.print(sum); // print : 출력만 함.
System.out.printf("%d\n", sum); // printf : 형식화된 출력, d : 정수형 , \n : 줄바꿈
float sum2; // 묵시적형변환(자동형변환)
sum2 = (first + second) + third; // 정수형 + 실수형 => 실수형
System.out.println(sum2);
System.out.printf("%5.1f\n", sum2); // f : 실수형
//문제3] 키가 172.56cm입니다. 이 때, 키가 몇 피트 몇 인치인지 알아보세요.
// 1 inch = 2.54cm, 1 feet = 30.48cm = 12 inch
double cm, inch, feet, feetsum, inchsum;
cm = 172.56;
inch = 2.54;
feet = inch * 12;
feetsum = cm / feet;
inchsum = (cm % feet) / inch;
System.out.println(feetsum + "몇 피트," + inchsum + "인치입니다.");
System.out.printf("cm는 %3.2f 피트이고, %3.2f 인치입니다.\n", feetsum, inchsum);
//---------------------------------------------------------------------------------
//문자 데이터 : char(문자), String(문자열)
//---------------------------------------------------------------------------------
char name = 'h';
char x = 'y';
char y = 'e';
char z = 's';
String sign = "yes"; // call by reference(참조형)
System.out.println(name + ", " + sign);
System.out.printf("name = %c, sign = %s \n", name, sign);
// 한글 변수 사용 가능.
String 이름1 = "홍길동";
String 이름2 = "임꺽정";
String 이름3;
이름3 = 이름1 + 이름2; // +는 연결 연산자 기능
System.out.println(이름3);// 홍길동임꺽정
// 문자와 숫자와의 연산
String value = "홍길동";
String value2 = value + 300;
System.out.println(value2); // 홍길동300, 문자 + 숫자 => 문자.
// 대문자와 소문자로 변환
// String str = "Java Programming";
// String ss = str.toUpperCase();//대문자로 변환
// System.out.println(ss); //JAVA PROGRAMMING
//
// String sss = ss.toLowerCase(); //소문자로 변환
// System.out.println(sss); //java programming
//문제4] "It is not the time but will that is wanting" 이라는 문자열이 존재합니다.
//내용 중에서 w라는 문자의 위치를 찾아서 출력하고, 문자열의 전체길이가 얼마인지를 확인하세요.
//charAt(); 해당 문자열을 찾아서 읽어온다.
//index : 0123456789....
String msg = "It is not the time but will that is wanting"; // 참조변수
int len = msg.length();
System.out.println(len); // 47(0~46)
for (int idx = 0; idx < len; idx += 1) { // 반복문 , idx += 1(복합대입연산자)
char ch = msg.charAt(idx);
if (ch == 't') {
System.out.println("찾는 인덱스 위치는= " + idx);//1, 8, ...
}
}
// indexOf() : 문자의 위치 찾기
String msg2 = "J a v a Program is Create Many Objects";
// index : 0123456789....
int idx1 = msg2.indexOf('a');//
System.out.println(idx1);// 2
int idx2 = msg2.indexOf('M');//
System.out.println(idx2);// 26
int idx3 = msg2.indexOf('a', 12);// 12번째 이후로 찾아라.(시작지점)
System.out.println(idx3);// 13
int idx4 = msg2.indexOf("is");
System.out.println(idx3);// 16
// subString(부문문자열 출력)
String msg3 = "J a v a Program is Create Many Objects";
// index : 0123456789....
// String str2 = msg3.substring(8,20);//8이후, 20이전(사이에 있는 것 찾기)
// System.out.println(str2); // Program is C
//
// String str3 = msg3.substring(12);
// System.out.println(str3);//ram is Create Many Objects
// String 클래스 : reference type, 무한대 저장 가능.
/* String 클래스
* str4 : 오브젝트(객체)
* = : 대입연산자
* new : 메모리 할당 연산자
* String : 클래스
* ("홍길동") : 매개변수데이터 값
* ; : 문장의 끝
*/
// equals() : 내용이 동일하면, 같은 주소번지를 부여한다.(내용비교. 메모리 절약.)
String str4 = new String("홍길동");
System.out.println(str4);// 홍길동
String str5 = "홍길동";
System.out.println(str5);// 홍길동
String str6 = "김길동";
System.out.println(str6);// 홍길동
String str7 = "홍길동";
System.out.println(str7);// 홍길동
System.out.println(str4.equals(str5));// true
System.out.println(str4.equals(str6));// false
System.out.println(str5.equals(str7));// true
// == : 주소비교.
System.out.println(str5 == str7);// 주소비교? 내용같은가? true (내용이 같으면 주소도 같음)
System.out.println(str5 == str6);// 주소비교? 내용같은가? false (내용이 다르면 주소도 다름)
//문제5] str = "홍길동", str2 = "홍길동", str3 = "홍마차" 이렇게 존재합니다.
String str = "홍길동";
String str2 = "홍길동";
String str3 = "홍마차";
System.out.println(str.equals(str2));// true
System.out.println(str2.equals(str3));// false
str = str3; // str3을 str에 붓는다.(대입한다)
System.out.println(str.equals(str3));// true
System.out.println(str == str3);// true (같은 데이터는 하나의 주소를 갖는다.)
// Date Class(날짜 출력)
// 1. Date Class
Date currentDate = new Date();
// class Object = class
System.out.println("현재 날짜는= " + currentDate + "입니다.");// 아메리칸 스타일 출력.
// 보통 컴퓨터는 1970년 1월 1일이 기본 설정되어 있습니다.
System.out.println("년도: " + currentDate.getYear());// 취소선 나오는 이유 : 앞으로 쓰지 말아라.
System.out.println("월: " + currentDate.getMonth());
System.out.println("일: " + currentDate.getDay());
System.out.println("날짜: " + currentDate.getDate());// 오늘 날짜.
System.out.println(currentDate.toLocaleString());// 현재 시각(now).
// 2. Calendar Class
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.YEAR) + "년"); // 2019년
System.out.println(cal.get(Calendar.MONDAY) + 1 + "월");// 6월
System.out.println(cal.get(Calendar.DATE) + "일");//
System.out.println(cal.get(Calendar.HOUR) + "시"); //
System.out.println(cal.get(Calendar.MINUTE) + "분");//
System.out.println(cal.get(Calendar.SECOND) + "초");//
// 3. Unicode : 한국어, 중국어, 일본어...
// http://www.unicode.org/charts
String str8 = "\uAC00"; // 가
String str9 = "\uB098"; // 나
System.out.println(str8 + str9);// 가나
System.out.println(str9); // 나
// 4. StringTokenizer class : 문자열을 구분자(Delimiter)를 이용하여 구분합니다. 마지막 " " 안에 구분자를 넣는다.
StringTokenizer st = new StringTokenizer("개구리, 소년, 왕눈이, 아로미, 투투", ",");
System.out.println("문자열의 갯수는 = " + st.countTokens() + "개");// 5개
while (st.hasMoreTokens()) { // 추출한 단어가 존재하면
String data = st.nextToken(); // 순서대로 읽어오세요.
System.out.println(data);
}
//문제6]
StringTokenizer st2 = new StringTokenizer("개구리=소년; 왕눈이=아로미; 투투=가재", "=;");
System.out.println("문자열의 갯수는 = " + st2.countTokens() + "개");// 6개
while (st2.hasMoreTokens()) { // 추출한 단어가 존재하면
String data2 = st2.nextToken();
System.out.println(data2);
}
}
}
//ctrl + F11 : 실행
'Bitcamp > BITCAMP - Java' 카테고리의 다른 글
3일차 - 과제 (0) | 2019.06.26 |
---|---|
3일차 (0) | 2019.06.26 |
2일차 - 과제 (0) | 2019.06.26 |
2일차 - GUISample1 (0) | 2019.06.25 |
2일차 (0) | 2019.06.25 |