Java 为什么charAt的工作方式会因打印的数据类型而异
我试着写代码来乘虚数,这就是为什么字符串中有“I”。所以我想先取,然后转换成int或double。这给了我52个,这让我很困惑。然而,当我直接打印到控制台时,它工作了,但没有双重功能。这是无用的,因为我需要在其他地方使用它。这是怎么回事?尝试将字符串a的部分解析为int或double会更好吗?除了不使用解析操作字符串中的数字,还有其他方法吗?还有一些方法可以处理虚数,例如“e^pi*i=1”字符串是一系列符号,如字母、标点符号和数字,称为字符。每个字符都与一个数字相关联。一种常见的方法是使用所谓的ASCII字符。在本例中,您可以看到字符Java 为什么charAt的工作方式会因打印的数据类型而异,java,char,primitive,charat,Java,Char,Primitive,Charat,我试着写代码来乘虚数,这就是为什么字符串中有“I”。所以我想先取,然后转换成int或double。这给了我52个,这让我很困惑。然而,当我直接打印到控制台时,它工作了,但没有双重功能。这是无用的,因为我需要在其他地方使用它。这是怎么回事?尝试将字符串a的部分解析为int或double会更好吗?除了不使用解析操作字符串中的数字,还有其他方法吗?还有一些方法可以处理虚数,例如“e^pi*i=1”字符串是一系列符号,如字母、标点符号和数字,称为字符。每个字符都与一个数字相关联。一种常见的方法是使用所谓
'4'
由数字52
表示
int c = a.charAt( g );
考虑到这一点,让我们看看您的一些代码:
public class MyClass
{
public static void main(String args[])
{
String a = "(4 + 4i)";
String b = "(2 + 3i)";
int g = 1;
int c = a.charAt( g ); // sets c to 52
System.out.println( c ); // prints 52
System.out.println( (double) a.charAt( g ) ); // prints 52.0
System.out.println( a.charAt( g ) ); // prints 4
System.out.println( 2 * a.charAt( g ) ); // prints 104
}
}
此行将自动将字符转换为其数值。我所说的“数值”是指代表字符的数字,而不是数字本身的值。在这种情况下,字符'4'
具有数值52
int c = a.charAt( g );
这将打印出字符'4'
,而不是int
4
。了解数字字符及其整数值之间的差异非常重要
为了获得数字4
,以便执行算术运算,必须解析字符串。函数Integer.valueOf()
将对此有很大帮助
您还应该了解类和对象。例如,您可以创建一个Complex
类,该类允许您将复数作为一个单独的实体来使用,并具有自己的操作
要获取所需的数值,需要使用Integer.valueOf()
或Double.valueOf()
,具体取决于您想要的是int
还是Double
:
System.out.println( a.charAt( g ) ); // prints 4
如果要允许数字包含多个数字或小数点,则需要使用更复杂的解析方法。字符串是一系列符号,如字母、标点符号和数字,称为字符。每个字符都与一个数字相关联。一种常见的方法是使用所谓的ASCII字符。在本例中,您可以看到字符'4'
由数字52
表示
int c = a.charAt( g );
考虑到这一点,让我们看看您的一些代码:
public class MyClass
{
public static void main(String args[])
{
String a = "(4 + 4i)";
String b = "(2 + 3i)";
int g = 1;
int c = a.charAt( g ); // sets c to 52
System.out.println( c ); // prints 52
System.out.println( (double) a.charAt( g ) ); // prints 52.0
System.out.println( a.charAt( g ) ); // prints 4
System.out.println( 2 * a.charAt( g ) ); // prints 104
}
}
此行将自动将字符转换为其数值。我所说的“数值”是指代表字符的数字,而不是数字本身的值。在这种情况下,字符'4'
具有数值52
int c = a.charAt( g );
这将打印出字符'4'
,而不是int
4
。了解数字字符及其整数值之间的差异非常重要
为了获得数字4
,以便执行算术运算,必须解析字符串。函数Integer.valueOf()
将对此有很大帮助
您还应该了解类和对象。例如,您可以创建一个Complex
类,该类允许您将复数作为一个单独的实体来使用,并具有自己的操作
要获取所需的数值,需要使用Integer.valueOf()
或Double.valueOf()
,具体取决于您想要的是int
还是Double
:
System.out.println( a.charAt( g ) ); // prints 4
如果希望允许数字包含多个数字或小数点,则需要使用更复杂的解析方法。您得到52,因为'4'
的ascii值是52
int c = Integer.valueOf(a.charAt(g))
最后是a,这是提供重载方法来写入int
(或char
,或String
,或double
,等等)。您得到52,因为'4'
的ascii值是52
int c = Integer.valueOf(a.charAt(g))
最后是一个,这就是提供重载方法来编写int
(或char
,或String
,或double
,等等)。。。简单的回答是:如果处理字符char
s,则处理字符'4'
具有ASCII码52
。如果将char
转换为int
(通过int c=a.charAt(…)
执行此操作,则会得到ASCII码,尽管ASCII码表示数字。但是,如果直接打印char
(System.out.println(a.charAt(…))
,Java足够聪明,可以将ASCII代码翻译成实际字符。(备注:ASCII部分实际上是一个谎言,Java字符是UTF-16)52是复数字符“4”的字符码,你可以参考一下……简单的回答是:如果你处理char
s,你处理的字符'4'
有ASCII码52
。如果你把char
转换成int
(你可以通过int c=a.charAt(…)
,您得到了ASCII码,尽管ASCII码表示一个数字。但是,如果您直接打印字符(System.out.println(a.charAt(…))
,Java足够聪明,可以将ASCII码转换为实际字符。(注:ASCII部分实际上是一个谎言,Java字符是UTF-16)52是复数字符“4”的字符码,你可以参考答案,虽然答案绝对正确,但我认为OP的一个主要混淆点是Java的强制转换行为,特别是当从char
隐式强制转换为int
时。也许你想在回答中更详细地讨论这个话题?@chrylis是的,b但是你想混淆OP吗