2个小问题

roader2046 2008-07-28 11:08:42
准备SCJP考试中,遇到2个小问题:
1.有关正则表达式的

class Feline
{
public static void main(String[] args)
{
Long x = 42L;
Long y = 44L;
System.out.println(""+7+2+" ");
System.out.println(foo()+x+5);
System.out.println(x+5+foo());
}
static String foo() {
return "foo";
}
}

java Regex2 “\d*”ab34ef之后输出结果为01234456,为什么是这个结果啊?我认为是234啊!麻烦给我讲解下~

2.有关String运算的

class Feline
{
public static void main(String[] args)
{
Long x = 42L;
Long y = 44L;
System.out.println(""+7+2+" ");
System.out.println(foo()+x+5);//A,输出为foo425
System.out.println(x+5+foo());//B,输出47foo
}
static String foo() {
return "foo";
}
}

为什么AB结果不一致?“参与运算中的操作数中有String,则连接参与运算的操作数”不对吗?
...全文
121 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
roader2046 2008-07-29
  • 打赏
  • 举报
回复
这题明白了,谢谢
lionfox 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ZangXT 的回复:]
第2个简单,先说这个吧。
对于String类型的连接运算符+
如果前面是基本的数据类型,先执行的是数学的加法运算,直到遇到字符串的时候开始字符串的连接运算。
如果一开始就是字符串,则只进行字符串的连接运算,即使后面有连续的数字,也是按字符串连接起来。
比如
""+7+2+""是字符串72
foo()+x+5是字符串"foo"+42L+5="foo425"
对于x+5+foo(),一开始两个都是数字,先进行加法 42L+5+"foo"=47+"foo"="47foo"
[/Quote]

恩;隐式转换。。
roader2046 2008-07-29
  • 打赏
  • 举报
回复
额,第一个代码是这个:
import java.util.regex.*;
class Regex2
{
public static void main(String[] args)
{
Pattern p = Pattern.compile(args[0]);
Matcher m = p.matcher(args[1]);
boolean b = false;
while (b = m.find())
{
System.out.print(m.start()+m.group());
}
}
}
roader2046 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 roader2046 的回复:]
额,第一个代码是这个:
Java codeimportjava.util.regex.*;classRegex2
{publicstaticvoidmain(String[] args)
{
Pattern p=Pattern.compile(args[0]);
Matcher m=p.matcher(args[1]);booleanb=false;while(b=m.find())
{
System.out.print(m.start()+m.group());
}
}
}
[/Quote]
java Regex2 “\d*”ab34ef之后输出结果为01234456,为什么是这个结果啊?我认为是234啊!
谁能帮忙解释下这个题目?
roader2046 2008-07-29
  • 打赏
  • 举报
回复
继续顶....
xunyiren 2008-07-28
  • 打赏
  • 举报
回复
“+”可以进行“加法”与“连接”运算;进行加法运算时按照左结合性进行运算,从左至右依次相加累计;
如果2个操作数中的一个是字符串,而另一个不是字符串,运行时将把另一个转换成字符串,然后将2个操作数连接起来;如果两个操作数均是字符串则直接相连。
ZangXT 2008-07-28
  • 打赏
  • 举报
回复
第一个你代码贴错了吧
ZangXT 2008-07-28
  • 打赏
  • 举报
回复
第2个简单,先说这个吧。
对于String类型的连接运算符+
如果前面是基本的数据类型,先执行的是数学的加法运算,直到遇到字符串的时候开始字符串的连接运算。
如果一开始就是字符串,则只进行字符串的连接运算,即使后面有连续的数字,也是按字符串连接起来。
比如
""+7+2+""是字符串72
foo()+x+5是字符串"foo"+42L+5="foo425"
对于x+5+foo(),一开始两个都是数字,先进行加法 42L+5+"foo"=47+"foo"="47foo"

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧