⑴ java中的字符串的问题
这这段代码没法体现出String不可变,还是相当于新的String字符替换了以前的字符。其实想想引用类型就能明白,String不是基础数据类型。所以==判断的是对象是否一样。先声明一个String str=new String("a");然后复制一份 String str1=str; 这个时候判断 str==str1;为true说明指向同一个对象,如果通过 str1="ab"; 重新赋值 再执行 str==str1;就为false了,说明 "ab" 的对象是新的String对象。
⑵ java 字符串内容相同但内存地址不同怎么判相等
java String类的对象判断相等有两种方式:
== 判断两个对象的地址是否相等;
equals()方法判断两个对象的内容是否相等
实例:
String s1="hello";
String s2 = new String("hello");
System.out.println("s1和s2地址是否相等的结果"+(s1==s2));结果为false;
System.out.println("s1和s2内容是否相等的结果"+(s1.equal(s2));结果为true;
你明白了吗?
⑶ java怎么打印字符串的地址
Java没有办法打印字符串的地址,因为在Java虚拟机中已经不用指针了。引用在虚拟机中是不能直接反回值的。
你还是放弃这种想法吧。
⑷ java怎么提取下面字符串中的地址
这个可以用正则表达式,给你写了个简单的你代码,我测试过了,希望对你有帮助~!
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExtractAddress {
public static void main(String[] args) {
String s = "var _url = \"http://www..com/\";";
Pattern pattern = Pattern.compile("\"(.*)\"");
Matcher m = pattern.matcher(s);
if(m.find())
System.out.println(m.group(1));
else
System.out.println("没找到相关地址");
}
}
⑸ 怎么查看java中字符串的内存地址
java中不建议直接获取字符串内存地址,因为java不像c语言,获取内存地址是C语言的强项,java的弱项。但是java内存地址还是有一个应用场景,就是判断两个字符串内存地址是否相等来判断是否是同一个对象,用双等号“==”来比较的。参考代码如下:
publicclassTest01{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Stringstr1="abc";
Stringstr2=newString("abc");
System.out.println(str1==str2);//输出false
}
}
⑹ java怎么获得字符串中某一字符的位置
在java中使用indexOf方法即可获得字符串中某一字符的位置,例如Stringstr="abcdef",System.out.println(str.indexOf("c"))。
⑺ java中两个字符串的内存地址相同怎么办
String s1 = new String("I am a student"); 这里 你声明了一个引用 s1
指向的是 new String("I am a student"); 这个字符串
String s4 = s1; 这里 你又声明一个引用 指向s1的引用 也就是new String("I am a student");
if(s1 == s4) {
System.out.println("这两个字符串的内存位置相同");
}
上面还是相等的
但是 s4 = s4.replace('a', 'A');
s4.replace('a', 'A'); 生成了另一个 字符串 你要知道 String 是final类型的 所以
这个时候 即原来已经开辟了内存空间的 new String("I am a student"); 是不可能改变内容了的
这个时候 s4.replace('a', 'A'); 就另开辟了一个内存空间
而这个时候 你的S4指向s4.replace('a', 'A'); 而原来的s1还是指向 new String("I am a student");
他们肯定不一样的呢