22.04.18

64473 단어 JavaJava

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

좋은 웹페이지 즐겨찾기