Java 类型转换
类型转换是将一种原始数据类型的值分配给另一种类型。
在 Java 中,有两种类型的转换:
- 扩大类型转换(自动) - 将较小的类型转换为较大的类型
byte
->short
->char
->int
->long
->float
->double
- 缩小类型转换(手动) - 将较大的类型转换为较小的类型
double
->float
->long
->int
->char
->short
->byte
加宽铸造
当将较小的尺寸类型传递给较大的尺寸类型时,会自动进行扩展转换:
例子获取您自己的 Java 服务器
<span style="background-color:#e7e9eb"><span style="color:#000000"><span style="color:black"><code class="language-java"><span style="color:#0077aa">public</span> <span style="color:#0077aa">class</span> <span style="color:#dd4a68">Main</span> <span style="color:#999999">{</span>
<span style="color:#0077aa">public</span> <span style="color:#0077aa">static</span> <span style="color:#0077aa">void</span> <span style="color:#dd4a68">main</span><span style="color:#999999">(</span><span style="color:#dd4a68">String</span><span style="color:#999999">[</span><span style="color:#999999">]</span> args<span style="color:#999999">)</span> <span style="color:#999999">{</span>
<span style="color:#0077aa">int</span> myInt <span style="color:#9a6e3a">=</span> <span style="color:#990055">9</span><span style="color:#999999">;</span>
<span style="color:#0077aa">double</span> myDouble <span style="color:#9a6e3a">=</span> myInt<span style="color:#999999">;</span> <span style="color:slategray">// Automatic casting: int to double</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>myInt<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:slategray">// Outputs 9</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>myDouble<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:slategray">// Outputs 9.0</span>
<span style="color:#999999">}</span>
<span style="color:#999999">}</span>
</code></span></span></span>
缩小铸造范围
必须通过将类型()
放在值前面的括号中来手动完成缩小转换:
例子
<span style="background-color:#e7e9eb"><span style="color:#000000"><span style="color:black"><code class="language-java"><span style="color:#0077aa">public</span> <span style="color:#0077aa">class</span> <span style="color:#dd4a68">Main</span> <span style="color:#999999">{</span>
<span style="color:#0077aa">public</span> <span style="color:#0077aa">static</span> <span style="color:#0077aa">void</span> <span style="color:#dd4a68">main</span><span style="color:#999999">(</span><span style="color:#dd4a68">String</span><span style="color:#999999">[</span><span style="color:#999999">]</span> args<span style="color:#999999">)</span> <span style="color:#999999">{</span>
<span style="color:#0077aa">double</span> myDouble <span style="color:#9a6e3a">=</span> <span style="color:#990055">9.78d</span><span style="color:#999999">;</span>
<span style="color:#0077aa">int</span> myInt <span style="color:#9a6e3a">=</span> <span style="color:#999999">(</span><span style="color:#0077aa">int</span><span style="color:#999999">)</span> myDouble<span style="color:#999999">;</span> <span style="color:slategray">// Manual casting: double to int</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>myDouble<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:slategray">// Outputs 9.78</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>myInt<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:slategray">// Outputs 9</span>
<span style="color:#999999">}</span>
<span style="color:#999999">}</span>
</code></span></span></span>
现实生活中的例子
这是类型转换的一个真实例子,我们创建一个程序来计算用户得分占游戏最高得分的百分比。
我们使用类型转换来确保结果是浮点 值,而不是整数:
例子
Java 类型转换
类型转换是将一种原始数据类型的值分配给另一种类型。
在 Java 中,有两种类型的转换:
- 扩大类型转换(自动) - 将较小的类型转换为较大的类型
byte
->short
->char
->int
->long
->float
->double
- 缩小类型转换(手动) - 将较大的类型转换为较小的类型
double
->float
->long
->int
->char
->short
->byte
加宽铸造
当将较小的尺寸类型传递给较大的尺寸类型时,会自动进行扩展转换:
例子获取您自己的 Java 服务器
<span style="background-color:#e7e9eb"><span style="color:#000000"><span style="color:black"><code class="language-java"><span style="color:#0077aa">public</span> <span style="color:#0077aa">class</span> <span style="color:#dd4a68">Main</span> <span style="color:#999999">{</span>
<span style="color:#0077aa">public</span> <span style="color:#0077aa">static</span> <span style="color:#0077aa">void</span> <span style="color:#dd4a68">main</span><span style="color:#999999">(</span><span style="color:#dd4a68">String</span><span style="color:#999999">[</span><span style="color:#999999">]</span> args<span style="color:#999999">)</span> <span style="color:#999999">{</span>
<span style="color:#0077aa">int</span> myInt <span style="color:#9a6e3a">=</span> <span style="color:#990055">9</span><span style="color:#999999">;</span>
<span style="color:#0077aa">double</span> myDouble <span style="color:#9a6e3a">=</span> myInt<span style="color:#999999">;</span> <span style="color:slategray">// Automatic casting: int to double</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>myInt<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:slategray">// Outputs 9</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>myDouble<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:slategray">// Outputs 9.0</span>
<span style="color:#999999">}</span>
<span style="color:#999999">}</span>
</code></span></span></span>
缩小铸造范围
必须通过将类型()
放在值前面的括号中来手动完成缩小转换:
例子
<span style="background-color:#e7e9eb"><span style="color:#000000"><span style="color:black"><code class="language-java"><span style="color:#0077aa">public</span> <span style="color:#0077aa">class</span> <span style="color:#dd4a68">Main</span> <span style="color:#999999">{</span>
<span style="color:#0077aa">public</span> <span style="color:#0077aa">static</span> <span style="color:#0077aa">void</span> <span style="color:#dd4a68">main</span><span style="color:#999999">(</span><span style="color:#dd4a68">String</span><span style="color:#999999">[</span><span style="color:#999999">]</span> args<span style="color:#999999">)</span> <span style="color:#999999">{</span>
<span style="color:#0077aa">double</span> myDouble <span style="color:#9a6e3a">=</span> <span style="color:#990055">9.78d</span><span style="color:#999999">;</span>
<span style="color:#0077aa">int</span> myInt <span style="color:#9a6e3a">=</span> <span style="color:#999999">(</span><span style="color:#0077aa">int</span><span style="color:#999999">)</span> myDouble<span style="color:#999999">;</span> <span style="color:slategray">// Manual casting: double to int</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>myDouble<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:slategray">// Outputs 9.78</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span>myInt<span style="color:#999999">)</span><span style="color:#999999">;</span> <span style="color:slategray">// Outputs 9</span>
<span style="color:#999999">}</span>
<span style="color:#999999">}</span>
</code></span></span></span>
现实生活中的例子
这是类型转换的一个真实例子,我们创建一个程序来计算用户得分占游戏最高得分的百分比。
我们使用类型转换来确保结果是浮点 值,而不是整数:
例子
<span style="background-color:#e7e9eb"><span style="color:#000000"><span style="color:black"><code class="language-java"><span style="color:slategray">// Set the maximum possible score in the game to 500</span>
<span style="color:#0077aa">int</span> maxScore <span style="color:#9a6e3a">=</span> <span style="color:#990055">500</span><span style="color:#999999">;</span>
<span style="color:slategray">// The actual score of the user</span>
<span style="color:#0077aa">int</span> userScore <span style="color:#9a6e3a">=</span> <span style="color:#990055">423</span><span style="color:#999999">;</span>
<span style="color:slategray">/* Calculate the percantage of the user's score in relation to the maximum available score.
Convert userScore to float to make sure that the division is accurate */</span>
<span style="color:#0077aa">float</span> percentage <span style="color:#9a6e3a">=</span> <span style="color:#999999">(</span><span style="color:#0077aa">float</span><span style="color:#999999">)</span> userScore <span style="color:#9a6e3a">/</span> maxScore <span style="color:#9a6e3a">*</span> <span style="color:#990055">100.0f</span><span style="color:#999999">;</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span><span style="color:#669900">"User's percentage is "</span> <span style="color:#9a6e3a">+</span> percentage<span style="color:#999999">)</span></code></span></span></span>
<span style="background-color:#e7e9eb"><span style="color:#000000"><span style="color:black"><code class="language-java"><span style="color:slategray">// Set the maximum possible score in the game to 500</span>
<span style="color:#0077aa">int</span> maxScore <span style="color:#9a6e3a">=</span> <span style="color:#990055">500</span><span style="color:#999999">;</span>
<span style="color:slategray">// The actual score of the user</span>
<span style="color:#0077aa">int</span> userScore <span style="color:#9a6e3a">=</span> <span style="color:#990055">423</span><span style="color:#999999">;</span>
<span style="color:slategray">/* Calculate the percantage of the user's score in relation to the maximum available score.
Convert userScore to float to make sure that the division is accurate */</span>
<span style="color:#0077aa">float</span> percentage <span style="color:#9a6e3a">=</span> <span style="color:#999999">(</span><span style="color:#0077aa">float</span><span style="color:#999999">)</span> userScore <span style="color:#9a6e3a">/</span> maxScore <span style="color:#9a6e3a">*</span> <span style="color:#990055">100.0f</span><span style="color:#999999">;</span>
<span style="color:#dd4a68">System</span><span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#dd4a68">println</span><span style="color:#999999">(</span><span style="color:#669900">"User's percentage is "</span> <span style="color:#9a6e3a">+</span> percentage<span style="color:#999999">)</span></code></span></span></span>