java中char类型大小写转换问题

  Scannerin=newScanner(System.in);  charc=in.next().charAt(0);&nb...   Scanner in = new Scanner(System.in);  char c = in.next().charAt(0);  if(c>='A'&&c<='Z')  {   c+=32;   System.out.println("这里的大写"+(char)(c-32)+"被转换成了"+c);  }  else if(c>='a'&&c<='z')  {   c-=32;   System.out.println("这里的小写"+(char)(c+32)+"被转换成了"+c);  } 请问被转换后的c是char类型的吗?如果不是怎么转换成char类型的?回答的详细的加分!!! 展开
 我来答
清心又谦恭丶布丁9
推荐于2017-10-07 · TA获得超过6605个赞
知道小有建树答主
回答量:1247
采纳率:100%
帮助的人:1913万
展开全部
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,其他运算
扶问迩s3
2011-09-25 · TA获得超过1276个赞
知道小有建树答主
回答量:702
采纳率:0%
帮助的人:345万
展开全部

++++++++++++++++++++++++++++++++++++++++++++++++++++++

数据类型

基本类型有以下四种:
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出一个新的类类型的变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
墨渍
2011-09-25 · TA获得超过2167个赞
知道大有可为答主
回答量:3442
采纳率:20%
帮助的人:995万
展开全部
public static char toLowerCase(char ch)
public static char toUpperCase(char ch)
Character类自带的两个方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-01-04
展开全部
问题不全无法解答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式