黑马程序员技术交流社区
标题:
有点发晕,关于char 与String 看这段代码 云里雾里
[打印本页]
作者:
LINUS
时间:
2013-4-21 20:53
标题:
有点发晕,关于char 与String 看这段代码 云里雾里
public class test5 {
public static void main(String[] agrs){
int A=5;
double AA=1.3;
double sum=A+AA;
System.out.println(sum);
char x='男';
char y='女';
String z="与";
String Sum=x+y+z;
System.out.print(Sum);
}
}
复制代码
咋搞的,结果咋x y 成了数字了?到底是为什么 ? Why???????????:Q
作者:
932759732
时间:
2013-4-21 21:07
在java中基本类型可以相互转换,boolean类型比较特殊不可以转换成其他类型
转换分为默认转换和强制转换: 默认转换:容量小的类型会默认转换为容量大的类型
byte-->short--> int-->long-->float-->double
char-->
byte、short、char之间计算不会互相转换,首先先转换成int
将容量大的类型转换成容量小的类型,需要进行强制转换
只要不超出范围可以将整型值直接赋值给byte,short,char
作者:
小菜凉碟
时间:
2013-4-21 21:16
关键是:String Sum=x+y+z;这一句,因为x与Y都是char类型,在运算符+的作用下会自动提升为int类型,将x与y转为对应的unicode码所对应的数字,结果为52906,然后与字符串“与”相连接变为新的字符串;
楼主可以试试把z放在三个数的开始,如String Sum1=z+x+y;
System.out.print(Sum1);输出结果是"与男女",因字符串"与"在运算符+的作用下将后面的x与y作为字符串相连接
作者:
小菜凉碟
时间:
2013-4-21 21:21
未命名.jpg
(72.6 KB, 下载次数: 22)
下载附件
2013-4-21 21:20 上传
给你分享一下总结的有“+”的输出运算
作者:
smallsea
时间:
2013-4-21 21:22
char为基本数据类型;
String为引用数据类型;
当基本数据类型要转换成引用数据类型时,都要通过他自身的父类“.”出转换方式,例如:int转换成String
作者:
smallsea
时间:
2013-4-21 21:24
刚刚按了回车键,直接发出去了:
Integer.valueOf(str);str为String类型,所以:我帮你写了正确代码public static void main(String[] agrs) {
int A = 5;
double AA = 1.3;
double sum = A + AA;
System.out.println(sum);
char x = '男';
char y = '女';
String z = "与";
String Sum = Character.toString(x) + Character.toString(y) + z;
System.out.print(Sum);
}
作者:
高新星
时间:
2013-4-21 21:27
本帖最后由 高新星 于 2013-4-21 21:35 编辑
class Test{
public static void main(String[] agrs){
char x='男';
char y='女';
//两个字符相加,要先转换为int(自动类型转换)相加后,如果要得到char则需要强制转换
char xy =(char) (x+y);
int xy1 = x+y;
System.out.println(xy);//打印:?
System.out.println(xy1);//打印:52906
String z="与";
//x+y先运算所以得到的是int + z
String Sum=x+y+z;
System.out.println(Sum); //:打印52906与
//x+z就是字符x与字符串z得到字符串,再加字符y,最后得到字符串
String Sum1=x+z+y;
System.out.println(Sum1);//打印:男与女
}
}
复制代码
作者:
本人已死
时间:
2013-4-21 21:38
package javabean;
public class Demo2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
char x='男';
char y='女';
String z="与";
//Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果
System.out.print(x+y);
//这里因为x+y是int类型的所以与z不能相加,x+y自动转换成字符串形式
//所以输出结果是一个数字加上z
System.out.print(x+y+z);
}
}
复制代码
作者:
极限冰风
时间:
2013-4-21 21:52
char本质上就是个8位数对应的ascii码,'a'是97 ‘b’是98。相加就是195,而你的是x 和y所以就边成了52906,
在ascii码表中有相对应的数字来对比字母,你下载个ascii码来看看就知道了
作者:
黄玉昆
时间:
2013-4-22 08:14
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
作者:
陈湘林
时间:
2013-4-22 22:43
1字符串的长度
int length()
返回此字符串的长度。
String s="hello";
System.out.println(s.length());
2,字符串和字符数组间的转换
char[] toCharArray()
将此字符串转换为一个新的字符数组。
如
String s="hello";
char[] cs=s.toCharArray();
for(int i=0;i<cs.length;i++){
System.out.println(cs[i]);
}
3,取出指定位置的字符
char charAt(int index)
返回指定索引处的 char 值。
如
String s="abcdefg";
System.out.println(s.charAt(3));
注意,字符串中的字符,索引是从0开始的
4,查找字符串
int indexOf(String str)
返回第一次出现的指定子字符串在此字符串中的索引。不出现返回-1
如
String s="abcdefg";
System.out.println(s.indexOf("e"));
又如
String s="abcdefg";
System.out.println(s.indexOf("ef"));
结果为4
5,去空格
String
trim()
返回字符串的副本,忽略前导空白和尾部空白。
String s=" abcdefg ";
System.out.println("***"+s.trim()+"***");
6,字符串的截取
String
substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
如
String s="abcdvvvefg";
String ss=s.substring(4, 7);
System.out.println(ss);
简记,从哪截到哪,开始索引从0开始算,结束索引从1开始算
7,拆分字符串
String[]
split(String s)
根据给定的字符来拆分此字符串。
如
String s="计算机,音乐,电影,看书,旅游";
String[] ss=s.split(",");
for(int i=0;i<ss.length;i++){
System.out.println(ss[i]);
}
8,转换大小写
String
toLowerCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
String
toUpperCase()
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
String s="aBv";
System.out.println(s.toLowerCase());
9,不区分大小写比较
boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 进行比较,不考虑大小写。
如
System.out.println("abc".equalsIgnoreCase("ABC"));
10,替换字符串
String
replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。
如
String s="abcvvvdef";
String ss=s.replace("vvv", "xxx");
System.out.println(ss);
总结,学会用API文档,当成字典来用,不要死记硬背
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2