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

  • 相关阅读:
    我回来了
    wget 官方jdk
    linux rpm命令安装卸载 初步使用
    关于一些对location认识的误区(转)
    直接插入排序
    冒泡排序
    Wireshark下TCP三次握手四次挥手
    linux内存使用率详解
    Linux下硬盘使用率详解及shell脚本实现
    Linux下CPU使用率详解
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6371344.html
Copyright © 2011-2022 走看看