Q. 글자수만큼 별표시를 할 수 있도록 처리해보세요
별표시 과정 (1)
package api.lang.string;
public class Test07_4 {
public static void main(String[] args) {
int size = 10;
// String star = null;//초기값으로 사용할 수 없음
String star = "";// empty string, 빈 문자열
star += "*";
star += "*";
star += "*";
star += "*";
star += "*";
star += "*";
star += "*";
star += "*";
star += "*";
star += "*";
System.out.println(star);
}
}
별표시 과정 (2)
package api.lang.string;
public class Test07_5 {
public static void main(String[] args) {
int size = 3;
// String star = null;//초기값으로 사용할 수 없음
String star = "";//empty string, 빈 문자열
for(int i=0; i < size; i++) {
star += "*";
}
System.out.println(star);
}
}
단점->
크기가 커질 수록 소요 시간이 기하급수적으로 늘어난다
문자열 덧셈은 크기가 커질 수록 사용하지 말아야 한다
자바는 문자열을 처리할 때 새로 복사본을 만들어서 작업을 수행한다.
문자열은 한 번 정해지면 크기가 불변이기 때문
시간 측정 코드 : long a = System.currentTimeMillis();// 기준시(1970.01.01 자정)부터 지금까지 흘러온 밀리초(ms)
package api.lang.string;
public class Test07_6 {
public static void main(String[] args) {
int size = 50000;
// String star = null;//초기값으로 사용할 수 없음
String star = "";// empty string, 빈 문자열
long a = System.currentTimeMillis();// 기준시(1970.01.01 자정)부터 지금까지 흘러온 밀리초(ms)
for (int i = 0; i < size; i++) {
star += "*";
}
long b = System.currentTimeMillis();
long ms = b - a;
System.out.println(ms + " ms");
// System.out.println(star);
}
}
걸린시간 : 2485 ms
StringBuffer 또는 StringBuilder를 이용하여 처리를 하면 카피 없이 빠르게 처리가 가능 = 문자열 덧셈 특화 도구
StringBuffer : thread-safe / 줄을 서서 추가 / 속도 느림 / 안정성 높음
StringBuilder : non thread-safe / 줄을 서지 않고 추가 / 속도 빠름 / 안정성 낮음
- StringBuffer
package api.lang.string;
public class Test07_7 {
public static void main(String[] args) {
int size = 50000;
StringBuffer buffer = new StringBuffer();//비어있는 저장소 생성
long a = System.currentTimeMillis();//기준시(1970.01.01 자정)부터 지금까지 흘러온 밀리초(ms)
for(int i=0; i < size; i++) {
buffer.append("*");//buffer에 *을 덧붙이겠다!
}
long b = System.currentTimeMillis();
long ms = b - a;
System.out.println(ms+" ms");
// System.out.println(buffer.toString());
}
}
- 걸린시간 : 15 ms
- StringBuilder
package api.lang.string;
public class Test07_8 {
public static void main(String[] args) {
int size = 50000;
StringBuilder builder = new StringBuilder();//비어있는 저장소 생성
long a = System.currentTimeMillis();//기준시(1970.01.01 자정)부터 지금까지 흘러온 밀리초(ms)
for(int i=0; i < size; i++) {
builder.append("*");
}
long b = System.currentTimeMillis();
long ms = b - a;
System.out.println(ms+" ms");
// System.out.println(builder.toString());
}
}
걸린시간 : 4 ms
Q. 검색엔진 만들기
우리 검색엔진에서는 다음과 같은 제목의 홈페이지를 가지고 있습니다
1.자바로 배우는 프로그래밍 생활
2.나의 자바 개발 노트
3.자바를 위한, 자바에 의한 슬기로운 개발 블로그
4.웹개발자가 꼭 알아야할 자바 기술 모음
5.파이썬과 자바로 구현하는 하이엔드 프로그래밍
자바라는 검색어를 입력하면 다음 순서대로 정렬되어야 합니다
3 1 2 5 4
정렬 기준은 크게 두 가지입니다
먼저 검색단어의 출현빈도가 높은 항목이 앞으로 와야하고
검색단어의 첫 등장위치가 작을수록 앞으로 와야합니다
위 정렬기준을 적용시켜 검색어에 따라 필터링 및 정렬된 결과를 보여주세요
1. 필터링 기술
package api.lang.string;
public class Test08_1 {
public static void main(String[] args) {
//입력
String[] db = new String[] {
"자바로 배우는 프로그래밍 생활",
"나의 자바 개발 노트",
"자바를 위한, 자바에 의한 슬기로운 개발 블로그",
"웹개발자가 꼭 알아야할 자바 기술 모음",
"파이썬과 자바로 구현하는 하이엔드 프로그래밍"
};
String keyword = "개발";
//출력
for(int i=0; i < db.length; i++) {
if(db[i].contains(keyword)) {//검색어가 포함되어 있다면
System.out.println(db[i]);
}
}
}
}
검색어 '개발' 이 포함된거 찾기
나의 자바 개발 노트
자바를 위한, 자바에 의한 슬기로운 개발 블로그
웹개발자가 꼭 알아야할 자바 기술 모음
2. 결과 수 만큼 배열에 복사하기
package api.lang.string;
public class Test08_2 {
public static void main(String[] args) {
//입력
String[] db = new String[] {
"자바로 배우는 프로그래밍 생활",
"나의 자바 개발 노트",
"자바를 위한, 자바에 의한 슬기로운 개발 블로그",
"웹개발자가 꼭 알아야할 자바 기술 모음",
"파이썬과 자바로 구현하는 하이엔드 프로그래밍"
};
String keyword = "개발";
int count = 0;
for(int i=0; i < db.length; i++) {
if(db[i].contains(keyword)) {//검색어가 포함되어 있다면
count++;
}
}
System.out.println("검색 결과는 총 "+count+"건입니다");
//db에 들어있는 데이터 중 keyword가 포함된 데이터만 result로 복사가 이루어진다
String[] result = new String[count];//결과 수 만큼 배열을 만들고
int index = 0;
for(int i=0; i < db.length; i++) {
if(db[i].contains(keyword)) {
result[index] = db[i];
index++;
}
}
//출력
for(int i=0; i < result.length; i++) {
System.out.println(result[i]);
}
}
}
검색 결과는 총 3건입니다
나의 자바 개발 노트
자바를 위한, 자바에 의한 슬기로운 개발 블로그
웹개발자가 꼭 알아야할 자바 기술 모음
3. 위 기능들을 메소드로 만들기
package api.lang.string;
public class SearchEngine {
private String[] db = new String[] {
"자바로 배우는 프로그래밍 생활",
"나의 자바 개발 노트",
"자바를 위한, 자바에 의한 슬기로운 개발 블로그",
"웹개발자가 꼭 알아야할 자바 기술 모음",
"파이썬과 자바로 구현하는 하이엔드 프로그래밍"
};
public String[] search(String keyword) {
int count = 0;
for(int i=0; i < db.length; i++) {
if(db[i].contains(keyword)) {//검색어가 포함되어 있다면
count++;
}
}
//db에 들어있는 데이터 중 keyword가 포함된 데이터만 result로 복사가 이루어진다
String[] result = new String[count];//결과 수 만큼 배열을 만들고
int index = 0;
for(int i=0; i < db.length; i++) {
if(db[i].contains(keyword)) {
result[index] = db[i];
index++;
}
}
return result;
}
}
4. 검색 빈도 찾기
규칙 만들기 (1)
package api.lang.string;
public class Test08_4 {
public static void main(String[] args) {
// 문자열에 포함된 특정 단어의 출현 빈도를 측정
// Q : example에 "공장"이 몇 번 나왔는지 세어보세요
String example = "간장공장 공장장은 강공장장이고 된장공장 공장장은 공공장장이다";
String word = "공장";
int index = example.indexOf(word);
System.out.println("index = " + index);
index = example.indexOf(word, 3);
System.out.println("index = " + index);
index = example.indexOf(word, 6);
System.out.println("index = " + index);
index = example.indexOf(word, 12);
System.out.println("index = " + index);
index = example.indexOf(word, 20);
System.out.println("index = " + index);
index = example.indexOf(word, 23);
System.out.println("index = " + index);
index = example.indexOf(word, 29);
System.out.println("index = " + index);
}
}
규칙 만들기 (2)
package api.lang.string;
public class Test08_5 {
public static void main(String[] args) {
// 문자열에 포함된 특정 단어의 출현 빈도를 측정
// Q : example에 "공장"이 몇 번 나왔는지 세어보세요
String example = "간장공장 공장장은 강공장장이고 된장공장 공장장은 공공장장이다";
String word = "공장";
int index = example.indexOf(word, 0);
System.out.println("index = " + index);
index = example.indexOf(word, index + 1);
System.out.println("index = " + index);
index = example.indexOf(word, index + 1);
System.out.println("index = " + index);
index = example.indexOf(word, index + 1);
System.out.println("index = " + index);
index = example.indexOf(word, index + 1);
System.out.println("index = " + index);
index = example.indexOf(word, index + 1);
System.out.println("index = " + index);
index = example.indexOf(word, index + 1);
System.out.println("index = " + index);
}
}
규칙 만들기 (3)
package api.lang.string;
public class Test08_6 {
public static void main(String[] args) {
// 문자열에 포함된 특정 단어의 출현 빈도를 측정
// Q : example에 "공장"이 몇 번 나왔는지 세어보세요
String example = "간장공장 공장장은 강공장장이고 된장공장 공장장은 공공장장이다";
String word = "공장";
int index = 0;
index = example.indexOf(word, index);
System.out.println("index = " + index);
index++;
index = example.indexOf(word, index);
System.out.println("index = " + index);
index++;
index = example.indexOf(word, index);
System.out.println("index = " + index);
index++;
index = example.indexOf(word, index);
System.out.println("index = " + index);
index++;
index = example.indexOf(word, index);
System.out.println("index = " + index);
index++;
index = example.indexOf(word, index);
System.out.println("index = " + index);
index++;
index = example.indexOf(word, index);
System.out.println("index = " + index);
index++;
}
}
규칙 만들기 (4)
package api.lang.string;
public class Test08_7 {
public static void main(String[] args) {
// 문자열에 포함된 특정 단어의 출현 빈도를 측정
// Q : example에 "공장"이 몇 번 나왔는지 세어보세요
String example = "간장공장 공장장은 강공장장이고 된장공장 공장장은 공공장장이다";
String word = "공장";
int index = 0;
while (true) {
index = example.indexOf(word, index);
System.out.println("index = " + index);
if (index == -1) {// -1이면 없다는 소리
break;
}
index++;
}
}
}
규칙 만들기 (5)
package api.lang.string;
public class Test08_8 {
public static void main(String[] args) {
// 문자열에 포함된 특정 단어의 출현 빈도를 측정
// Q : example에 "공장"이 몇 번 나왔는지 세어보세요
String example = "간장공장 공장장은 강공장장이고 된장공장 공장장은 공공장장이다";
String word = "공장";
int index = 0;
int count = 0;
while (true) {
index = example.indexOf(word, index);
System.out.println("index = " + index);
if (index == -1) {// -1이면 없다는 소리
break;
}
count++;
index++;
}
System.out.println("count = " + count);
}
}
5 . 위 SearchEngine 메소드에 빈도 측정 코드 추가하기
package api.lang.string;
public class SearchEngine {
private String[] db = new String[] {
"자바로 배우는 프로그래밍 생활",
"나의 자바 개발 노트",
"자바를 위한, 자바에 의한 슬기로운 개발 블로그",
"웹개발자가 꼭 알아야할 자바 기술 모음",
"파이썬과 자바로 구현하는 하이엔드 프로그래밍"
};
public String[] search(String keyword) {
int count = 0;
for(int i=0; i < db.length; i++) {
if(db[i].contains(keyword)) {//검색어가 포함되어 있다면
count++;
}
}
//db에 들어있는 데이터 중 keyword가 포함된 데이터만 result로 복사가 이루어진다
String[] result = new String[count];//결과 수 만큼 배열을 만들고
int index = 0;
for(int i=0; i < db.length; i++) {
if(db[i].contains(keyword)) {
result[index] = db[i];
index++;
}
}
return result;
}
// 빈도 측정 추가
public int frequency(String example, String word) {
int index = 0;
int count = 0;
while(true) {
index = example.indexOf(word, index);
if(index == -1) {//-1이면 없다는 소리
break;
}
count++;
index++;
}
return count;
}
}
6. 필터링과 빈도측정을 결합
package api.lang.string;
public class Test08_10 {
public static void main(String[] args) {
SearchEngine engine = new SearchEngine();
String keyword = "개발";
String[] result = engine.search(keyword);
for (int i = 0; i < result.length; i++) {
System.out.print("[빈도 : " + engine.frequency(result[i], keyword) + "] ");
System.out.print("[시작 : " + result[i].indexOf(keyword) + "]");
System.out.println(result[i]);
}
}
}
->
[빈도 : 1] [시작 : 6]나의 자바 개발 노트
[빈도 : 1] [시작 : 20]자바를 위한, 자바에 의한 슬기로운 개발 블로그
[빈도 : 1] [시작 : 1]웹개발자가 꼭 알아야할 자바 기술 모음
7. 마지막 정렬 코드 추가하기
package api.lang.string;
public class Test08_11 {
public static void main(String[] args) {
SearchEngine engine = new SearchEngine();
String keyword = "자바";
String[] result = engine.search(keyword);
// 처리 : 버블정렬
for (int h = result.length - 1; h > 0; h--) {// 마지막 위치부터 1까지
for (int k = 0; k < h; k++) {// h회차 반복문
int freq1 = engine.frequency(result[k], keyword);// k위치의 빈도
int index1 = result[k].indexOf(keyword);// k위치의 시작
int freq2 = engine.frequency(result[k + 1], keyword);// k+1위치의 빈도
int index2 = result[k + 1].indexOf(keyword);// k+1위치의 시작
// 빈도가 낮은 경우에 뒤로 이동, 빈도가 같으면 위치가 큰 것을 뒤로 이동
// if(빈도가 낮거나 또는 빈도가 같으면서 위치가 크다면) {
if (freq1 < freq2 || (freq1 == freq2 && index1 > index2)) {
String temp = result[k];
result[k] = result[k + 1];
result[k + 1] = temp;
}
}
}
for (int i = 0; i < result.length; i++) {
// System.out.print("[빈도 : "+engine.frequency(result[i], keyword)+"] ");
// System.out.print("[시작 : "+result[i].indexOf(keyword)+"]");
System.out.println(result[i]);
}
}
}
- 정답
자바를 위한, 자바에 의한 슬기로운 개발 블로그
자바로 배우는 프로그래밍 생활
나의 자바 개발 노트
파이썬과 자바로 구현하는 하이엔드 프로그래밍
웹개발자가 꼭 알아야할 자바 기술 모음
라이브러리 - 문자열 기타 기능들
1. 문자열 분해 - split()
2. 원시형 자료형과의 변환(ex : int <----> String)
package api.lang.string;
public class Test09 {
public static void main(String[] args) {
// 1. 문자열 분해 - split()
String colors = "빨강/주황/노랑/초록/파랑/남색/보라";
String[] colorList = colors.split("/");// 슬래시(/)를 구분자(delimiter)로 하여 문자열 분해
System.out.println("색상은 총 " + colorList.length + "개 있습니다");
for (int i = 0; i < colorList.length; i++) {
System.out.println(colorList[i]);
}
// 2. 원시형 자료형과의 변환(ex : int <----> String)
int a = 10;
// String b = a;//에러
// String b = (String)a;//에러
// String b = "" + a;//편법 : 문자열 덧셈은 결과가 문자열
String b = String.valueOf(a);
System.out.println("b = " + b);
String c = "12345";
// int d = c;
// int d = (int)c;
int d = Integer.parseInt(c);// 변환 명령(String ---> int)
System.out.println("d = " + d);
}
}
- 정답
색상은 총 7개 있습니다
빨강
주황
노랑
초록
파랑
남색
보라
b = 10
d = 12345
정규표현식 - 필요성
정규 표현식(REGEX, REGular EXpression)
= 문자열을 검사하는 식
ex : 올바른 휴대폰 번호인지 검사(01X-XXXX-XXXX)
package api.regex;
public class Test01 {
public static void main(String[] args) {
// 정규 표현식(REGEX, REGular EXpression)
// = 문자열을 검사하는 식
// = ex : 올바른 휴대폰 번호인지 검사(01X-XXXX-XXXX)
String phoneNumber = "010-1212-3434";
if (phoneNumber.length() == 13) {
boolean check1 = phoneNumber.charAt(0) == '0';
boolean check2 = phoneNumber.charAt(1) == '1';
boolean check3 = phoneNumber.charAt(2) == '0';
boolean check4 = phoneNumber.charAt(3) == '-';
boolean check5 = phoneNumber.charAt(4) >= '0' && phoneNumber.charAt(4) <= '9';
boolean check6 = phoneNumber.charAt(5) >= '0' && phoneNumber.charAt(5) <= '9';
boolean check7 = phoneNumber.charAt(6) >= '0' && phoneNumber.charAt(6) <= '9';
boolean check8 = phoneNumber.charAt(7) >= '0' && phoneNumber.charAt(7) <= '9';
boolean check9 = phoneNumber.charAt(8) == '-';
boolean check10 = phoneNumber.charAt(9) >= '0' && phoneNumber.charAt(9) <= '9';
boolean check11 = phoneNumber.charAt(10) >= '0' && phoneNumber.charAt(10) <= '9';
boolean check12 = phoneNumber.charAt(11) >= '0' && phoneNumber.charAt(11) <= '9';
boolean check13 = phoneNumber.charAt(12) >= '0' && phoneNumber.charAt(12) <= '9';
if (check1 && check2 && check3 && check4 && check5 && check6 && check7 && check8 && check9 && check10
&& check11 && check12 && check13) {
System.out.println("올바른 전화번호 형식입니다");
} else {
System.out.println("잘못된 전화번호 형식입니다");
}
} else {
System.out.println("잘못된 전화번호 형식입니다");
}
}
}
-> 너무 노가다 방식이다
이런 방식 사용 X
정규표현식 사용!
(모든 언어에서 사용 가능)
^ : 시작
& : 끝
[0123456789] : 0 1 2 3 4 5 6 7 8 9 중 하나
[0-9] : 0부터 9까지 중 하나
(010\011) : 010 또는 011 중 하나
[0-9]{4} : 0부터 9까지 중 하나 X 4
예시
^010-[0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789][0123456789][0123456789]$
package api.regex;
import java.util.regex.Pattern;
public class Test02 {
public static void main(String[] args) {
String phoneNumber = "010-1212-3434";
// String regex = "^010-[0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789][0123456789][0123456789]$";
// String regex = "^010-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$";
// String regex = "^010-[0-9]{4}-[0-9]{4}$";
String regex = "^010(-[0-9]{4}){2}$";
boolean result = Pattern.matches(regex, phoneNumber);
System.out.println("result = " + result);
}
}
Q. 사용자가 입력한 이름이 올바른 형식인지 검사하여 출력
package api.regex;
import java.util.regex.Pattern;
public class Test03 {
public static void main(String[] args) {
String name = "홍길동";
String regex = "^[가-힣]{2,7}$";
boolean result = Pattern.matches(regex, name);
if (result) {
System.out.println("올바른 형식의 이름입니다");
} else {
System.out.println("이름은 한글 2~7자 이내로 작성하세요");
}
}
}
Q. 사용자가 입력한 이메일이 올바른 형식인지 검사하여 출력
이메일은 @ 기준으로 앞부분은 네이버 아이디와 동일한 형식으로 사용하며
@ 뒷부분은 8~10자리의 영문 도메인 작성 후 다음 중 .com .net .co.kr 하나로 끝나야한다
package api.regex;
import java.util.regex.Pattern;
public class Test04 {
public static void main(String[] args) {
String id = "asdasd@asdasddd.co.kr";
String regex = "^[a-z][a-z\\d-9-_]{4,19}@[a-z]{8,10}(\\.com|\\.net|\\.co\\.kr)$";// 첫 글자는 반드시 영문 소문자
boolean result = Pattern.matches(regex, id);
if (result) {
System.out.println("멋진 아이디네요!");
} else {
System.out.println("앞 5~20자, 뒤 8~10자리 이내에 이름만 사용 가능합니다");
}
}
}
Q. 날짜는 1900-01-01 부터 2099-12-31 까지의 범위 내에서만 설정이 가능합니다
1. 모든 달의 날짜를 31일이라고 가정하고 식을 작성
2. 월별로 다른 날짜를 적용시켜서 식을 작성
3. 윤년을 고려하려면 어떻게 되는지 식을 작성
package api.regex;
import java.util.regex.Pattern;
public class Test05 {
public static void main(String[] args) {
String birth = "2020-02-29";
// 1. 모든 달이 31일이라고 가정한 경우의 정규표현식
// String regex = "^(19[0-9]{2}|20[0-9]{2})-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$";
// 2. 2월은 28일까지라고 정한 경우의 정규표현식
// String regex = "^(19[0-9]{2}|20[0-9]{2})-(02-(0[1-9]|1[0-9]|2[0-8])|(0[469]|11)-(0[1-9]|1[0-9]|2[0-9]|30)|(0[13578]|1[02])-(0[1-9]|1[0-9]|2[0-9]|3[0-1]))$";
// 3. 프로그래밍 코드를 이용하여 윤년 여부를 계산한 뒤 2월에 적용시킨 정규표현식
int year = Integer.parseInt(birth.substring(0, 4));
boolean isYunYear = year % 400 == 0 || year % 100 != 0 && year % 4 == 0;
String regex;
if (isYunYear) {
regex = "^(19[0-9]{2}|20[0-9]{2})-(02-(0[1-9]|1[0-9]|2[0-9])|(0[469]|11)-(0[1-9]|1[0-9]|2[0-9]|30)|(0[13578]|1[02])-(0[1-9]|1[0-9]|2[0-9]|3[0-1]))$";
} else {
regex = "^(19[0-9]{2}|20[0-9]{2})-(02-(0[1-9]|1[0-9]|2[0-8])|(0[469]|11)-(0[1-9]|1[0-9]|2[0-9]|30)|(0[13578]|1[02])-(0[1-9]|1[0-9]|2[0-9]|3[0-1]))$";
}
if (Pattern.matches(regex, birth)) {
System.out.println("생년월일 설정이 완료되었습니다.");
} else {
System.out.println("잘못된 생년월일 형식입니다.");
}
}
}
라이브러리 - Math, System 클래스
Math 클래스
= 생성자가 없는 클래스
Math 클래스는 다음 두 가지 경우 중 1번에 해당한다
1. 모든 기능을 등록해두고 편하게 호출하려는 의도가 있는 경우(구성요소가 모두 static)
2. 미리 객체를 만들어두고 그 객체만 사용하게 하려는 경우(싱글톤 방식. 구성요소가 static이 아님)
package api.lang.etc;
public class Test01 {
public static void main(String[] args) {
// Math m = new Math(); X
System.out.println(Math.PI);// 원주율
System.out.println(Math.E);// 자연지수 e
int a = 10;
int b = 20;
System.out.println(Math.abs(a - b));// abs : 절대값 계산 메소드
System.out.println(Math.max(a, b));// max : 최대값 계산 메소드
System.out.println(Math.min(a, b));// min : 최소값 계산 메소드
double c = 1.5;
System.out.println(Math.ceil(c));// 올림
System.out.println(Math.round(c));// 반올림
System.out.println(Math.floor(c));// 버림
System.out.println(Math.random());// 랜덤
int number = 8;
System.out.println(Math.sqrt(number));
System.out.println(Math.pow(2, 10));// 2의 10제곱
}
}
System 클래스
생성자가 없는 클래스이며 편리하게 이용하도록 전 구성요소가 static 처리되어 있다
운영체제(OS)의 정보를 이용할 수 있도록 구성된 클래스
package api.lang.etc;
public class Test02 {
public static void main(String[] args) {
// 통로
// = System.out 은 표준 출력 통로 객체
// = System.in 은 표준 입력 통로 객체
// = System.err 는 표준 오류 통로 객체
System.out.println("테스트");
System.err.println("테스트");
// 현재시각 구하기(ms)
// = 기준시(1970년 1월 1일 0시 0분 0초)로부터 지금까지 흘러온 밀리초를 반환
// = 시간차를 구할 때 사용(소요시간)
long time = System.currentTimeMillis();
System.out.println("time = " + time);
// 운영체제의 정보를 읽어올 수 있다(ex : 환경변수)
// = System.getProperties()는 등록된 모든 정보를 반환
// = System.getProperty("이름")은 해당 이름에 저장된 정보를 반환
System.out.println(System.getProperties());
System.out.println(System.getProperty("user.country"));
String country = System.getProperty("user.country");
switch (country) {
case "KR":
System.out.println("만나서 반가워요~");
break;
case "US":
System.out.println("Good to see you~");
break;
}
System.out.println(System.getProperty("os.name"));
String os = System.getProperty("os.name");
if (os.startsWith("Windows")) {
System.out.println("윈도우에서 실행하셨네요?");
} else {
System.out.println("윈도우가 아니네요?");
}
System.out.println(System.getProperty("java.specification.version"));
double javaVersion = Double.parseDouble(System.getProperty("java.specification.version"));
if (javaVersion < 9) {
System.out.println("자바 9 이상으로 업그레이드 하세요!");
}
// 프로그램 종료
// 운영체제는 0이 반환되면 정상 종료되었다고 판단. 0이 아닌 숫자가 반환되면 뭔가 이상하게 끝났다고 판단
System.exit(0);// 프로그램을 종료하면서 시스템에 0을 반환하라~
System.out.println("메세지!");
}
}
'Java 웹 개발' 카테고리의 다른 글
21.09.09 - 웹 개발 입문 22일차 (0) | 2021.09.09 |
---|---|
21.09.08 - 웹 개발 입문 21일차 (0) | 2021.09.08 |
21.09.06 - 웹 개발 입문 19일차 (0) | 2021.09.06 |
21.09.03 - 웹 개발 입문 18일차 (0) | 2021.09.03 |
21.09.02 - 웹 개발 입문 17일차 (0) | 2021.09.02 |