Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果Java是强类型的,那么为什么要编译这段代码?_Java_Types_Casting_Strong Typing_Weak Typing - Fatal编程技术网

如果Java是强类型的,那么为什么要编译这段代码?

如果Java是强类型的,那么为什么要编译这段代码?,java,types,casting,strong-typing,weak-typing,Java,Types,Casting,Strong Typing,Weak Typing,我对强类型的理解是,这种语言不会进行隐式类型转换。但是,此代码将字符转换为ascii值,然后使用该值 static char x = 'j'; static int y = 7; public static void main(String[] args){ System.out.println(y+x); } Java是一种强类型编程语言,因为每个变量都必须用数据类型声明。变量不能在不知道它可以保存的值的范围的情况下开始生命,并且一旦声明,变量的数据类型就不能更改 示例: 允许使用

我对强类型的理解是,这种语言不会进行隐式类型转换。但是,此代码将字符转换为ascii值,然后使用该值

static char x = 'j';
static int y = 7;

public static void main(String[] args){
    System.out.println(y+x);
}
Java是一种强类型编程语言,因为每个变量都必须用数据类型声明。变量不能在不知道它可以保存的值的范围的情况下开始生命,并且一旦声明,变量的数据类型就不能更改

示例:

允许使用以下声明,因为变量“hasDataType”被声明为布尔数据类型:

 boolean hasDataType;
在其余生中,hasDataType的值只能为true或false

在你们的例子中,为什么字符被转换成数字

System.out.println(y+x);

你可以看看这个

这与强或弱输入几乎没有关系。您的代码是两个强类型变量之间隐式转换的示例—a
char
int

您的
System.out.println(y+x)
实际上被编译为
System.out.println(y+(int)x)
so
System.out.println(int arg0)
被调用

cast
(int)x
将字符转换为其ascii值,因为Java将字符存储为UTF-16值

如果Java是强类型的,那么为什么要编译这段代码

因为政府是这么说的。在这种情况下,一个字符可以变成一个整数。然后我们可以添加两个整数并输出结果。如果需要,您可以将int返回到char中

System.out.println((char) (y+x));

“强类型”对不同的人意味着不同的东西,但是Java中有很多隐式转换。考虑到这个问题依赖于“强类型”的含义,我投票决定以基于意见的问题结束它。字符只是一个无符号的16位数字。这里没什么特别的。你在这里定义的是静态和动态类型。Op正确地指弱类型和强类型。你的回答与他/她所问的完全不同