Java学习-string与stringbuffer总结

一.Java创建文件,文件是否已经存在?

         java 的如果文件夹路径不存在,先创建;如果文件名 的文件不存在,先创建再读写;存在的话直接追加写

if ( !myPath.exists()){//若此目录不存在,则创建之  
      myPath.mkdir();  
      System.out.println("创建文件夹路径为:"+ filePar);  
 } 

import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.io.RandomAccessFile;  
  
  
public class AllTest {  

     public static void main(String args[])  
     {  
            StringBuffer fileBuf=new StringBuffer();  
            String filePar = "d:\\test";// 文件夹路径  
            File myPath = new File( filePar );  
            if ( !myPath.exists()){//若此目录不存在,则创建之  
                myPath.mkdir();  
                System.out.println("创建文件夹路径为:"+ filePar);  
            }  
            // 文件夹路径存在的情况下  
            String filename = "test.txt";// 文件名  
            try {  
                FileWriter fw = new FileWriter(filePar + "\\" + filename,true);// filePar + "\\" + filename,true  
                // FileWriter 就是牛,如果文件名 的文件不存在,先创建再读写;存在的话直接追加写,关键字true表示追加  
                String originalLine = "aaaaaaaaaa" + "\n";//   
                System.out.println("*** "+ originalLine);  
                fw.write(originalLine);  
                // 关闭写文件,每次仅仅写一行数据,因为一个读文件中仅仅一个唯一的od  
                fw.close();  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
      }  
}  

二.bufferedwriter的flush()  

        问题:在控制台可以打印信息,但是写不进txt文本

        原因:没有及时 flush() ,BufferedWriter是缓冲输入流,意思是调用BufferedWriter的write方法时候。数据是先写入到缓冲区里,并没有直接写入到目的文件里。必须调用BufferedWriter的flush()方法。这个方法会刷新一下该缓冲流,也就是会把数据写入到目的文件里。或者你可以调用BufferedWriter的close()方法,该方法会在关闭该输入流之前先刷新一下该缓冲流。也会把数据写入到目的文件里。

三.string与stringbuffer互相转换 

StringBuffer转为String:

1. StringBuffer类自动重写publicString toString(),返回的是string类型;

    例:String str2 = buffer3.toString();

2. 通过string类的构造方法:publicString(StringBuffer buffer)

例:StringBuffer  buffer3 = newStringBuffer();

String s= new String(buffer3);

String转为StringBuffer:

1. 构造方法。publicStringBuffer(String str)

例:StringBuffersb1 = newStringBuffer("abc");

2. append方法。public StringBuffer append(String str)

    例:StringBuffer  buffer3 = newStringBuffer();

        String str = new “java”;

buffer3.append(str);

四.String类型变量的赋值

2.1 String变量赋值方式:s2=new String(s1)

下面这段代码的运行结果是什么

package com.soft;
public class ExecutorsDemo {

    public static void main(String[] args) {
        String s1="abc"+"def";
        String s2=new String(s1);
        if(s1.equals(s2))
            System.out.println("equals succeeded");
        if(s1==s2)
            System.out.println("==succeeded");
    }
}

结果equals succeeded

解说:上述代码中,s1与s2指向不同的对象,但是两个对象的内容却是一样的,故“s1==s2”为假,s1.equals(s2)为真。

此处我们来细说一下”==”与equals的作用:

  (1)”==”操作符的作用

    A、用于基本数据类型的比较

    B、判断引用是否指向堆内存的同一块地址

  (2)equals的作用

    用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型

2.2 String变量赋值方式:s2 = s1

package com.soft;
public class ExecutorsDemo {

    public static void main(String[] args) {
        String s1 = new String("java");
        String s2 = s1;

        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
    }
}

结果

true

true

解说:如果理解了前面那个例子的运行情况,那么这个就是一目了然的事情,此处s1与s2指向同一个对象,”==”操作符的作用之一就是判断引用是否指向堆内存的同一块地址,equals的作用是判断两个变量是否是对同一个对象的引用(即堆中的内容是否相同),故此处均输出“true”

参考:

 https://www.cnblogs.com/jpfss/p/8868208.html

https://blog.csdn.net/u014221266/article/details/41721365

https://blog.csdn.net/QYHuiiQ/article/details/80114388

https://blog.csdn.net/Jungle_hello/article/details/72851773

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值