Java类型转换

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值