ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-08-18 11:02:13  阅读:138  来源: 互联网

标签: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
来源: https://www.cnblogs.com/lyl890/p/16597510.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有