2017.2.6

it2022-05-05  160

1.是在类里面将成员变量写为new初始化,还是在方法里面再new初始化类的成员变量?答:写在类里面,成员变量初始化new就意味着在创建当前对象时候,就一并创立了这个成员变量对象。写在方法里面,是在有需要的时候,调用这个方法时候才初始化这个成员变量。区别就是:生成时间不一样,恒诚时间不一样,生成时间不一样。且,类成员变量new的话,就是有状态的类,如果多项成调用这个类的某个方法(该方法调用了这个成员变量),那就是非线程安全的了。

2.类只要不是单例类,就普通的类,是随便写成员变量的,以为内每new一个对象,各个对象都是不同的,不互相干扰的。不影响类的成员变量的赋值。3.每个类都有特定的用途,记住。你编写的类要有专门的用途2.Java 读写Properties配置文件1.Properties类与Properties配置文件

  Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字符串类型。

3.如何在src中创建.properties文件?:eclipse?选中src ->new->file->填写文件名称 写上后缀就行了。

4.JAVA读取properties时路径注意问题,5.路径读取问题:src文件夹下的类,读取config文件夹下的config.properties配置文件。fis = this.getClass().getClassLoader().getResourceAsStream("config.properties"); String tempPathString = this.getClass().getClassLoader().getResource("//").getPath(); tempPathString = tempPathString.replaceAll("bin", "Config"); System.out.println(); System.out.println(tempPathString); FileInputStream fip = new FileInputStream(tempPathString+"config.properties"); properties.load(fip); Iterator<String> propertiesIterator = properties.stringPropertyNames().iterator(); while (propertiesIterator.hasNext()) { String key = propertiesIterator.next(); System.out.println(key+"="+properties.getProperty(key)); } fip.close();获取当前路径:String tempPathString = this.getClass().getClassLoader().getResource("//").getPath();properties类读取配置文件:properties.getProperty(key)); 读取键值对

6.string的replace()方法, tempPathString = tempPathString.replaceAll("bin", "Config");7.创建线程是消耗时间的,大概2毫秒,2millsecond。执行任何一个方法也要消耗时间的。long beginTime = System.currentTimeMillis(); System.out.println("begin:"+beginTime); int i = 0; while(i<100) { i++; System.out.println(i); }// MyThread3 myThread3 = new MyThread3();// myThread3.start(); System.out.println("end,UseTime:"+(System.currentTimeMillis()-beginTime));

8.最近在工作上用到了一个静态方法,跟同事交流的时候,被一个问题给问倒了,只怪基础不扎实...

问题大致是这样的,“在多线程环境下,静态方法中的局部变量会不会被其它线程给污染掉?”;

我当时的想法:方法中的局部变量在运行的时候,是存在JAVA栈中的,方法运行结束,局部变量也就都弹光了,理论上单线程的话是不会有问题的,我之所以不知道,是因为不 清楚在JAVA内存模型中,一个线程对应一个栈,还是多个线程共享一个栈...

其实如果知道每个线程都有一个自己的JAVA栈的话,问题也就很清楚了,不会被其它线程给污染掉;

当然,问题并不能止于此,这个问题已经暴露出自己对这方面比较薄弱,因此打算对JAVA内存模型和多线程并发问题做个小小总结;JAVA栈:每个线程都有一个自己的JAVA栈;存放的一般是方法的局部变量,方法出口信息等;方法调用过程中,自动压栈出栈;ps:栈空间大小是有限制的;http://www.cnblogs.com/chenpi/p/5159558.html

9.文件输入输出的几个问题,深入理解:bufferoutputstream输出内容时,buffer byte【】数组问题,我们都知道用buffer的输入输出时,是先把内容缓存到byte【】字节数组里,然后一并输出。这时,如果byte[]数组设置的过大,会导致将byte【】输出到另一个文件时,另一个文件盒byte【】数组一样大。因为多余的内容被空字符填充了。FileInputStream fips = new FileInputStream(sourcePath); BufferedInputStream bfips = new BufferedInputStream(fips); byte[] byteArray = new byte[1024*30]; FileOutputStream fops = new FileOutputStream(destPath); BufferedOutputStream bfops = new BufferedOutputStream(fops); int bufferCount = 0; while(-1 != bfips.read(byteArray)) { bufferCount++; System.out.println("execute buffercount:"+bufferCount); bfops.write(byteArray); }

10.如果文件不存在,创建新文件if(!destFile.exists()) { System.out.println("dest file not exist"); destFile.createNewFile(); }

转载于:https://www.cnblogs.com/panxuejun/p/6371344.html


最新回复(0)