java - String 浅谈

	/**
		 * String s1 = "a";
		 * 编译器会先检查常量池中是否已经有"a":
		 * 如果没有,则在常量池先创建,后引用.
		 * 如果有,则直接引用;
		 * 所以执行该语句,会产生0个或1个对象.
		 * 这里,会创建1个对象.
		 */
		String s1 = "a";
		/**
		 * String s2 = new String("a");
		 * 编译器先在堆中创建一个对象,然后去常量池中检查是否已有"a":
		 * 如果没有,则先在常量池创建,然后将堆中的引用指向常量池的对象;
		 * 如果有,则直接将堆中的引用指向常量池中的对象;
		 * 所以执行该语句,会产生1个或2个对象.
		 * 这里,会创建1个对象.
		 */
		String s2 = new String("a");
		System.out.println(s1==s2);	//false

以上代码,在jvm简单内存图可简述为:

而以上==比较的会是对象的地址,所以结果为false

时间: 2024-11-05 21:57:47

java - String 浅谈的相关文章

java serialize 浅谈

对象的串行化(Serialization) 一.串行化的概念和目的 1.什么是串行化             对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(persistence).对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的串行化(Serialization) .串行化的主要任务是写出对象实例变量的数值.如果交量是另一对象的引用,则引用的对象也要串

java多线程浅谈

经常看到,一个对象的synchronized方法被一个线程调用后,那么其他线程还能调用该线程的其他方法吗? 网上给出各种答案,其中一种是:不能. 但是,我们有没有自己动手去写一个简单的程序来验证一下?从这个问题浅谈一下我对java多线程的理解. 要理解java的多线程,首先的理解jvm. 参见http://blog.csdn.net/kyfg27_niujin/article/details/7942006

Java中Integer和String浅谈

http://qxzxcjq-126-com.iteye.com/blog/883283 Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float.short.Java作为一种面向对象的编程语言,数据在Java中也是一种对象.我们用基本数据类型创建的对象,如 int x = 0;这里的x只有值这个属性,没有(或者很少)有其他的方法.这在一些需要对数据进行操作时变的很不方便,程序员需要自己编写很多代码去实现一些常用的功能,增加了工作量及程序的大

java rmi浅谈

首先比较下RPC和RMI的差别: 首先java提供了RMI的api,jdk1.5之后虚拟机自动生成两个类:存根类stub和骨架类skelton. stub是给客户端的,当客户端调用远程对象的一个方法时,实际上是调用本地存根对象的相应方法.skelton负责在服务端为远程对象接受客户端的请求.RMI必须要有JVM支持,所以,如果C,S都使用java开发,可以考虑使用RMI. RPC可以跨语言,客户端请求参数中就带有需要调用的类,方法及参数 -----------------------------

关于java线程浅谈五: Condition条件

在面试的过程当中,在面试官提出问题的时候,往往会就问题本身引申出较深层次的问题.比如:你使用过with语句吗?我的回答是:with语句经常适用于对资源进行访问的场合,确保在访问的过程中不管是否发生异常都会指执行必要的清理操作,比如文件的自动关闭以及线程中锁的自动获取与释放.面试官紧接着问,那你知道为什么with语句能够使文件正确关闭,一下子把我问闷了,只能依稀记得with语句会开辟出一块独立环境来执行文件的访问,类似沙盒机制.面试官对这个答案不置可否,算是勉强通过了.所以知其然更要知其所以然.在

Java注解浅谈

注解定义(来自百度百科):指示编译器如何对待您的自定义 Annotation,预设上编译器会将Annotation资讯留在class档案中,但不被虚拟机器读取,而仅用于编译器或工具程式运行时提供资讯. 随着零配置的流行,注解的使用也越来越大众化,注解的学习也很有必要.最近学习了下Spring的几个注解,这里与大家分享下自己对注解的理解.首先我们来看下@Controller这个注解的源码: ? 1 2 3 4 5 6 7 8 9 10 package org.springframework.ste

java - 异常浅谈

java提供异常处理机制中,可以分为RuntimeException和checked Exception两种. RuntimeException 是运行时异常,是程序本身无法解决的.例如,对于一个用户注册网站,如果当前用户名已经被使用,则解决方案只能是当前用户使用新的用户名, 而程序本身是无法解决的(我们总不能通过程序将原有用户名删除,不给他使用,然后给当前用户注册吧...). 企业开发中,一般自定义(给用户反馈信息)的异常偏向于使用RuntimeException,这是因为,方法的调用者不需要

java笔试浅谈

从第一份笔试到现在已经有差不多一个月了,记得自己第一份笔试就是腾讯的.那时就是抱着量力而为的心情去参加的,果然,整份试题有不少知识自己是没见过的,有一些知识是学过但忘记了的,所以,那次笔试就是去做"炮灰"了.接下来又陆续参加了不少名企校招的笔试,但结果都不尽人意!特别是跟同班两位朋友一起去参加高新兴的java工程师,结果他们都过了笔试,而我却没过!那时,感觉到挺沮丧的,记得当时是在中大参加笔试的,然后自己再教室外面静静等待他们面试!那等待的一个多小时,自己静静反省了好多,得出了原来自己

Java入门浅谈

首先了解Java的版本:JavaME.JavaSE(主要来创建桌面应用,有独立的安装程序,例如:Windows.msi等).JavaEE(在JavaSE基础上构建,主要提供Web服务,管理等).然后就是Java的语言特点,不同于C语言,C语言直接语言运行编译成机器码执行,效率高:而Java会首先生成一个class文件(也就是字节码),再解释成机器码在运行.