ICT関連の学習備忘録

ICTの学習をアウトプットするワークブックサイト

ICT関連の学習備忘録

2019/09/06:Java基礎(演算子・型変換)

インクリメント・デクリメント演算子

インクリメント(デクリメント)演算子は、変数の値を1加算(減算)する。
「++」インクリメントで1加算
「--」デクリメント2減算
前置と後置があり、
前置インクリメント演算子は、インクリメントをしてから代入する。
後置インクリメント演算子は、代入してからインクリメントする。
#後置インクリメント
    int a = 0;
    int b = 0;
    b =a++;
    System.out.println(b)
    #bは0になる。bにaを代入した後に、aに+1している。

#前置インクリメント
    int a = 0;
    int b = 0;
    b =++a;
    System.out.println(b)
    #bは1になる。aに+1してから、bにaを代入している。

代入演算子

代入演算子(assignment operator)は左辺の変数に右辺の値を代入する。
+= 加算代入
-= 減算代入
*= 乗算代入
/= 除算代入
%= 剰余代入
&= 論理積代入
|= 論理和代入
^= 排他的論理和代入
<<= 左シフト代入
>>= 右シフト代入
>>>= 符号なし右シフト代入

型変換

一般にJavaでは、大きなサイズの型に小さなサイズの型の値を代入することが出来る。
intからdouble型への代入等。

また、クラス型に基本型を代入する際
String型 = int型
のようにそのままでは代入できず、上記の場合は
String型=String.valueOf(int)
で代入することが出来る。
これはクラス型と基本型のメモリの扱いが異なる為である。

大きな型への代入
class Sample8
    {
        public static void main(String[] args)
        {
            int inum = 160;
            
            System.out.println("身長は" + inum + "センチです。");
            
            System.out.println("doubl型の変数に代入します。");
            double dnum = inum;
            
            System.out.println("身長は" + dnum + "センチです。");
        }
    }    
C:\YJSample\04>java Sample8
身長は160センチです。
doubl型の変数に代入します。
身長は160.0センチです。
小さなサイズの型に代入は出来ない。
これを行うにはキャストする必要がある。
class Sample9
{
	public static void main(String[] args)
	{
		double dnum = 160.5;
		
		System.out.println("身長は" + dnum + "センチです。");
		System.out.println("int型の変数に代入します。");
		int inum = dnum;
	}
}
C:\YJSample\04>javac Sample9.java
Sample9.java:9: エラー: 不適合な型: 精度が失われる可能性があるdoubleからintへの
変換
                int inum = dnum;
                ^
エラー1個

キャスト演算子

小さなサイズの型に大きなサイズの型を代入する際は、
型を変換することをはっきりと明示的に書いておく必要がある。
キャスト演算子の構文は
(型名) 式
前項のエラー部分は、
int inum = (int)dnum;
とする事でコンパイルできるが、小数点以下は切り捨てられる点に注意。

異なる型同士で演算を行った場合は、一方のオペランドを
大きなサイズの型に変換してから演算を行う。
class Sample10
{
	public static void main(String[] args)
	{
		int d = 2;
		double pi = 3.14;
		
		System.out.println("直径が" + d + "センチの円の");
		System.out.println("円周は" + (d*pi) + "センチです。");
	}
}
C:\YJSample\04>java Sample10
直径が2センチの円の
円周は6.28センチです。

同じ型同士での演算

同じ型同士での演算をする場合でも、
演算結果が型の範囲を超えた値になる場合は、
出力前にキャストをしなければ出力値が異なる場合もある。
例。
class Sample11
{
	public static void main(String[] args)
	{
		int num1 = 5;
		int num2 = 4;
		
		System.out.println("型変更せず計算\n 5/4は" + num1/num2 + "です。");
		
		double div = (double)num1 / (double)num2;
		System.out.println("型変更後計算\n 5/4は" + div +"です。");
	}
}
C:\YJSample\04>java Sample11
型変更せず計算
 5/4は1です。
型変更後計算
 5/4は1.25です。



前のページへ戻る