A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 温立华 中级黑马   /  2013-3-18 21:36  /  3186 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 温立华 于 2013-3-19 09:31 编辑

怎样让char类型的东西转换成int类型?请举例论证

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

10 个回复

倒序浏览
char c = ‘A’;

int i = c;//自动转换为int型

//反过来只要作强制类型转换就行了

c = (char) I;
回复 使用道具 举报
char c = ‘A’;

int i = c;//自动转换为int型

//反过来只要作强制类型转换就行了

c = (char) I;

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 谢洋 于 2013-3-18 22:01 编辑

编译器自动帮忙转了,char与int都是基本类型,char二字节,int四字节大小
回复 使用道具 举报
本帖最后由 孙晋学 于 2013-3-18 21:46 编辑

char类型占两个字节,int占四个字节,所以想到Java会自动转型
  1. char ch = 'a';
复制代码

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
  1. package com.itcast.day1;

  2. public class Char {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 //定义一个char类型变量c,值初始化为‘c’;
  8.                 char c = 'w';
  9.                 //定义一个int类型变量i,将c赋值给i,自动类型转换;如果反过来只要作强制类型转换就行了
  10.                 int i = c;
  11.                 char c2 = (char)i;
  12.                 System.out.println(i);
  13.                 System.out.println(c2);

  14.         }

  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
由低精度向高精度转换,会自动转换
由高精度向低精度转换,需要强制转换
但是强制转换可能出现问题1 损失精度   2.溢出
例如:char i='a';
          int k=i;自动转换得到k=97.

          反之如果int a=97;char b=a;b=(char)a

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
整型的取值范围从小到大依次是 char----short------int-----long
因为char 比int 小,所以char类型的可以放到int中,不会造成精度损失,而且是自动转换
但char是字符类型的,所以转换成int类型时会输出字符所对应的ASCII码值
char x='a';
    int b=x+1;
x是char类型,1是int类型,相加后自动转换成int类型赋值给b。  
'a'对应的ASCII值是97,所以输出b的值就是98

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
int高于char,当编译时,jdk会将char自动转为int,如:char x = 'z'; int y = 0; y = x;//x会自动转型为int 赋给y;楼上正解!
回复 使用道具 举报
本帖最后由 黑马-王鹏 于 2013-3-19 00:00 编辑
  1. class Demo1

  2. {

  3. public static void main(String[] args)

  4. {

  5. char  b = 3;

  6. b = 2+b;

  7. System.out.println(b);

  8. }

  9. }

复制代码
结果:编译不能通过,可能损失精度

分析原因:因为char在内存占2个字节,整数2在内存中占四个字节,当2+b在运算过程会把b自动提升到4个字节进行运算,运算完毕会把占四个字节的5赋予占两个字节的b,这样做就可能损失精度。

解决途径:(1)把 b = 2+b;改为: b = char(2+b);这叫强制转换,即把占四个字节的数int强制转换成char
(2)把 b = 2+b;改为:b+=2,因为b+=2在内存中完成了自动强制转换功能

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
基本类型精度从大到小  double float long int short(char) byte
在类型转换时查看等号左右两边个如果左边高右边低,那么自动转。如果左边低右边高,强制转。
所以char c='a';
    int i=c;
这样没问题,是自动转。输出的是a在unicode码表中对应的值。(java用的unicode码)

;

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马