当前位置: 首页 > 知识库问答 >
问题:

将int-literal传递给在java中接受整数的方法

华锦
2023-03-14

这可能是在堆栈溢出中问过的最愚蠢的问题,但这很困扰我...

 public class shorte
{
    public static void main(String []args)
    {
        short e = 56; // no need for explicit cast
        System.out.println(e);
        start(56);  // why does int literal here needs explicit cast ...
    }
    static void start(short e)
    {
        System.out.println(e);
    }
}

虽然从函数中的int-literal创建普通的短变量并不需要任何显式转换,但是为什么将int-literal传递给短变量(参数传递)需要显式转换呢。。。。。。??

再一次

我现在不建议在一篇帖子里问两个不相关的问题,但这太琐碎了,不能在另一篇帖子里问。。

**“for”计数器变量的范围**

    public class forloop
{
    public static void main(String []args)
    {
        int a =12;
        for(int a =12;a<14;++a) // no showdowing of variable ,give compile-time error
        {
            System.out.println(a);
        }
    }
}

所以我试着用普通方块

   a=12
{
a=13; even this doesn't compile 
}

这是否意味着,区块没有自己的范围。。。

共有3个答案

苏鹏鹍
2023-03-14

问题二:

int a =12;
        for(int a =12;a<14;++a) // no showdowing of variable ,give compile-time error
        {
            System.out.println(a);
        }

我认为其基本原理是,大多数情况下,这不是故意的,而是编程或逻辑缺陷。

在像你这样微不足道的例子中,这是显而易见的,但是在一大块代码中,意外地重新声明变量可能并不明显。

问题1:

在int版本中,编译器知道数字中的所有数据都可以存储在短时间内。没有信息丢失。对于文字值来说,这并不总是正确的。

罗浩然
2023-03-14

仅从技术角度(不是猜测原因;-):它在规范中

(a)

b)

翁文康
2023-03-14

文本可以从Java中的int文本自动构造

short e=50;

但是调用函数和传递参数是不同的。由于重载的可能性,函数调用应该与函数原型完全匹配。想象一个重载的函数,一个版本有一个int参数,另一个版本有一个参数。

至于第二个问题,在大多数语言中,通常不能隐藏由内部作用域中的同一标识符在外部作用域中声明的标识符。我脑子里有两个例外:

1-全局变量可以被局部变量隐藏(例如,在C中,因为Java没有全局变量)。

2-类数据成员可以被局部变量隐藏。

在这两种情况下,该语言都提供了一个解析运算符(::对于1-和thisfor 2-)。

 类似资料:
  • int是byte、short、int、long的默认文字,然后是为什么byte c=15被接受而不进行强制转换,但不接受方法参数。 提前谢谢你。

  • 问题内容: 以下代码的输出是因为从beginIndex到EndIndex-1。但是,令我惊讶的是这里的3(int)因为是两个整数。这背后的概念是什么? 问题答案: 一直到C,从本质上讲是一个窄整数类型,并在需要时隐式转换为C。 在Java中,这在技术上称为“扩展原始转换”,在JLS的5.1.2节中进行了介绍。

  • 问题内容: 如何将整个数组传递给方法? 如何正确执行此操作? 问题答案: 你做这个: 只需将其作为其他任何变量传递即可。 在Java中,数组是通过引用传递的。

  • 我正在编写一个方法,如果我想将一个类传递给一个方法,其中代码的一部分包括检查对象是否属于某种类型。这就是我想要的(但显然不行): 关于如何做到这一点有什么提示吗?谢谢!

  • 问题内容: 在方法调用中传递当前对象是好/坏/可接受的做法。如: 具体来说,该行可接受吗? 问题答案: 没有理由不使用它,它是当前实例,并且使用完全合法。实际上,通常没有清除它的干净方法。 因此使用它。 由于难以令人信服地没有示例是可以接受的(对这个问题的否定答案总是更容易争论),我只是打开了最常见的类之一,当然,例如,我找到了这种用法的实例 查找在大“接受”的项目,你不会不发现它。

  • 问题内容: 我很好奇Go中是否有可能。我有多种方法的类型。是否可以有一个函数,该函数需要一个方法参数,然后将其称为类型? 这是我想要的一个小例子: Go认为type 有一个称为的方法,而不是用传入的方法名称替换它。 问题答案: 是的,有可能。您有2(3)个选项: 规范:方法表达式 该表达式产生的功能与第一个参数等效,但具有一个显式接收器。它有签名。 在这里,方法接收器是显式的。您只需将方法名称(具