zoukankan      html  css  js  c++  java
  • 2017.2.6

    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();
    }

  • 相关阅读:
    洛谷 1339 最短路
    洛谷 1330 封锁阳光大学 图论 二分图染色
    洛谷 1262 间谍网络 Tarjan 图论
    洛谷 1373 dp 小a和uim之大逃离 良心题解
    洛谷 1972 莫队
    洛谷 2158 数论 打表 欧拉函数
    洛谷 1414 数论 分解因数 水题
    蒟蒻的省选复习(不如说是noip普及组复习)————连载中
    关于筛法
    关于整数划分的几类问题
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6371344.html
Copyright © 2011-2022 走看看