22.04.18


Wrapper Class : Float, Double


primitive datatypeは小文字/wrapperクラスで、最初のアルファベットは大文字です
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


元のデータ型以外はクラスで作成されたJavaインスタンスです
コンピュータを実行するには、まず実行オブジェクトをメモリに入れます.(load)
文字列Stringは、classをメモリにロードすることもできます.
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に変換した結果を保存しないと消えてしまいます
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 Meeting you,也是.
Nice tA meet yAu, tAA.
Nice tE meet yEu, tEE.
原版:Nice to Meeting you,也是.
例:Nice to Meeting u~,也是.
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 Meeting you,也是.
トリムトリム:空白のトリム
-このバージョンの不変の法則: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誕生日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


:数学関連科目
Ceil:アップロード
ゆか
round:四捨五入
最大数:比較的大きい数
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.0 cm、体重:80.0 kg、血嫌い:A