Java入門

型変換について

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
データ型の暗黙的変換と明示的変換(キャスト)について解説します。
講師:
12:32

字幕

このレッスンではデータ型の暗黙的変換と明示的変換cast について、解説します。「異なる型の代入の問題」というのは変数というのは型を持ちます。データの種類が限定されています。サイズは型によって異なっています。例えば、「文字型」2byte「整数型」4byte「浮動小数点型」は4byte または 8byte です。「異なる整数型の代入」というのは例えば、byte 型は 1byte「-128~127」byte、short、int、longのbyte 数が倍になってきます。そうするとですね例えば「-128~127」の間であればこの四つのどの型でも入る訳です。「-32768~32767」の間であれば下の三つ、どれでも入ります。一番上の byte には入りません。「基本データ型の型変換」「数値型」、数値型というのは整数型と実数型があります。浮動小数点型ですね。サイズの異なる型の代入の問題できる場合とできない場合があります。「暗黙の型変換」implicit といいますけども要は、小さい入れ物から大きい入れ物への代入は自由ですね。小さな数字、例えば「-10」ぐらいであれば四つの「整数型」、どれにでも入ります。 これは自動的にできます。これは「暗黙(implicit)の型変換」といいます。逆に「明示的(explicit)な型変換」これを 「cast(キャスト)」といいます。これは、プログラムで指定する必要があります。cast の方法「cast 演算子」があります。変数、定数、リテラルの前に「(型)」を付けます。これは「cast 演算子」といいます。例えばlong 型の変数 long0この前に「(int)」と書いています。これが「cast 演算子」です。例えば、「10L」これは long です。これを int 型にしようと思ったら前に「(int)」って付けます。double 型の変数 double0 の前に「(float)」って付けるとfloat 型になります。或いは「3.14」これはデフォルトでは long 型です。これを float 型にしたければ前に「(float)」って付けます。この場合は「3.14F」って書くこともできます。プログラムで例を示します。NetBeans で新しいプロジェクトcast を作ります。ここで int と long について代入をやってみます。int 型 int0long 型 long0 とします。 「int0 = 10;」を代入します。「long0 = int0;」を代入します。これは全然問題ないんですね。long は 8byteint は 4byte ですから小さな入れ物から大きな入れ物に入るこれは全然問題ありません。今度は「long0 = 10;」とします。「10」というのは、デフォルトではこれは int 型なんですけどもこれも int 型から long 型への代入は自動的に行います。implicit ですね。次に逆をやってみましょう。int 型に long 型を代入する。まずですねこういう書き方をするとint 型に long 型を代入しています。これ、実行するとどうなるかというとエラーが出てきます。これできないんですね。int 型に long 型代入できないんです。こっち 4byteこっち 8byte ですから。しかし今値は「10」なんですね。「10」だったら、別に int0 に入れてもいいじゃないですか。とプログラムが判断する訳ですね。そういう場合は、これは強制的に明示的に long 型にしてやります。その場合、ここで括弧でですねここに「(int)」と書きます。これを cast といいますけどもこの「(int)」ですね。 この long0 を int 型に強制的に、明示的に型変換しています。cast といいます。つまり、ここで long0つまり「10」をですねint 型に強制的に変換した訳です。これは問題ない訳ですね。でも自動的にやらない、プログラムで明示的に指定する必要があります。同じく次の行ですね。「10L」って書いてますけどもこれはリテラルで後ろに L って付けるとlong になります。これ「10」と書いとくとint 型ですけども後ろに L って付けるとlong 型になります。わざわざ long 型にする必要はないんですけどもそうすると、「10L」はint0 に入らないですね。こうやって左 4byte右 8byte ですから。こういう時もcast してやります。「(int)」と書いてやる。サイズを狭める訳ですね。「10」だったらint にしても大丈夫です。それはプログラムで判断します。int で cast します。これは問題ありません。これコンパイルととあります。ここに括弧で囲むからですねcast です。次は、実数型の float 型とdouble 型でやってみます。float の変数 float0double 型の変数 double0「float0 = (float)3.14;」これなにやってるかというとfloat0 に「3.14」を代入するという事はこれは、エラーになるんです。 やってみます。これはエラーになります。なんでかというと「3.14」、これデフォルトはdouble 型なんです。「3.14」は double 型なんです。float0float 型に double 型は大きな入れ物から小さな入れものを代入できないんです。これを float 型にcast してやります。こう「(float)」って書きます。これは cast ですね。こういう風に明示的に型変換するとこれは大丈夫です。では実行してみましょう。別にエラーは出ません。この「3」って、この下のここはちょっと無視して下さい。次に「float0 = 3.14F;」「3.14」って書いとくとこれ、double 型なんですね。ここに F って書くとこれはリテラルで、float 型なんです。「3.14F」ですね。D は書きません。デフォルトが Ddouble です。これは大丈夫です。次に、double0 に float0 を代入するこれは左が大きい入れ物右が小さい入れ物ですからこれは暗黙的に型変換してます。OK です。次に double0 に「3.14」を入れています。「3.14」は double 型ですからこれは問題ありません。 float0 にこの double0これはエラーですね。やってみます。今度は小さな入れ物に大きな値を入れますからこれは実行するとエラーになります。これは cast してやります。こういう場合はここで「(float)」cast してやります。cast するとね常にいいかというと情報が失われる訳ですね。これはたまたま「3.14」ですけどあとは「000」ですね。「00」だから、「まー、いいや」というのでこうやりましたけどももっと長い小数点がいっぱいあったとしたらですねこう cast するとデータを失われる訳です。それでもいいよ、とプログラムで判断するのであれば、cast を使います。double0 に int0 を入れるとどうなるかな。int0 は先作った int0 です。int 型の変数です。double0 に int0 を入れるとどうなるかこれ実行しますけどもここはちょっと無視して下さい。これは問題ないんですね。double0 に int0 を入れる。例えば「10」だったら「10」が入る訳です。これは問題ない訳です。しかし、逆にint0 に double を入れてみましょう。これはできない訳です。 考えても無理ですね。int0 に小数点を入れる無理です。実行してみます。これはエラーです。しかし、「3」だけ入ったらいいやという場合はですね小数点を無視して切り捨てですねこういう場合はここで「(int)」とします。「3.14」の int って「3」ですね。これを実行すると特にエラーは生じません。int0「3」になります。もうちょっとやってみましょう。「1/3」「1/3」どうなるかというとこれは整数割る整数ですね。「1/3」は「0」になります。これは整数でどっちも int 型です。これは「0」になります。実行してみます。「0」ですね。次に「1F/3」「1F」、「1」は整数型ですけどもfloat 型にしました。割り算、一方が float 型ならこれは float 型で計算します。float 型割る整数型ですけどfloat で計算します。これを実行してみましょう。そうすると、「0.33333334」とこういう結果が出てきます。次は、「1D」[1]を double 型にします。「1D/3」、そうすると、これはdouble 型の割り算を実行します。実行してみます。そうすると桁数が長くなりましたね。 double 型で出てます。「1F/3」はfloat 型で計算してますが「1D/3」はdouble 型で計算します。このレッスンではデータ型の暗黙的変換と明示的変換cast について、解説しました。

Java入門

Javaはインターネットの普及に伴い、今やもっともよく使用されるプログラミング言語となりました。また近年のプログラミング言語の主流であるオブジェクト指向言語の特徴も持っています。このコースではJavaを初めて学ぶ人を対象に、Javaの基礎的な概念やJavaプログラミングの基礎知識を学ぶことができます。

3時間20分 (41 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2016年07月26日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。