String类、Date、IO流的综合练习

目录

一、String类

1、概述

2、为什么SUN公司把字符串存储在一个“字符串常量池”当中呢?

二、Date类

1、Date的使用

1.1日期进行格式化:

1.2成员方法:

1.3构造方法:

三、IO流

1、简介:

1.1流的定义

1.2按流向分类

1.3按处理数据单元划分:


一、String类

1、概述

1.1String表示字符串类型,属于 引用

数据类型,不属于基本数据类型。

1.2在java中随便使用 双引号括起来 的都是String对象。

例如:“abc”,“def”,“hello world!”,这是3个String对象。

1.3java中规定,双引号括起来的字符串,是 不可变 的,也就是说"abc"自出生到最终死亡,不可变,不能变成"abcd",也不能变成"ab"

1.4在JDK当中双引号括起来的字符串,例如:“abc” "def"都是直接存储在“方法区”的“字符串常量池”当中的。

2、为什么SUN公司把字符串存储在一个“字符串常量池”当中呢?

因为字符串在实际的开发中使用太频繁。为了执行效率,所以把字符串放到了方法区的字符串常量池当中。

例:
 

 
public class StringTest01 {
 
    public static void main(String[] args) {
 
        // 这两行代码表示底层创建了3个字符串对象,都在字符串常量池当中。
 
        String s1 = "abcdef";
 
        String s2 = "abcdef" + "xy";
 
 
 
        // 分析:这是使用new的方式创建的字符串对象。这个代码中的"xy"是从哪里来的?
 
        // 凡是双引号括起来的都在字符串常量池中有一份。
 
        // new对象的时候一定在堆内存当中开辟空间。
 
        String s3 = new String("xy");
 
    }
 
}

注意:

字符串对象之间的比较不能使用“== ”,"=="不保险。应该调用String类equals方法。

String k = new String("testString");
 
//String k = null;
 
// "testString"这个字符串可以后面加"."呢?
 
// 因为"testString"是一个String字符串对象。只要是对象都能调用方法。
 
System.out.println("testString".equals(k)); // 建议使用这种方式,因为这个可以避免空指针异常。
 
System.out.println(k.equals("testString")); // 存在空指针异常的风险。不建议这样写。

二、Date类

1、Date的使用

1.1日期进行格式化:

DateFormat是一个抽象类继承了Format类 对日期/时间进行格式化
格式化(也就是日期–>文本)、解析 (文本 -->日期)

1.2成员方法:

String format(Date date)    按照指定的模式,把Date日期,格式化符合模式的字符串
Date parse(String source)     把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类

1.3构造方法:

用给定的模式和默认语言环境的日期格式符合构造 SimpleDateFormat

三、IO流

1、简介:

1.1流的定义

指一连串流动的字符,是以先进先出方式发送信息的通道。

1.2按流向分类

输出流:OutputStream和Writer为基类

输入流:InputStream和Reader为基类

1.3按处理数据单元划分:

字节流:字节输入流:InputStream基类

               字节输出流:OutputStream基类

               字符流:字符输入流:Reader基类

               字节输出流:Writer基类

(字节流是 8 位通用字节流,字符流是16位Unicode字符流)

package Test;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

public class zongheanli {
    public static void main(String[] args) throws IOException, ParseException {
        //1.定义File对象,关联硬盘文件
        File f1=new File("D:/a.txt");
        //2.定义缓冲字符流
        FileReader fr = new FileReader(f1);
        BufferedReader br =new BufferedReader(fr);
        //3.对文档进行读取,每次读取一行数据
        ArrayList<Student> list =new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

        String temp;
        while (true){
            temp=br.readLine();
            if (temp!=null){
                //
                String[] split = temp.split("-");
                //
                //
                Student student=new Student();
                student.setName(split[0])  ;
                student.setSex(split[1]);
                student.setBirthday(sdf.parse(split[2]));
                student.setAddress(split[3]);
                list.add(student);
            }else {
                break;
            }

        }

        System.out.println(list);

    }

}

猜你喜欢

转载自blog.csdn.net/WJY898989/article/details/128334234