1. 以下的运行结果是什么?要达到预想结果应该怎么做。
public static void main(String[] args)
{
String classPath = "java.lang.String";
System.out.println(classPath.replaceAll(".", "/"));
}
2. 以下的运行结果是什么?
public static void main(String[] args)
{
final String pig = "length: 10";
final String cat = "length: 10";
final String dog = "length: " + pig.length();
System.out.println("Animals are equal: " + pig == cat);
System.out.println("Animals are equal: " + pig == dog);
System.out.println("Animals are equal: " + pig.equals(dog));
}
public static void main(String[] args)
{
String classPath = "java.lang.String";
System.out.println(classPath.replaceAll(".", "/"));
}
2. 以下的运行结果是什么?
public static void main(String[] args)
{
final String pig = "length: 10";
final String cat = "length: 10";
final String dog = "length: " + pig.length();
System.out.println("Animals are equal: " + pig == cat);
System.out.println("Animals are equal: " + pig == dog);
System.out.println("Animals are equal: " + pig.equals(dog));
}
String classPath = "java.lang.String";
System.out.println(classPath.replaceAll("\\.", "/"));
意图是把包路径换为系统文件夹路径格式
但是replace使用的应该是正则,.在里面都是特殊字符
改为
public static void main(String[] args)
{
String classPath = "java.lang.String";
System.out.println(classPath.replaceAll("\\.", "/"));
}
第二题:
考察是string在内存中存储,
但是陷阱却在打印的地方,运算符优先级
+号大于==,所以前两个打印是先将两个字串相加后与最后一个字串相比,结果为fasle结果:
false
false
Animals are equal: true改为:
System.out.println("Animals are equal: " + (pig == cat));
System.out.println("Animals are equal: " + (pig == dog));
System.out.println("Animals are equal: " + pig.equals(dog));结果:
Animals are equal: true
Animals are equal: false
Animals are equal: true第一个为true,二者内存地址是一样的,为什么?自己去看java中string的存储方式
第二个因为dog是拼的,地址肯定不同
第三个,equals比较的是字符串,一样的,true
就这么多
因为"."匹配除了换行符(\n)以外的任意一个字符,所以匹配"java.lang.String"的每一个字符,都替换为"/",打印出16个"/"
解决方法:
classPath.replace(".", File.separator)第二
false
false
true
主要是优先级问题
+的优先级比==高
.和()的优先级比==高可以结贴了,哈哈~~~