printf
printf("%[argument_index$], [flags] [width], [.precision] conversion", 変数あるいは値)
<flags>
- : 左に整列、右は空白
0:空白を0に埋める
+:+、-符号出力
, : 整数の3桁で,を付ける。
<conversion>
%d 10進法整数
%o 8進法整数
%x 16進法整数
%f 実数
%e 指数
%b boolean
%c 文字
%s String
%n どのOSでも改行(windowは実は\r\nだけど\nに見えるようだ)
package ch02.sec12;
public class PrintfExample2 {
public static void main(String[] args) {
int number = 10;
double score = 12.345;
String text = String.valueOf(number);
System.out.printf("%b %n", 3<1); //boolean
System.out.printf("%d %n", number); //decimal
System.out.printf("%o %n", number); //octal
System.out.printf("%x %n%n", number); //hexadecimal
System.out.printf("%,d %n", 10000000); //decimal
System.out.printf("%+d %n", number); //decimal
System.out.printf("%+d %n", -number); //decimal
System.out.printf("%f %n", score); // 浮動小数点(floating point)
System.out.printf("%e %n%n", score); // 指数(exponent)
System.out.printf("%c %n",65); //char(UNICODE)
System.out.printf("%s %n%n", text); //String
System.out.printf("[%10d] %n", number);
System.out.printf("[%-10d] %n", number);
System.out.printf("[%010d] %n", number);
System.out.printf("[%10.5f] %n", score);
System.out.printf("[%010.5f] %n", score);
}
}
[result]
false
10
12
a
10,000,000
+10
-10
12.345000
1.234500e+01
A
10
[ 10]
[10 ]
[0000000010]
[ 12.34500]
[0012.34500]
Scanner
コンソールに文字列リテラルを入力して、それを持つことができる。
Scanner scanner = new Scanner(System.in);
String inputData = scanner.nextline();
必ず、close()
符号演算子
+ 被演算子の符号を維持。
- 被演算子の符号を変更。
変数の演算は基本的にintに変換されてから実行されるため、
byte b =100; byte result = -b; <ーエラー
byte b =100; int result = =b; <ー OK
増減演算子
++(--)被演算子 : 被演算子の値を1増加(減少)させる。
被演算子++(--) : 他の演算を実施した後被演算子の値を1増加(減少)させる。
int x = 1; int y = 1;
int result 1 = ++x + 10; -> int result1 = 2 + 10; 12
int result 2 = y++ + 10; -> int result2 = int result2 = 1+10; -> yを1増加 11
最終的にxとyは2になる。
算術演算子
1)OVERFLOWとUNDERFLOWを気を付ける。
int a = 1000000; int b = 1000000; int result = a*b -> 演算の値がOVERFLOWのため-72739968;発生。
long a =1000000; long b=1000000; long result = a*b -> 1000000000000
MAX_VALUE:最大値、MIN_VALUE:最小値
2)正確な演算は整数を使う。
コンピューターは実数を保存する際に、2進法で変換して、保存する。
0.125の場合は2進法で分けて表現できるが、
0.1の場合は0.00011001 100110001 100110001 100110001 100110001 100110001 100110001 のように
仮数のところが無限に繰り返される。
これは24bitの仮数(mantisa)を保存するfloatにも52bitのmantisaを保存するdoubleにも完璧にこめることができないため、精密度の損失が発生する。
なので、0.1+0.2==0.3はfalseになる。
お金のように誤差があればいけないものは整数もしくはBigDecimalなどを活用する。
https://www.youtube.com/watch?v=-GsrYvZoAdA
'IT自主学習 (2023.05.23~) > Java(2023.05.23~)' 카테고리의 다른 글
プログラミング自主学習 30日目 比較演算子/論理演算子 (0) | 2023.06.25 |
---|---|
プログラミング自主学習 29日目 ArithmeticExeption・Infinity・Nan (0) | 2023.06.24 |
プログラミング自主学習 27日目 演算時、自動形変換/文字列を基本タイプに変換 (0) | 2023.06.22 |
プログラミング自主学習 25日目 変数(with CS) (0) | 2023.06.20 |
プログラミング自主学習 24日目 Java8->Java17,VSCODE (0) | 2023.06.19 |