java_String类
来源:互联网 发布:阿里云服务器硬盘扩容 编辑:程序博客网 时间:2024/05/22 02:21
原文地址
class ObjectDemo//其他外部类{ public static void main(String[] args) { String s1="a"; System.out.println(s1=="a"); }}
//==比较的是地址,直接定义String a=”asdfghj”(编译时已经确定,指向常量池中)
地址指向常量池中,若判断其是否与”asdfghj”也是与常量池中的字符串asdfg对象相比较,所以返回值是true;
而若是直接定义一个new对象如: String a=new String (“asd”);其地址指向堆内存(运行时在堆内存中确定,编译时不能确定)
用==判断其是否与”asd”相等,自然返回值是false,一个有自己的堆内存,一个指向常量池中;
另外:String s1=”hellow”;
String s2=” world”;
String s3=s1+s2;
用==判断s3是否等于”hello world”返回值是false
因为s3=s1+s2是在运行时刻才能知道的,s3运行时会在堆内存中存在地址
顾一个指向堆内存的地址一个指向常量池,返回false(new对象也在运行时刻知道)
/**
/** * 编译期无法确定 */public void test10(){ String s0 = "ab"; final String s1 = getS1(); String s2 = "a" + s1; System.out.println("===========test10============"); System.out.println((s0 == s2)); //result = false }private static String getS1() { return "b"; }
执行上述代码,结果为:false。
分析:这里面虽然将s1用final修饰了,但是由于其赋值是通过方法调用返回的,那么它的值只能在运行期间确定,
因此s0和s2指向的不是同一个对象,故上面程序的结果为false。
阅读全文
0 0
- java_String类
- java_String类
- Java_String
- Java_String
- Java_String
- JAVA_String
- Java_String
- JAVA_String类及StringBuffer类
- Java_String类常用方法总结
- 笔记11:java_String类的特点
- 菜鸟先飞之JAVA_String类
- java_String类的对象的两种赋值方式
- Java_String Format
- java_String知识点
- Java_String.format
- Java_String小结
- 自己实现Java_String里面的spilt方法,不能借助于string的任何的方法,类
- java_String和Stringbuffer区别
- 【软件工程导论】初学软件工程导论
- 小而美的 React Form 组件
- JQuery之ajax
- nyoj90
- bootstrap 心得
- java_String类
- 用java实现简单的计算器
- http://www.cnblogs.com/tbcaaa8/p/4415429.html
- 数据结构与算法(贪婪算法)
- SpringMVC源码分析(二)
- Linux 基础入门--笔记
- poj1637(混合图判欧拉回路)
- Javascript——可选的分号
- pi近似值计算