之前用的c/c++比较多,在c/c++中对于传参类型,无外乎就是传值.传引用.传指针这几种.但在java中,由于没有指针类型,其传参的方式也发生了相应的变化.在网上找了找,按我之前的理解,java中传参方式应该主要有两种:传值和传引用 一 传值 java中的传值即传递的是原变量的一个副本.基本的数据类型,如:char,int,double等类型的变量向函数传递的参数,都是变量的副本都属于传值.函数内部不论进行任何操作,都不影响变量本身,影响的只是变量的副本. 例如: public class
最近在研究利用sax读取excel大文件时,出现了以下的错误: java.lang.IllegalStateException: Zip File is closed at org.apache.poi.openxml4j.util.ZipFileZipEntrySource.getEntries(ZipFileZipEntrySource.java:45) at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.ja
这里来弄清楚Java的传参究竟是按值传递的还是按引用传递的. 形参和实参 传参的概念里,有形参和实参的区分.形参是定义方法名和方法体的时候使用的参数,目的是用来接收调用该方法的时候传入的参数:实参是调用有参方法的时候传入的参数,方法名后面的括号中的参数就是实参.理解起来可能有点抽象,简单理解就是,形参是定义方法的参数,实参是调用方法时实际传入的参数,区别在于[定义]和[调用]. 简单举个例子,我定义了一个打印名字的方法,传入一个name的参数,这个参数就是形参. public void prin
最近在写一个大量小文件直接压缩到一个zip的需求,由于zip中的entry每一个都是独立的,不需要追加写入,也就是一个entry文件,写一个内容, 因此直接使用了多线程来处理,结果就翻车了,代码给出了如下的错误:write beyond end of stream! 下面直接还原当时的代码场景: 1 public class MultiThreadWriteZipFile { 2 3 private static ExecutorService executorService = Executo