Answers:
int a = 1;
char b = (char) a;
System.out.println(b);
会打印出ascii值为1的字符(首字符,这是不可打印的)。
int a = '1';
char b = (char) a;
System.out.println(b);
将以ascii值49输出一个字符(一个对应于'1')
如果要转换数字(0-9),则可以将数字加48并进行转换,例如Character.forDigit(a, 10);
。
如果要转换int
as ascii值,则可以使用Character.toChars(48)
例如。
System.out.println('b'+3);
我怎么能b3
代替101
使用println?还有其他方法代替printf吗?
Character.toChars
对Unicode代码点而不是ASCII值进行操作。如果仅将int转换为char,则得到相同的结果(仅适用于BMP)。
我的答案与jh314的答案相似,但我会更深入地说明。
在这种情况下,您应该做的是:
int a = 1;
char b = (char)(a + '0');
System.out.println(b);
在这里,我们使用“ 0”,因为字符实际上是由ASCII值表示的。“ 0”是一个字符,由值48表示。
我们进行了键入,(a + '0')
然后将它们相加,Java将“ 0”转换为它的ASCII值48,a等于1,所以总和为49。然后我们做的是:
(char)(49)
我们铸造int
到char
。ASCII等效的49为'1'。您可以通过这种方式将任何数字转换为char,并且比使用.toString()
method 更聪明,更好的方法,然后通过.charAt()
method 减去数字。
似乎您正在寻找Character.forDigit
方法:
final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'
还有一种可以从char转换回int的方法:
int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'
请注意,通过更改 RADIX
您还可以支持十六进制(基数16)以及不超过36(或Character.MAX_RADIX
也称为36)的任何基数。
65
打印A
?因为我的答案在此打印了此问题要求的预期行为。参见ideone.com/09LAFR
每当您将强制转换类型键入char时,它将返回该int的ascii值(一旦经过ascii表以更好地理解)
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D
在java中,char 是一个int。您的第一个代码段将打印出与默认字符编码方案(可能是Unicode)中的值1相对应的字符。Unicode字符U + 0001是非打印字符,这就是为什么看不到任何输出的原因。
如果要打印出字符“ 1”,则可以在使用的编码方案中查找值“ 1”。在Unicode中为49(与ASCII相同)。但这仅适用于数字0-9。
使用String而不是char并使用Java的内置toString()
方法可能会更好:
int a = 1;
String b = toString(a);
System.out.println(b);
无论您的系统编码是什么,它都可以工作,并且适用于多位数字。
查看以下程序以获取完整的转换概念
class typetest{
public static void main(String args[]){
byte a=1,b=2;
char c=1,d='b';
short e=3,f=4;
int g=5,h=6;
float i;
double k=10.34,l=12.45;
System.out.println("value of char variable c="+c);
// if we assign an integer value in char cariable it's possible as above
// but it's not possible to assign int value from an int variable in char variable
// (d=g assignment gives error as incompatible type conversion)
g=b;
System.out.println("char to int conversion is possible");
k=g;
System.out.println("int to double conversion is possible");
i=h;
System.out.println("int to float is possible and value of i = "+i);
l=i;
System.out.println("float to double is possible");
}
}
希望,它至少会有所帮助
如果要将字符转换为相应的整数,可以执行以下操作:
int a = (int) 'a';
char b = (char) a;
System.out.println(b);
发生这种情况是因为在ASCII中有些项目无法正常打印。
例如,数字97至122是对应于小写字母a至z的整数。
public class String_Store_In_Array
{
public static void main(String[] args)
{
System.out.println(" Q.37 Can you store string in array of integers. Try it.");
String str="I am Akash";
int arr[]=new int[str.length()];
char chArr[]=str.toCharArray();
char ch;
for(int i=0;i<str.length();i++)
{
arr[i]=chArr[i];
}
System.out.println("\nI have stored it in array by using ASCII value");
for(int i=0;i<arr.length;i++)
{
System.out.print(" "+arr[i]);
}
System.out.println("\nI have stored it in array by using ASCII value to original content");
for(int i=0;i<arr.length;i++)
{
ch=(char)arr[i];
System.out.print(" "+ch);
}
}
}
b = (char)('0' + a)
但仅适用于)0 <= a <= 9
。