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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王明明 中级黑马   /  2012-6-13 12:20  /  2290 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王明明 于 2012-6-13 12:21 编辑
  1. class Demo
  2. {
  3. //定义一功能,通过给定分数,获取该分数对应的等级。
  4. /*
  5. 1,明确该功能的结果:等级 char
  6. 2,有没有未知内容。分数。int
  7. */
  8. public static char getLevel(int num)
  9. {
  10. char level;
  11. if(num>=90 && num<=100)
  12. level = 'A';
  13. else if(num>=80 && num<=89)
  14. level = 'B';
  15. else if(num>=70 && num<=79)
  16. level = 'C';
  17. else if(num>=60 && num<=69)
  18. level = 'D';
  19. else
  20. level = 'E';

  21. return level;
  22. }
  23. public static void main(String[] args)
  24. {

  25. char ch = getLevel(35);
  26. System.out.println("level="+ch);
  27. }

  28. }
复制代码
  1. class Demo
  2. {
  3. //定义一功能,通过给定分数,获取该分数对应的等级。
  4. public static String getLevel(int num)
  5. {
  6. String level;
  7. if(num>=90 && num<=100)
  8. level = "A";
  9. else if(num>=80 && num<=89)
  10. level = "B";
  11. else if(num>=70 && num<=79)
  12. level = "C";
  13. else if(num>=60 && num<=69)
  14. level = "D";
  15. else
  16. level = "E";

  17. return level;
  18. }
  19. public static void main(String[] args)
  20. {

  21. String ch = getLevel(35);
  22. System.out.println("level="+ch);
  23. }

  24. }
复制代码
这里一个是string一个是Char 这2个输出都没问题 我想知道的是 除了String 跟 Char 的区别外
还有没有其他的本质区别?

8 个回复

倒序浏览
区别就是代码1中的第28行ch类型会自动转为String类型,从而与"level="合并,比如int类型就是这样。
回复 使用道具 举报
字符串可以表示一个或多个字母数字和其它符号等,而字符只能表示一个字母数字或其它符号,比如字母A可以用字符串表示也可以用字符表示,但是字母AB就不能用字符表示了
回复 使用道具 举报
朝哥 发表于 2012-6-13 12:35
区别就是代码1中的第28行ch类型会自动转为String类型,从而与"level="合并,比如int类型就是这样。 ...

会自动转换成String? 我代码1中 并没有定String  也会?
回复 使用道具 举报
char类型的本质是整型的 ,存放ascii码 取值范围在-128 到 127之间  它是属于基本数据类型
而 String 是一个引用数据类型,你可以把他看成是一个对象

比如: char ch = 'a';   String st = "a";
System.out.println(ch+1);   //这个打印结果会是 98
System.out.println(st+1);    //这个打印结果会是 a1
回复 使用道具 举报
朝哥 发表于 2012-6-13 12:35
区别就是代码1中的第28行ch类型会自动转为String类型,从而与"level="合并,比如int类型就是这样。 ...

记住:谁说你没定义。"level="就是。
记住,字符串+其它基本数据类型,都会转为字符串。
所以你想把一个int类型数据,比如123转为“123”
直接123+“”就行了。
你想把true转为“true”
直接true+""
明白了?
回复 使用道具 举报
朝哥 发表于 2012-6-13 13:42
记住:谁说你没定义。"level="就是。
记住,字符串+其它基本数据类型,都会转为字符串。
所以你想把一个i ...

哦 你说的是这个意思呀
回复 使用道具 举报
此问题涉及基本数据数据类型、对象类型及内存的关系
char 是字符 如'a','b'  string 是字符串 如"a"."b"
两个字节构成一个字符 多个字符构成字符串。
char是基本数据类型 string是引用类型
a、        基本数据类型在程序中会以局部变量、方法参数、对象成员变量等形式出现
b、        基本数据类型存放的位置有所不同,以局部变量、方法参数为首的放在栈中而成员变量放在堆中。
char ch=‘a’栈内存建立引用并变量存于栈内存; String ch=“abc” cch是栈内存中建立引用 对象“abc”存于堆内存中      
c、        char、byt变量可以直接赋值成整数
根据变量所占内存大小及存取速度等因素 char好于string
回复 使用道具 举报
String 是类
char 是基本数据类型
String+String 其实是相连
char + String 其实是 char转换成String 与String 相连
char+char 其实是char的ascii码相加
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马