首页 > 编程语言 >每日一讲:Java 中有几种类型的流等

每日一讲:Java 中有几种类型的流等

时间:2022-08-18 10:55:18浏览次数:42  
标签:Java name person 对象 几种 一讲 Person eat String

 

 

 

1. Java 中有几种类型的流

流是什么? 答:一组有序的数据序列称为流

 

计算机中的文件有最小组成单元,如字节,字符

在java传输文件中需要将源文件拆分成小的组成单元,经过java程序再将源文件传输到目标文件而传输的过程就是这些最小单元的流动,流动的最小单元就构成了流。

 

 

那么流的类型有哪几种呢

Io流

按数据流的流向分为输入流和输出流

按处理数据单元分为字节流和字符流

 

 

2如何实现对象的深度克隆

什么是基本数据类型和引用数据类型

基本数据类型:数据直接存储到栈中(byte,short,char,int,long,float,double,boolean)

引用数据类型:存储在栈中的是对象的引用,对象的数据存在堆中(类,接口,数组)

浅克隆对于引用类型只复制了对象的引用地址,新旧对象指向同一个内存地址,修改其中一个对象,另一个对象的值随之改变

 

深度克隆对引用数据类型是开辟新的内存空间,在新的内存空间里复制一个同样的对象,新老对象不会共享同一内存,修改其中一个对象的值不会影响另一个对象

代码演示:

class Person implements Cloneable {

    String name;
    String[] eat;

    public Person(String name,String[] eat) {
        this.name = name;
        this.eat = eat;
    }

    @Override
    protected Object clone() {
        Person person = null;
        try {
            person = (Person) super.clone();
            person.eat = eat.clone();//深度克隆
            return person;
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", eat=" + Arrays.toString(eat) +
                '}';
    }
}

public class Test1 {
    public static void main(String[] args) {
        String[] eat= { "西瓜", "菠萝" };
        Person person = new Person("张三",eat);
        Person person1 = (Person) person.clone();
        person1.name = "李四";
        person1.eat[0]="黄桃";

        System.out.println(person);
        System.out.println(person1);

        //深度克隆
        // Person{name='张三', eat=[西瓜, 菠萝]}
        //Person{name='李四', eat=[黄桃, 菠萝]}
        //浅度克隆
       // Person{name='张三', eat=[黄桃, 菠萝]}
        //Person{name='李四', eat=[黄桃, 菠萝]}

    }
}

  

 

3.List 的三个子类(ArrayList,LinkedList,Vector)的特点

 

ArrayList底层是用数组实现的存储。 特点是:数组的访问效率高,但是增删效率低,并且线程不安全。

LinkedList底层用双向链表实现的存储。特点:查询效率低,但是增删效率高,线程不安全。

Vector也叫“向量”,底层实现跟ArrayList类似,但是其主要方法加了同步检测,所以它是线程安全的,但是也导致其性能不如ArrayList。

标签:Java,name,person,对象,几种,一讲,Person,eat,String
From: https://www.cnblogs.com/lyl890/p/16597510.html

相关文章

  • SQL Server遍历表的几种方法
    在数据库开发过程中,我们经常会碰到要遍历数据表的情形,一提到遍历表,我们第一印象可能就想到使用游标,使用游标虽然直观易懂,但是它不符合面向集合操作的原则,而且性能也比面向......
  • java项目打包部署后文件路径修改
    https://www.jb51.net/article/215619.htm 在本地项目读取文件时this.getClass().getClassLoader().getResource("").getPath()+fileNamethis.getClass().getResource(......
  • Java01-数据类型
    注释单行注释://多行注释:/*注释*/文档注释:/**注释*/:有含义的标识符Java所有的组成部分都需要名字:类名、变量名以及方法名都被成为标识符标......
  • Java面试知识点总结(三)
    Java并发编程一、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"......
  • java格式化输出
    1.d格式:%d:按整型数据的实际长度输出。%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。%ld:输出长整型数据。2.o格式:以无符......
  • java后台生成文件给前端下载(response输出流)
    1、设置ContentTyperesponse.setContentType("application/x-download");2、设置文件名,并指定编码格式fileName=URLEncoder.encode("浏览器要显示的文件名","UTF......
  • 02.JavaScript学习笔记1
    JavaScript学习笔记1.强制类型转换当使用加号进行运算时,会将数字强制转换为字符串,然后再进行运算。constyear='1991';console.log(year+18);console.log(typeo......
  • 讲一讲加密数据如何进行模糊查询
    在上一篇讲一讲数据安全,如何有效预防脱库中我们提到了加密后的数据对模糊查询不是很友好,本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路。为了数据安全我们......
  • Day5(复习:java数组)
    Java数组数组的定义数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成每个数组元素通过下标来访问 数组声明......
  • 关于Java数据结构转储(本文适合初学者)
    有时候想往mysql或者redis数据库存点数据结构。尤其是redis,尽量把大块数据打包存起来,减少set和get数据次数。再说远点,对分布式数据同步也是有很大的好处。下面简单介......