22.04.18
Wrapper Class : Float, Double
primitive data type은 소문자 / Wrapper class는 첫 글자가 대문자
package ch02;
public class Ch02Ex10 {
public static void main(String[] args) {
System.out.println(Float.MIN_VALUE + " ~ " + Float.MAX_VALUE);
//long type 범위 : 1.4E-45 ~ 3.4*10^38
System.out.println(Double.MIN_VALUE + " ~ " + Double.MAX_VALUE);
//double type 범위 : 9E-324 ~ 1.7*10^308
double dVar = 3.14;
//double bit 구성 : 부호 비트 1개, 지수 비트 11개, 가수(소수점) 비트 52개
int iVar = (int) dVar; // 강제 형변환
System.out.println(iVar); //소수점 아래를 버림
Double wVar = new Double(3.14);
int iVar2 = wVar.intValue(); //Wapper class 형변환 메소드
System.out.println(iVar2); //소수점 아래를 버림
}
}
1.4E-45 ~ 3.4028235E38
4.9E-324 ~ 1.7976931348623157E308
3
3
Boolean
package ch02;
public class Ch02Ex12 {
public static void main(String[] args) {
boolean bVar1 = true; //boolean 선언 및 초기화
boolean bVar2;
bVar2 = 1 > 10; //명제의 참 거짓 대입
System.out.println("bVar1 : " + bVar1 + ", bVar2 : " + bVar2);
}
}
출력 결과
bVar1 : true, bVar2 : false
Character
char는 ASCII 코드로 숫자와 문자간의 호환이 가능
ASCII 코드표
package ch02;
public class Ch02Ex13 {
public static void main(String[] args) {
char chVar1 = 'A'; //문자 타입 선언 및 초기화
System.out.println(chVar1);
char chVar2 = 36;
System.out.println(chVar2);
int iVar1 = 'H'; //ASCII 코드 H 값인 72 대입
System.out.println(iVar1);
int iVar2 = 88; //ASCII 코드 X
char chVar3 = (char) iVar2;
System.out.println(chVar3);
}
}
출력 결과
A
$
72
X
String
primitive data type 외에는 모두 class로 만들어진 java instance
컴퓨터가 실행하기 위해서는 실행 대상을 먼저 메모리에 올려야 한다. (load)
문자열을 의미하는 String도 class를 메모리에 load해서 사용
package ch02;
public class Ch02Ex14 {
public static void main(String[] args) {
String str1 = new String("Hello World"); //메모리에 문자열 공간(좌표 저장) 확보, 문자열 선언 및 초기화(선언된 문자열의 주소값을 str1에 대입)
//"Hello World"라는 문자열을 메모리에 새롭게 만들어진 문자열에 대입 > 메모리를 두 번 잡아야 함
System.out.println(str1);
String str2 = "Hello";
System.out.println(str2);
}
}
출력 결과
Hello World
Hello
concat : 문자열 이어 붙이기
package ch02;
public class Ch02Ex15 {
public static void main(String[] args) {
String str1 = "서울특별시";
String str2 = "마포구";
String str3 = "대홍동";
System.out.println(str1.concat(str2).concat(str3));
System.out.println(str1.concat(" ").concat(str2).concat(" ").concat(str3));
System.out.println("거구장".concat(" ").concat("3층"));
System.out.println(str1 + str2 + str3);
System.out.println(str1 + " " + str2 + " " + str3);
System.out.println("거구장" + " " + "3층");
}
}
출력 결과
서울특별시마포구대홍동
서울특별시 마포구 대홍동
거구장 3층
서울특별시마포구대홍동
서울특별시 마포구 대홍동
거구장 3층
길이 / 위치
길이값 : length
위치값 : index
ex) Hello - 길이 : 5, 길이(length)는 1부터 시작
ex) Hello - 각각의 위치 : H(0), e(1), l(2), l(3), o(4), 위치(index)는 0부터 시작
package ch02;
public class Ch02Ex16 {
public static void main(String[] args) {
String str = "Nice to meet you, too.";
System.out.println(str.length()); //공백, 쉼표, 마침표 포함 22
System.out.println(str.indexOf('.'));
System.out.println(str.indexOf("."));
//작은 따옴표는 문자 하나(char data type)
//큰 따옴표는 문자열(String type) : 글자 갯수와 상관없음
System.out.println(str.indexOf('e'));
//좌 > 우 검색, 가장 앞에 저장된 위치 출력
System.out.println(str.lastIndexOf('e'));
//우 > 좌 검색, 가장 뒤에 저장된 위치 출력
//charAt : 특정 위치값의 문자 반환
System.out.println(str.charAt(0));
}
}
출력 결과
22
21
21
3
10
N
문자열 비교
String type에는 문자열이 저장된 '위치'가 저장됨
String str = new String()의 경우, 문자열이 같아도 다른 위치에 문자열이 생성
String str = ""의 경우, 상수 공간에 생성되므로 문자열이 같다면 먼저 생성된 문자열의 위치가 재사용(저장)
문자열의 위치가 아니라 문자열의 내용 비교 메소드
equals : 문자열 비교(대소문자)
equalsIgnoreCase : 문자열 비교(대소문자 무시)
package ch02;
public class Ch02Ex17 {
public static void main(String[] args) {
int iVar1 = 777;
int iVar2 = 777;
System.out.println("primitive : " + (iVar1 == iVar2));
// == : 같다
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println("String : " + (str1 == str2));
//문자열의 비교가 아니라 str1, str2에 저장된 위치값을 비교, false 도출
String str3 = "Hello";
String str4 = "Hello";
System.out.println("Another String : " + (str3 == str4));
//상수 공간에 만들어진 "Hello"의 동일한 위치값이 str3, str4에 저장, true 도출
String str5 = "hello";
System.out.println("str1.equals(str5) : " + str1.equals(str5));
//문자열 비교(대소문자)
System.out.println("str1.equals(str5) : " + str1.equalsIgnoreCase(str5));
//문자열 비교(대소문자 무시)
//
}
}
출력 결과
primitive : true
String : false
Another String : true
str1.equals(str5) : false
str1.equals(str5) : true
replace : 문자열 바꾸기
-본판 불변의 법칙 : replace로 변환한 결과는 저장하지 않으면 사라진다
package ch02;
public class Ch02Ex18 {
public static void main(String[] args) {
String str = "Nice to meet you, too.";
System.out.println(str.replace("you", "u~")); //일회성 변화
System.out.println("원본 : " + str); //본래 데이터 유지
System.out.println(str.replace("o", "A"));
System.out.println(str.replaceAll("o", "E"));
//일회성 변화, 지정한 모든 문자 변환(언어에 따라 첫 문자만 바뀌기도 함, java는 두 메소드의 결과가 동일)
System.out.println("원본 : " + str); //본래 데이터 유지
String str2 = str.replace("you", "u~"); //변환문 저장
System.out.println("변환문 : " + str2);
}
}
출력 결과
Nice to meet u~, too.
원본 : Nice to meet you, too.
Nice tA meet yAu, tAA.
Nice tE meet yEu, tEE.
원본 : Nice to meet you, too.
변환문 : Nice to meet u~, too.
substring : 문자열 자르기
-본판 불변의 법칙 : substring으로 자른 결과는 저장하지 않으면 사라진다
split : 문자열 분리
package ch02;
public class Ch02Ex19 {
public static void main(String[] args) {
String str = "Nice to meet you, too.";
System.out.println(str.substring(6)); //index 6~
System.out.println(str.substring(6, 14)); //index 6~14
System.out.println(str); //본래 데이터 유지
String [] sArray = str.split(" "); //" "(공백)을 기준으로 분리
System.out.println(sArray[0]);
System.out.println(sArray[1]);
System.out.println(sArray[2]);
System.out.println(sArray[3]);
System.out.println(sArray[4]);
System.out.println("원본 : " + str);
}
}
출력 결과
o meet y
Nice to meet you, too.
Nice
to
meet
you,
too.
원본 : Nice to meet you, too.
trim : 공백 자르기
-본판 불변의 법칙 : trim으로 자른 결과는 저장하지 않으면 사라진다
-문자열의 앞과 뒤의 공백만 잘린다. 문자열 중간의 공백은 자르지 않는다. ex. 로그인 아이디 입력시 사용
toUpperCase : 모두 대문자로
toLowerCase : 모두 소문자로
-본판 불변의 법칙 : toUpperCase / toLowerCase로 바꾼 결과는 저장하지 않으면 사라진다
package ch02;
public class Ch02Ex20 {
public static void main(String[] args) {
String str1 = " 열 공 ";
System.out.println("trim : [" + str1.trim() + "]");
System.out.println("원본 : [" + str1 + "]");
//문자열의 앞뒤의 공백만 잘린다
String str2 = "HAPPY birthday TO you";
System.out.println("대문자 변환 : " + str2.toUpperCase());
System.out.println("소문자 변환 : " + str2.toLowerCase());
System.out.println("원본 : " + str2); //본래 데이터 유지
}
}
출력 결과
trim : [열 공]
원본 : [ 열 공 ]
대문자 변환 : HAPPY BIRTHDAY TO YOU
소문자 변환 : happy birthday to you
원본 : HAPPY birthday TO you
Integer.parseInt, Double.parseDouble...
: 문자열로 만들어진 숫자를 정수, 실수로 형변환
package ch02;
public class Ch02Ex21 {
public static void main(String[] args) {
String str1 = "777";
System.out.println(str1 + 10);
//'+'는 문자열 합성, 문자열과 숫자는 + 연산이 아닌 문자열 합성
int iVar1 = Integer.parseInt(str1);
System.out.println(iVar1 + 10);
String str2 = "777.77";
System.out.println(str2 + 10.10);
double dVar1 = Double.parseDouble(str2);
System.out.println(dVar1 + 10.10);
String str3 = "9876-8765";
//str3의 위치값으로 분리
String str31 = str3.substring(0, 4);
String str32 = str3.substring(5);
int iVar2 = Integer.parseInt(str31) - Integer.parseInt(str32);
System.out.println(str3 + "=" + iVar2);
//split으로 분리
String [] sArray = str3.split("-");
int iVar3 = Integer.parseInt(sArray[0]) - Integer.parseInt(sArray[1]);
System.out.println(str3 + "=" + iVar3);
}
}
출력 결과
77710
787
777.7710.1
787.87
9876-8765=1111
9876-8765=1111
Math class
: 수학 관련 class
ceil : 올림
floor : 내림
round : 반올림
max : 큰 수 비교
min : 작은 수 비교
pow : N제곱
sqrt : 제곱근
random : 난수 (0≤x<1), 실행마다 다른 난수 생성
package ch02;
public class Ch02Ex22 {
public static void main(String[] args) {
System.out.println("ceil(0.1) : " + Math.ceil(0.1)); //올림
System.out.println("floor(0.9) : " + Math.floor(0.9)); //내림
System.out.println("round(0.4) : " + Math.round(0.4)); //반올림
System.out.println("round(0.5) : " + Math.round(0.5)); //반올림
System.out.println("max(100, 200) : " + Math.max(100, 200));
System.out.println("min(100, 200) : " + Math.min(100, 200));
System.out.println("pow(2, 5) : " + Math.pow(2, 5)); //N제곱
System.out.println("sqrt(25) : " + Math.sqrt(25)); //제곱근
System.out.println("random : " + Math.random()); //난수 생성(0.0 ~ 0.999...)
//0 ~ 100 사이의 수
System.out.println("random * 100 : " + Math.random() * 100);
//0 ~ 1000 사이의 수
System.out.println("random * 1000 : " + Math.random() * 1000);
}
}
출력 결과
ceil(0.1) : 1.0
floor(0.9) : 0.0
round(0.4) : 0
round(0.5) : 1
max(100, 200) : 200
min(100, 200) : 100
pow(2, 5) : 32.0
sqrt(25) : 5.0
random : 0.8411088698777355
random 100 : 59.56350421218407
random 1000 : 650.0617894741881
printf
: print + format
서식 출력 > 기본이 문자열 출력 / 정수, 실수, 문자 출력시 type에 맞는 문자 필요
character : %c
integer : %d
float : %f / %.Nf (기본은 소수점 6자리까지, .N의 경우 소수점 N자리까지 출력)
String : %s
package ch02;
public class Ch02Ex23 {
public static void main(String[] args) {
System.out.printf("그냥 문자열 출력 가능\n"); // \n : 줄바꿈
System.out.printf("%s\n", "그냥 문자열 출력 가능");
//%s는 문자열 출력
System.out.printf("%d\n", 123);
//%d는 정수 출력
System.out.printf("%f\n", 3.14);
//%f는 실수 출력, 소수점 6자리 출력이 기본
System.out.printf("%.2f\n", 3.14);
System.out.printf("%.20f\n", 3.14);
System.out.printf("%c\n", 'A');
//%c는 문자 출력
System.out.printf("%d + %d = %d\n", 1, 2, 3);
System.out.printf("이름 : %s, 나이 : %d, 키 : %.1fcm, 몸무게 : %.1fkg, 혈액혐 : %c\n",
"홍길동", 25, 180.0, 80.0, 'A');
}
}
출력 결과
그냥 문자열 출력 가능
123
3.140000
3.14
3.14000000000000000000
A
1 + 2 = 3
이름 : 홍길동, 나이 : 25, 키 : 180.0cm, 몸무게 : 80.0kg, 혈액혐 : A
Author And Source
이 문제에 관하여(22.04.18), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@enfyswon07/22.04.18저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)