Movatterモバイル変換


[0]ホーム

URL:


酒と泪とRubyとRailsと

Javaの整数型(long,int,short,byte)について


Javaで整数を扱う型と取りうる範囲の紹介です。

整数の型ビット数値の範囲
byte8ビット-128 〜 127
short16ビット-32768 〜 32767
int32ビット-2,147,483,648 〜 2,147,483,647
long64ビット-9223372036854775808 〜 9223372036854775807

整数の最後にLlをつけるとlong型を表す。それ以外の整数はint型を表します。

また、Java SE 7からアンダースコア「_」を数値表現に使うことができます。アンダースコアはリテラルの先頭・末尾や、記号の前後には記述できないので注意してください。

🍣整数型使い分けの指針

  • byte, char, short : 整数型としては使わない。場合によってはintより効率が悪い
  • int, long : 基本はintを使う。intより大きな値を扱う場合はlongを扱う

🗻ビット長と値の範囲

ビット長と表現可能な値の関係を考えます。下記はビット長が4の場合の符号なし整数と符号あり整数です。

出典元: 改訂2版 パーフェクトJava

😀演算時の注意点

桁溢れ

その型の最大値に1プラスすると負数になります。これを「桁溢れ」と言います。
(絶対値の大きな負数にマイナス1する場合も同様)

int i = Integer.MAX_VALUE;// => 2147483647
System.out.println(i +1);// => -2147483648 を出力

桁溢れはセキュリティホールになりうるため、注意してください。

🏈0(ゼロ)による割り算の実行例外

数値0(ゼロ)による割り算の実行例外、java.lang.ArithmeticExceptionのサンプルです。

int i5 =0;
System.out.println(4 / i5);//=> java.lang.ArithmeticException: / by zero

😸整数型の拡大変換とキャスト

狭い型(int)から広い型(long)への変換を拡大変換と呼び、代入可能です。

int = Integer.MAX_VALUE;
long l = i;

一方で広い型(int)から狭い型(short)への変換はコンパルエラーになります。
その為、キャストを使います。

int i =10;
short s = (short)i;//=> 取りうる値の範囲なので可能

キャストはコンパイルエラーを招きやすいので、できるだけ使わない方がよいです。

🚜昇格(演算時の自動的な型変換)

昇格とは、演算時に広い方の型へ自動変換して演算するしくみのことです。
変換のルールは次のとおりです。

  • 演算の片方がlongの場合は、longに拡大変換
  • 両方longでない場合は、intに拡大変換

たとえば、次のコードはshortにキャストしないとコンパイルエラーになります。

short s1 =1;
short s2 =1;
short sum = s1 + s2;// 右辺がintになっているため、右辺をshortにキャストが必要

😼リテラル値の特別な型変換

intの整数リテラル値は、代入先の値が扱える範囲内ならキャストなしで代入可能です。

byte b =127;
short s =32767;

代入先の値が扱えない範囲の場合はコンパイルエラーになります。

byte b =128;//=> バイトに収まらないint型のリテラルのためコンパイルエラー

🐝8進数、16進数の整数リテラル

  • 077のように0を接頭辞とすると、8進数となります
  • 0x3Fのように0xを接頭辞とすると、16進数になります

🍮参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍

概要はじめに基本概念初心者向け入門資料整数(int, log)文字(char)文字列(String)コレクションと配列マップ(Map)セット(Set)日付(Date)列挙(Enum)バイト(byte)正偽型(boolean)プリミティブ型と参照型Optional型文法修飾子クラスメソッド例外処理初期化ブロック変数インタフェースについてリフレクションswitch文Comparable I/Fアノテーションイテレータ(iterator)Stream API/LambdaSpring Framework概要Hello WorldDI(依存性の注入)アスペクト指向プログラミングデータバインディングと型変換Controllerアノテーションフォーム利用プロパティ(設定値)管理バリデーションライブラリThymeleaf(テンプレート)Lombok(ボイラープレート)Jackson(JSONライブラリ)MyBatis(OR Mapper)JUnit(ユニットテスト)HibernateデザインパターンファクトリパターンシングルトンパターンテンプレートメソッドパターンTipsJavaのBest PracticeJavaのコーディング規約IntelliJ IDEAノウハウJSPについてJava Tips

[8]ページ先頭

©2009-2025 Movatter.jp