易截截图软件、单文件、免安装、纯绿色、仅160KB

JAVA虚拟机字符串池相关(笔记)

 JAVA虚拟机有一个字符串池,对于字符串池的访问可以使用字符串对象的intern()方法,可动态向池中添加对象,它的定义如下:
public native String intern();
这是一个本地方法,在调用这个方法时,JAVA虚拟机首先检查字符串池中是否存在与该字符串对象值相等的对象,如果存在就返回字符串池中的对象的引用,否则就新创建一个与该字符串对象值相等的对象,然后再返回新创建对象的引用,有如下一段代码:
public class InternTest{
     public static void main(String args[]){
         //用一个字符数组初始化a,是避免池中含有值为"abcd"的对象
         String a=new String(new char[]{'a','b','c','d'});
         String b=a.intern();
         (1)
         if(a==b){
               System.out.println("b加入了字符串池中,没有新建对象");
         }else{
               System.out.println("b没加入字符串池中,新建了对象");
         }
     }
}
上述代码运行后将输出"b没加入字符串池中,新建了对象".原因如下:
String a=new String(new char[]{'a','b','c','d'});
该语句会新建一个字符串对象,但该对象并不会放入字符串池中,而是放在堆中
通过a.intern()语句,JVM将会在字符串池中新建一个值为"abcd"的对象,并把其引用返回给b,因此才有了上面的输出
如果在代码中(1)处加入语句:String c="abcd";
那么System.out.println(c==b);会返回true
前面谈到String对象的存储,在JAVA中,栈(stack)主要保存基本类型,速度仅次于寄存器,比堆要快,而堆(heap)主要用于存储对象;
在用引号创建字符串对象时,实际上是JAVA虚拟机在栈中创建多个char型字符,然后在堆中创建一个String对象,该对象的值就是之前栈中的那个字符序列;而用new String("abc")创建String对象时,关键字new会创建一个字符串对象放在堆中,"abc"也会创建一个字符串对象,但该


相关文档:

java 访问。net webservice

java访问。net的webservice 而且 返回值是一个类,这玩意折磨我一天,出现过一系列的问题,
包括 没有定义SoapAction 不能序列化类等等。 最后还是服务提供商给了个demo,解决了 ,原因是我返回自定义类的一个变量没有get函数,可耻啊。而且demo里的代码 我想也是用wsdd2java生成的,我以前也看到过这种模式的实现,看着费 ......

java mail 相关

【声明】转帖地址 : http://tech.ddvip.com/2009-04/1239788309115180.html
MailSenderInfo .java :
package com.util.mail;
import java.util.Properties;
/**
* @author AllanKing
* @date 2009-11-12
*/
public class MailSenderInfo {
// 发送邮件的服务器的IP和端口
private String mailServerHost; ......

JAVA SQLSERVER数据库连接

 package cn.ctgu.edu.ac;
import java.sql.*;
public class test {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String url="jdbc:sqlserver://localhost:1433;Database=网上书店管理系统;integr ......

Java调用C/C++ – JNI

昨天才看到,但是遇到一些问题,今天解决了,记下……(参考:http://netbeans.org/kb/55/beginning-jni-part1.html)
我用的是Netbeans 6.7,但是和其他的也应该大同小异吧。 基本流程: Java这边的:
创建java文件(带native的),还要记得在类中加入:System.loadLibrary(xxx) 。
然后用javah来生成C/ ......

java位运算

Java 定义的位运算(bitwise operators )直接对整数类型的位进行操作,这些整数类型包括long,int,short,char,and byte 。表4-2 列出了位运算:
表4.2 位运算符及其结果
运算符                     &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号