易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : java

发现一个c++多态与java多态不同的地方

刚刚看到一篇文章提出c++多态与java多态不同的地方,基本意思如下:
请看C++代码:
class Base
{
public:
 Base()
 {
  init(); 
 }
 virtual ~Base() {}
protected:
 int value;
 virtual void init() 
 { 
  value = 100;     
 }
};
class Derived : public Base
{
public:
 Derived()
 {
  init();
 }
protected:
 void init() 
 {
  cout << "value = " << value << endl;
  // 做一些额外的初始化工作 
 }
};
int main(int argc, char* argv[])
{
 Base* pb;
 pb = new Derived();
 delete pb;
 return 0;
}
执行结果是
value = 100
再看java代码:
class Base
{
  public Base()
  {
    init();
  }
  protected int value;
  protected void init()
  {
         value = 100;  
  }
......

发现一个c++多态与java多态不同的地方

刚刚看到一篇文章提出c++多态与java多态不同的地方,基本意思如下:
请看C++代码:
class Base
{
public:
 Base()
 {
  init(); 
 }
 virtual ~Base() {}
protected:
 int value;
 virtual void init() 
 { 
  value = 100;     
 }
};
class Derived : public Base
{
public:
 Derived()
 {
  init();
 }
protected:
 void init() 
 {
  cout << "value = " << value << endl;
  // 做一些额外的初始化工作 
 }
};
int main(int argc, char* argv[])
{
 Base* pb;
 pb = new Derived();
 delete pb;
 return 0;
}
执行结果是
value = 100
再看java代码:
class Base
{
  public Base()
  {
    init();
  }
  protected int value;
  protected void init()
  {
         value = 100;  
  }
......

Java高级特性 1

1.静态导入:
静态导入是JDK1.5后新加的功能,一般不怎么常用,很简单给你举个例子你就能明白了,看这段代码:
import static java.lang.System.out;//导入java.lang包下的System类的静态方法out;
public class HelloWorld{
public static void main(String[] args){
out.print("Hello World!");//既是在这里不用再写成System.out.println("Hello World!")了,因为已经导入了这个静态方法out。
}
}
import xxxx 和 import static xxxx的区别是前者一般导入的是类文件如import java.util.Scanner;后者一般是导入静态的方法,import static java.lang.System.out;
静态导入主要是指可以通过静态导入一个类的方法,就可以在以后只要写方法的名字就可以,不用连类的名字也写了。主要适合在编程中使用率很高的函数,使用率比较低的函数这样做相反有些麻烦了。我觉得这也算是一个小技巧罢了。
2.可变参数与for循环增强:
这个是一般的用法:
public static void loop(String[] args){
for(int i=0;i<args.length;i++)
  {
   System.out.println(args[i]);
  }
}
  这个是JDK 增加的新特性的用法! ......

发现Java虚拟机内存泄露问题

【IT168 文档
】内存
泄露问题对于程序来说,是一个很难发现,并且容易引起严重灾害的事情。
Java一直以其垃圾回收机制为自豪,那是否这种机制就是完美的呢。
  常规理解上,Java的内存
管理机制是将局部变量保存在堆中,当变量的作用域结束之后,该变量所占用的
内容会被自动回收。不需要做任何特殊的处理。比如下面的代码:
#div_code img{border:0px;}
public

class
JavaMemory{
      
private

final

int
dataSize
=
(
int
) (Runtime.getRuntime().maxMemory()
*

0.6
);      
public

void
f(){
          {
              
byte
[] data1
=

new

byte
[dataSize];
         }
          
byte
[] data2
=

new

byte
[dataSize];
      }

   &n ......

分页功能的java实现

       最近做一个项目,要用到分页功能,参考了很多方法,有的不合适,有的不喜欢,于是自己在他们的基础上整了一个;思路是这样的:先把需要分页的数据或是记录都查询出来 存入一个集合类里如List或是Vector,然后利用其sublist(int findex,int eindex)方法,获取需要分页的数据或记录,关于sublist()函数就自己去查API了。下面贴下代码吧,首先是将分页所需的一些个东东抽象出一个javabean对象—PageBean:
public class PageBean {
private int curPage; //当前页
private int pageCount; //总页数
private int rowsCount; //总行数
private int pageSize=10; //每页多少行



public PageBean(int rows){

this.setRowsCount(rows);
if(this.rowsCount % this.pageSize == 0){
this.pageCount=this.rowsCount / this.pageSize;
}
else if(rows<this.pageSize){
this.pageCount=1;
}
else{
this.pageCount=this.rowsCount / this.pageSize +1;
}
}


public int getCurPage() {
return curPage;
}
public void setCurP ......

JNI技术实现JAVA程序调用dll


JAVA的跨平台的特性深受java程序员们的喜爱,但正是由于它为了实现跨平台的目的,使得它和本地机器的各种内部联系变得很少,大大约束了它的功能,比如与一些硬件设备通信,往往要花费很大的精力去设计流程编写代码去管理设备端口,而且有一些设备厂商提供的硬件接口已经经过一定的封装和处理,不能直接使用java程序通过端口和设备通信,这种情况下就得考虑使用java程序去调用比较擅长同系统打交道的第三方程序,从1.1版本开始的JDK提供了解决这个问题的技术标准:JNI技术.
       JNI是Java Native Interface(Java本地接口)的缩写,本地是相对于java程序来说的,指直接运行在操作系统之上,与操作系统直接交互的程序.从1.1版本的JDK开始,JNI就作为标准平台的一部分发行.在JNI出现的初期是为了Java程序与本地已编译语言,尤其是C和C++的互操作而设计的,后来经过扩展也可以与c和c++之外的语言编写的程序交互,例如Delphi程序.
       使用JNI技术固然增强了java程序的性能和功能,但是它也破坏了java的跨平台的优点,影响程序的可移植性和安全性,例如由于其他语言(如C/C++)可能能够随意地分配对象/占用内存,Java的指针安全性得 ......

有关java中的String,StringBuffer,StringBuild

String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。而在某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的:
String S1 = “This is only a” + “ simple” + “ test”;
StringBuffer Sb = n ......
总记录数:6386; 总页数:1065; 每页6 条; 首页 上一页 [1] [2] [3] 4 [5] [6] [7] [8] [9] [10]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号