如果Java是强类型的,那么为什么要编译这段代码?
我对强类型的理解是,这种语言不会进行隐式类型转换。但是,此代码将字符转换为ascii值,然后使用该值如果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是一种强类型编程语言,因为每个变量都必须用数据类型声明。变量不能在不知道它可以保存的值的范围的情况下开始生命,并且一旦声明,变量的数据类型就不能更改 示例: 允许使用
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)
soSystem.out.println(int arg0)
被调用
cast(int)x
将字符转换为其ascii值,因为Java将字符存储为UTF-16值
如果Java是强类型的,那么为什么要编译这段代码
因为政府是这么说的。在这种情况下,一个字符可以变成一个整数。然后我们可以添加两个整数并输出结果。如果需要,您可以将int返回到char中
System.out.println((char) (y+x));
“强类型”对不同的人意味着不同的东西,但是Java中有很多隐式转换。考虑到这个问题依赖于“强类型”的含义,我投票决定以基于意见的问题结束它。字符只是一个无符号的16位数字。这里没什么特别的。你在这里定义的是静态和动态类型。Op正确地指弱类型和强类型。你的回答与他/她所问的完全不同