基本的なデータ型に関するテーマ
3445 ワード
package com.sdjt.study.jibenleixing;
/**
* @author:lyy
* @version :2009-8-4 06:13:11
*/
public class Test {
public static void main(String[] args) {
short s1 = 1;
//
// s1 = s1 + 1;
//
s1 = 1 + 1;
//
s1 += 1;
}
}
s 1=s 1+1;で、s 1+1演算の結果はint型で、それをshort型変数s 1に付与するので、エラーが発生します.一方、s 1+=1では、で、s 1はshortタイプなので、1はまず強制的にshortタイプに変換されてから演算に参加し、結果もshortタイプなので、エラーは報告されません.では、s 1=1+1;どうして間違いを報告しないのですか.これは,1+1はコンパイル時に決定できる定数であり,「+」演算はプログラム実行時ではなくコンパイル時に実行されるため,この文の効果はs 1=2に等しいため,エラーは報告されない.前述したように、基本タイプに対して強制タイプ変換を実行するとエラーの結果になる可能性があるので、+=、-=、*=、/=、%=などの演算子を使用する場合は注意してください.
基本タイプに対する演算子の影響+、-、*、/、%演算子を使用して基本タイプを演算する場合は、次のルールに従います.2つのオペランドのうち1つがdoubleタイプであれば、もう1つはdoubleタイプに変換され、結果もdoubleタイプです.2.そうでなければ、2つのオペランドのうちの1つがfloatタイプであれば、もう1つはfloatタイプに変換され、結果もfloatタイプである.3.そうでなければ、2つのオペランドのうちの1つがlongタイプであれば、もう1つはlongタイプに変換され、結果もlongタイプである.4.そうでない場合、byte、short、int、charを含む2つのオペランドはintタイプに変換され、結果もintタイプに変換されます.+=、-=、*=、/=、%=、演算子を使用して基本タイプを演算する場合、•演算子の右の値は、まず演算子の左の値と同じタイプに強制的に変換され、演算が実行され、演算結果は演算子の左の値タイプと同じになります.
「==」演算子を使用して、基本タイプとパッケージクラスオブジェクトを比較する場合は、次のルールに従います.2つのオペランドのうち1つが基本タイプである限り、それらの数値が等しいかどうかを比較します.2.そうでなければ、2つのオブジェクトのメモリアドレスが等しいかどうか、すなわち同じオブジェクトかどうかを判断します.
package com.sdjt.study.jibenleixing;
/**
* @author:lyy
* @version :2009-8-4 06:18:52
*/
public class EqualsTest {
public static void main(String[] args) {
// int int
int int_int = 0;
// int Integer
int int_Integer = new Integer(0);
// Integer Integer
Integer Integer_Integer = new Integer(0);
// Integer int
Integer Integer_int = 0;
System.out.println("int_int == int_Integer :"
+ (int_int == int_Integer));
System.out.println("Integer_Integer == Integer_int :"
+ (Integer_Integer == Integer_int));
System.out.println();
System.out.println("int_int == Integer_Integer :"
+ (int_int == Integer_Integer));
System.out.println("Integer_Integer == int_int :"
+ (Integer_Integer == int_int));
System.out.println();
// boolean boolean
boolean boolean_boolean = true;
// boolean Boolean
boolean boolean_Boolean = new Boolean(true);
// Boolean Boolean
Boolean Boolean_Boolean = new Boolean(true);
// Boolean boolean
Boolean Boolean_boolean = true;
System.out.println("boolean_boolean == boolean_Boolean :"
+ (boolean_boolean == boolean_Boolean));
System.out.println("Boolean_Boolean == Boolean_boolean :"
+ (Boolean_Boolean == Boolean_boolean));
System.out.println();
System.out.println("boolean_boolean == Boolean_Boolean :"
+ (boolean_boolean == Boolean_Boolean));
System.out.println("Boolean_Boolean == boolean_boolean :"
+ (Boolean_Boolean == boolean_boolean));
}
}
結果:
int_int == int_Integer結果:trueInteger_Integer == Integer_int結果:false
int_int == Integer_Integer結果:trueInteger_Integer == int_int結果:true
boolean_boolean == boolean_Booleanの結果は:trueBoolean_Boolean == Boolean_booleanの結果はfalse
boolean_boolean == Boolean_Booleanの結果は:trueBoolean_Boolean == boolean_booleanの結果は:true