2013-09-30 44 views
0

我正在学习Java,而且我有一些不清楚的事情,如果有人能帮忙,我会很高兴。原始数据类型一些问题

第一个问题

INT的约值是:2.147.483,647

长的约值是:9,223,372,036,854,775,807

This website说:

“的整数如果以字母L或l结尾,则文字的类型为long;否则为int类型“

这意味着,在情况下,我不添加字母L/L到一个变量名

如结束:

long num=3515; //no letter L/l at the end 

所以变量num视为int类型不只要类型。

所以我做了这个节目:

public class caluMaxNum 
{ 
    public static void main(String [] args) 
    { 
     long max=2147483640; //doesn't have letter L/l so it consider as an int 
     for(int i=0;i<=10;i++) 
     { 
      max++; 
      System.out.println(max); 
     } 
    } 
} 

这是输出:

2147483641 
2147483642 
2147483643 
2147483644 
2147483645 
2147483646 
2147483647 
2147483648 2147483649 2147483650 2147483651

INT的约值是:2,147,483,647和可变最大值为int,所以它是怎么打印大胆值?

第二个问题:

关于缩小转换:

是我的说法是真的吗?

只有在byte/short类型的值为以下值之一的情况下,才能将字节类型(8位)和短类型(16位)转换为char类型(16位):0,1,2 ,3,4,5,6,7,8,9否则会出现一个运行时错误

- 第三和最后一个问题:

当我宣布数值变量类型,如:

float num1=34.1; 
float num2=34.1F 
long num3=43 
long num4=953L 

如果字母符号化,我也可以声明变量w其他类型使用他们的第一个字母?为什么要包含num1到num2和num3到num4的区别?

+0

要回答你的第一个问题,整数文字就是实际的数字,就像'2147483640'。这是一个整数字面值。 '2147483640L'是一个长文字。这就是这句话的意思。您不必在变量名称末尾加上“L”,以使其成为“long”。将变量定义为'long num'即可。而且,当分配给一个变量时,比如'long num = 3515',不需要在数字的末尾加上“L”。它将被正确分配为“长”。我希望这有助于澄清你的困惑:) – jonhopkins

+0

那么我刚刚学到了一些关于'long's的新东西哈哈。事实证明,它实际上是一个'int',直到最后放置“L”,尽管一旦它被分配给一个“long”变量,那么它就是一个“long”。因此,对于大于int的最大值的整数文字(2147483647),实际上最后必须具有“L”。我很抱歉在我的第一条评论中错过了这一点。 – jonhopkins

回答

0
  1. 虽然用于初始化max的值可能是一个int,但max显式声明为一个很长的,与您的输出完全一致的值。

  2. 答案取决于你的意思是“转换”。

  3. num1 & num2是相同的;无论使用什么(如果有)后缀,num3和num4都是完全不同的值。

+0

用于'num1'和'num2'的文字不相同。首先,'num1'赋值不能编译。我想你错过了“num3”和“num4”的观点。 – Dukeling

+0

谢谢大家的帮助 1. 我写了一个程序: 公共类您好 {
公共静态无效的主要(字串[] args){ 长 Y = 2147483671; System.out.println(y); } } 是说“整数太大”为什么? 2.通过转换我的意思是将数据类型字节/短的变量的值放入变量的字符类型的值 3.我仍然不明白数字末尾的字母是什么。 – JaVaPG

+0

@JaVaPG:1. 2147483671对于int来说太大了(你离开L,记得吗?),但是不太大以至于不适合y。 –