Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 将char传递给具有int参数的方法_Java_Type Conversion - Fatal编程技术网

Java 将char传递给具有int参数的方法

Java 将char传递给具有int参数的方法,java,type-conversion,Java,Type Conversion,以下代码的输出是123,因为substring从beginIndex到EndIndex-1。然而,我很惊讶这里的char被理解为3(int),因为substring需要两个int。这背后的概念是什么 String x = "12345"; char a = 3; x = x.substring(0, a); System.out.println(x); 这可以追溯到,char本质上是一个窄整数类型,并在必要时隐式转换为int 在Java中,这在技术上被称为“扩展原语转换”,并在中进行了介绍。因

以下代码的输出是
123
,因为
substring
从beginIndex到EndIndex-1。然而,我很惊讶这里的
char
被理解为3(int),因为
substring
需要两个int。这背后的概念是什么

String x = "12345";
char a = 3;
x = x.substring(0, a);
System.out.println(x);

这可以追溯到,
char
本质上是一个窄整数类型,并在必要时隐式转换为
int


在Java中,这在技术上被称为“扩展原语转换”,并在中进行了介绍。

因此子字符串的函数声明类似于子字符串(intstartindex,intendindex)。
现在,当您传递char时,它会自动升级为整数(endIndex),因此被视为int。

请看一节,其中讨论了加宽转换。

这称为隐式转换。如果将int值赋给double,也会发生同样的情况。 快速示例

    double d = 1;

1是一个
int
,但它被隐式转换为
double
(1.0)。

其他人已经解释了它工作的原因,但请注意,使用char变量作为索引是一种不好的做法,因为它们具有不同的关联语义,因此使用char作为索引会令人困惑


仅在存储字符数据时使用字符,可能更好:尽量避免使用字符,因为字符宽度甚至不足以存储每个字符(请参阅Unicode和代码点讨论)。使用int来存储字符代码点。

字符a=3
,您可以将其视为存储二进制值3的
0011
。字符“3”实际上没有被存储:如果您尝试处理的是一个字符,则不会得到
3
。但如果你这么做了

chara='3'


现在您存储的是char 3,ascii值为51,如果您尝试在int中使用它,您将得到51。

从技术上讲,这是因为
char
int
的一个子类型

为了确定
子字符串(int,int)
是否适用于参数
(int,char)
,我们首先尝试,我们需要测试
char
是否是
int
的子类型,是的


然后,为了将
char
参数指定给
int
参数per,我们应用,它将
char
转换为
int
,per

这是隐式和显式强制转换的概念。 字符是小数据类型,然后是整数,因此当将字符作为值传递时,它会自动将字符值转换为int值

public static void age (int  num){
        System.out.println(num);
   }
           char character = '2';
            age(character); output is 50.

字符形式“0”到“9”打印值为48到57

+1。。归根结底,它不是将
char
看作一个字母或字符,而是计算机能够映射到字母或字符的一段数据。然后,为了简化这个过程,我们制作了一些快捷方式,让我们直接将字母或字符分配给
char
s(比如
char c='x';
的意思是“由变量c表示的一段数据是映射到字符'x'的值”。“变量'c'与系统中的任何其他数据段相比都不是一个字母。)