java中char类型大小写转换问题52
发布网友
发布时间:2023-10-16 00:45
我来回答
共4个回答
热心网友
时间:2024-11-25 16:34
public class CharTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入字母:");
char c = in.next().charAt(0);
if (c >= 'A' && c <= 'Z') {
c += 32;
System.out.println("这里的大写" + (char) (c - 32) + "被转换成了" + c);
System.out.println("这里的大写" + (c - 32) + "被转换成了" + c);
} else if (c >= 'a' && c <= 'z') {
c -= 32;
System.out.println("这里的小写" + (char) (c + 32) + "被转换成了" + c);
System.out.println("这里的小写" + (c + 32) + "被转换成了" + c);
}
/*
* 首先,我加了两句,输出,楼主先运行看一下。然后我再解释。
* 这里涉及到三个知识第
* 1.字母有其对应的A码,
* 2.大小写相差32
* 3.自动数据类型转化。
*
* 上面例子如果不好理解的话,我们换一个,好理解的
* int a=2;
* double b=2.2;
* a+b最后的结果会是什么类型呢???????
* 显示会是double,为什么这样呢?我们说数据的处理,肯定要在同一个类型的时候才能处理,
* 所有不同数据类型处理时要通过自动或者强制转化,否则会报错。
* 这里是自动转化,自动转化有两个要求:
* 1.两种数据类型兼容
* 2.小的向大的转化。
* 所以这里int 转为double,最终结果是double
*
*
* 好了,现在来分析一下
* (char)(c-32)和(c-32)的区别
* 其实也就是c-32。
* 1.这里的首先char 和int 通过A码可以转换,所以兼容
* 2.int 比char 大。
* 所以计算的时候c先转为相应的A码,也就是整数,然后进行计算。计算后的结果必然是整数
* 如果你此时想得到char。就必须通过强制类型转化。所以要(char)
* */
}
}
总结一下: 通过转化后,因为参与 了+或者-32,所以最终的结果是以整数的形式出现的。
当然,如果你这样写的话,就另当别论了
再举例说明清楚
如果是这样的话
c+=32;
System.out.print(c);
输出的是字母
对比
System.out.pirnlnt(c+32);
输出的是数字??
为什么呢
因为c=c+32,c本身的数据类型是char 后面的结果计算后的时候会自动根据对应的A码转为对应的char
所以需要区别的是:
如果是赋值运算。运算后的右边的结果,会自动转型为左边的类型,如果不能转型会报异常。
如果是通过其他运算(比如四则运算),它会先把所有数据类型先转化为较大的数据类型,最终得到的结果也是较大的数据类型。
最后举例
int a=32;
char b='A';
char c='A';
b+=32;//赋值运算
//或者b='A'+32;
//如果是b=b+32;就会报错。因为后面进行了加法运算,结果需要用int来接收
//int d=b+32;这个就对了
System.out.println(b); //a
System.out.println(c+32);//97,其他运算
热心网友
时间:2024-11-25 16:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++
数据类型
基本类型有以下四种:
int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
float长度数据类型有:单精度(32bits float)、双精度(64bits double)
boolean类型变量的取值有:ture、false
char数据类型有:unicode字符,16位
对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long
转换原则
从低精度向高精度转换
byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换
基本类型向类类型转换
正向转换:通过类包装器来new出一个新的类类型的变量
Integer a= new Integer(2);
反向转换:通过类包装器来转换
int b=a.intValue();
类类型向字符串转换
正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量
热心网友
时间:2024-11-25 16:35
public static char toLowerCase(char ch)
public static char toUpperCase(char ch)
Character类自带的两个方法
热心网友
时间:2024-11-25 16:35
问题不全无法解答