ちくやらアーカイブ

このブログは気分よって構成されています。 BGMも気分で流してます。 あなたの忍耐に感謝します。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告|
  3. トラックバック(-)|
  4. コメント(-)

基本データ型と演算精度など

● 変数の型


変数には基本データ型と参照型の二種類ある。

基本データ型
→boolean byte short int long char float double

参照型
→クラス型、インターフェース型、配列型
※Stringはクラス型


・byte …8ビット。-128~127
・short …16ビット。-32768~32767
・int …32ビット。-2147483648~2147483647
・long …64ビット。

・float …32ビットの浮動小数点。
・double …64ビットの浮動小数点。デフォルトの小数はこっち。

・boolean …true、falseが入る。
・char …16ビットのUnicode。符号無し16ビット整数で0~65535であればいい。


※floatやdoubleに整数をいれる時は語尾にfとかdをつけなくていい。
※double d = 1.0f;はOK。doubleの方が大きいので。



・float宣言の問題で

 float f = '1';
 はOK。'1'はcharである意味整数値なので。

 float f = 3e-2;
 は×。3e-2=3*10の-2乗=0.03。なんで、小数だからfをつけないとfloatにはいれられない。




● キャストと縮小変換


byte < short < int < long < float < long
 I
char---+


charはint以上のものにも変換できる。
shortとbyteを直接charには代入できない。
(int > charってこと)

short = charはキャストしないとNG。
char = short も同様にキャストしないとNG。

byte b = 127;
はintの127がbyteに入る。
が、この時は「縮小変換」されてはいっている。

byte b = 128;
はbyteに縮小変換したときにbyteの範囲をこえているのでコンパイルエラー。

ただ、
int i= 128;
byte b = (byte)i;
はOK。byteにキャストした時に128は-128になる。


int > short

なので
int a = 10;

shortの変数にいれるにはキャストしないとコンパイルエラーになる。
short s = (short)a;




● 演算精度


intより小さい整数は計算するとintに変換される


int a = 300;
float f = a / 7;

はf = 42.0;
a/7はintでのわり算で42になるが、floatに入ると42.0になる。


byte b = 10;
short s = b * b;
はコンパイルエラーになる。

short s = (short)(b * b);
ならエラーにならない。



割り算は「割る数」と「割られる数」が共に整数ならば結果は整数となり、
それ以外は浮動小数となる。



かけ算も、掛け合わせる2つの数値が整数の場合は結果が整数、それ以外は浮動小数。

(short)x / y * 2
で、yがdouble型だったら、この演算はdouble型で返す。



浮動小数点同士の演算ではエラーはおきない。
1.0 / 0.0 でもエラーはでない。


double dcc = 1.0/ 0.0;
をやったら確かにエラーでなかった。

int aaa = 1 / 0;

Exception in thread "main" java.lang.ArithmeticException: / by zero
がでた。


result += i-- * --j ;
という計算式は
result += (i--) * (--j) ;
と同じ。



● 0除算

整数を0で除算すると
java.lang.ArithmeticException: / by zero
がでる。

同様に0で%剰余しても
java.lang.ArithmeticException: / by zero
がでる。


ただし、浮動小数を/や%とかで0で割ってもエラーにならない。
これを「NaN」という。




● 条件演算子

変数 = (ブール式) ? trueの場合に代入する値 : falseの場合に代入する値

int a = 3;
String s = (a > 2) ? "aは2よりでかい" : "aは2以下";


スポンサーサイト
  1. 2005/04/02(土) 13:55:50|
  2. 資格:SJC-P|
  3. トラックバック:0|
  4. コメント:1
<<変数初期化関係 | ホーム | ビット計算>>

コメント

悩んでいたところが解決しました ありがとうございます
  1. 2014/05/11(日) 19:39:54 |
  2. URL |
  3. #-
  4. [ 編集]

コメントの投稿

管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://runark.blog6.fc2.com/tb.php/14-6ef27e71

ルナーク

Category

Recent Comments

Recent Entries

Recent Trackbacks

Archives

Links

Search

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。