java02

泛型

泛型:编译时检查类型是不是正确,减少类型转换造成的错误。

           代码复用性提升。 

1.泛型类

T是类型形参,创建对象时传入类型实参。

如果不指定类型,按照object类型处理。不支持基本数据类型。

class Student<T>{

private T age;

}

2.泛型类的子类

如果泛型类的子类也是泛型类,子类的泛型标志必须包含父类的标志。

例如 父类:Class Parent<T>{},子类:class Child<T,K> extends Parent<T>{}

如果泛型类的子类不是泛型类,子类要明确父类的泛型类型

例如:父类:Class Parent<T>{},子类:class Child extends Parent<String>{}

3.泛型接口

实现类不是泛型类,接口要明确数据类型。

例如:接口:Interface Imp<T> 实现:class Appl implements Imp<String>

实现类是泛型类,实现类包含接口的泛型。

例如:接口:Interface Imp<T> 实现:class Appl<K,T> implements Imp<T>

4.泛型方法

注意格式:public <T,K,V>  T test(K k,V v){}和泛型类的成员方法不同的是有泛型列表。

泛型类的成员方法不能是静态方法,泛型方法可以是静态方法。(static修饰)

5.泛型通配符"?"

为什么要有泛型通配符

根据多态,传递的参数是类型的子类也可以,但是在泛型中不遵守继承。

如果指定泛型是object?由于泛型不支持继承多态

这时候就需要使用泛型通配符?表示可以传递任何类型。

泛型通配符的下界 : ?super 实参类型

泛型通配符的上界 : ? extend 实参类型

6.泛型编译的类型擦除

反射使用泛型,省去类型转换。

io流

流使用完要调用close方法关闭资源

File类

new File(String 路径)

exists()判断文件是否存在 isFile()是不是文件对象,isDirectory()是不是文件夹

getName()获取文件名 length()获取文件长度 lastModified()最后修改的时间

getPath()获取路径 getAbsolutePath绝对路径

mkdir()创建文件,只能创建一级文件 mkdirs()创建文件夹 delete()删除文件

遍历:list()获取子文件名 listFileds()获取子文件对象

 字节流

输入流读取文件

new FileInputStream()输入流构造器,可以传递文件对象,也可以传递路径作为参数。

read()读取一个字节,返回读到的数据,当没有的时候返回-1

read(byte[])读取数组大小的字节,类似一个桶,返回每次读的长度。没有了返回-1.

存在覆盖问题。

public class Input {
    public static void main(String[] args) throws IOException {
         InputStream is1=new FileInputStream("D:\\javacode2\\工作区2\\learnSF\\src\\main\\java\\test.txt");
        InputStream is2 = new FileInputStream(new File("D:\\javacode2\\工作区2\\learnSF\\src\\main\\java\\test.txt"));
        int read1=0;
       while (read1!=-1){
           read1=is1.read();
           if(read1==-1){
               break;
           }
            System.out.print((char) read1);
       }
        System.out.println();
        System.out.println("==================");
        byte[] buffer=new byte[3];
        int len2=0;
       while (len2!=-1)
        {  len2= is2.read(buffer);
        if(len2==-1){
            break;
        }
            String s= new String(buffer,0,len2);
            System.out.print(s);
        }
        is1.close();
        is2.close();
//        ReadAllStream  jdk9之后才有
    }
}

一下子把文件内容全读出来:readallstream方法,内部实现就是创建一个足够大的byte数组当桶。如果目标文件过大,同样也会报错。

字符流

package IOStream;


import java.io.*;

public class Filerw {
    public static void main(String[] args) throws IOException {
        //字节输入流
        Reader is=new FileReader("D:\\javacode2\\工作区2\\learnSF\\src\\main\\java\\test2");
        Reader is2=new FileReader("D:\\javacode2\\工作区2\\learnSF\\src\\main\\java\\test2");
        //read()一个一个字符读  read(char[]) 一桶一桶读
        int a;
        while ((a=is.read())!=-1){
            System.out.print((char) a);
        }
      ///
        char [] b=new char[3];
        int len;
        while ((len=is2.read(b))!=-1){
            System.out.print(new String(b,0,len));
        }
        is.close();
        is2.close();
        //字节输出流,要关闭流。因为java是写到内存的缓冲器,如果不关闭就不会将缓冲器的内容写到硬盘
        Writer w1=new FileWriter("D:\\javacode2\\工作区2\\learnSF\\src\\main\\java\\hhh1.txt");
        //以追加的形式写
        Writer w2=new FileWriter("D:\\javacode2\\工作区2\\learnSF\\src\\main\\java\\hhh1.txt",true);
        //write(int) write(String) write(String,off,len) write(char[]) write(char[],off,len)
        w1.write("nihhhh");
        w1.write("\r\n");
       char[] c={'n','h','f','g','f','胡','金'};
        w2.write(c);
        //一定要关闭流
        w1.close();
        w2.close();
    }
}

缓冲流

包装基本的字符、字节输入输出流

原来是将内存的数据直接写到硬盘中,多次系统调用,性能不好,现在在内存中增加了缓冲池,8KB,缓存池满了再和硬盘交互,减少系统调用,性能更好。

//    BufferedInputStream  包装fileinputstream 需要fileinputstream 做构造器参数
//    BufferedOutputStream 包装fileoutputstream 需要fileoutputstream 做构造器参数
//    BufferedWriter       包装filewrite 需要filewrite做构造器参数。
 换行方法:对象.newLine()
//    BufferedReader       包装fileread 需要fileread做构造器参数

转换流

utf-8每个汉字三个字节,GBK每个汉字两个字节

如果代码编码和读取文件编码不同,会乱码。

转换流的构造器需要字节流或者字节流的子类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/628894.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java的response返回Json格式

问题 今天开发过程中&#xff0c;写了个拦截器&#xff0c;对于所以请求进行一个token的工作&#xff0c;对于不合标准的token返回错误&#xff0c;在网上找了个拦截器进行二次开发。 package com.maizhiyu.yzt.handle;import org.springframework.beans.factory.annotation.…

基于YOLOv5的道路裂缝检测,加入一种基于内容引导注意力(CGA)的混合融合提升2个多点

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍道路裂缝检测整个过程&#xff0c;从数据集到训练模型到结果可视化分析。 &#x1f4a1;&#x1f4a1;&#x1f4a1;通过加入一种基于内容引导注意力(CGA)的混合融合提升检测性能&#xff0c; 特征融合创新 | 一…

数据结构~~带环链表的环开始的节点位置**两种方法

1.带环链表环开始的位置 &#xff08;1&#xff09;上面的这个测试用例使用的是包含了4个节点的带环链表&#xff0c;我们要找的就是链表里面的环开始的节点的位置&#xff0c;拿这个测试用例而言&#xff0c;就是2这个节点&#xff0c;从这个节点开始&#xff0c;我们的链表就…

Python代码:二、多行输出

1、题目 将字符串 Hello World! 存储到变量str1中&#xff0c;再将字符串 Hello Nowcoder! 存储到变量str2中&#xff0c;再使用print语句将其打印出来&#xff08;一行一个变量&#xff09;。 2、代码 import sys str1 Hello World! str2 Hello Nowcoder! print (str1,st…

uniapp小程序使用scroll-view组件实现上下左右滚动触发事件

在做uniapp开发小程序的时候&#xff0c;有一个需求是在一个表格区域里面可以上下左右滑动元素&#xff0c;并实现表头和左侧的标签联动效果&#xff0c;就想趣运动里面选择场地的效果一样&#xff0c;这里就用到了scroll-view组件&#xff0c;scroll-view官网文档地址&#xf…

你写HTML的时候,会注重语义化吗?

其实说到语义化&#xff0c;多年前端开发经验的老手估计也不会太在意&#xff0c;有时候工期太紧&#xff0c;有时候自己疏忽&#xff0c;也就不那么在意了&#xff0c;直接DIVCSS一把梭下去了。 目录 什么是HTML 什么是HTML语义化 HTML语义化所带来的好处 我把CSS样式引入…

手机怎么制作搞笑gif?来看看这一个方法

动态图片是现在网络中很流行的一种图片格式&#xff0c;可以把多个jpg、png格式静图变成一张gif格式的动图。在各大社交媒体中非常的受欢迎&#xff0c;用简单快速的方法传递信息。当我们想要通过手机制作gif动画的时候&#xff0c;要如何操作呢&#xff1f;这时候&#xff0c;…

长沙学院数学学院领导赴泰迪智能科技开展”访企拓岗“调研活动

5月13日&#xff0c;长沙学院数学学院党总支书记谭义红&#xff0c;副书记周新华&#xff0c;辅导员王思永莅临广东泰迪智能科技股份有限公司产交融合实训基地就深入“访企拓岗”、强化校企合作促进毕业生充分就业、创新人才培养范式等领域进行了深入交流。泰迪智能科技董事长张…

Linux系统 -目录结构与配网

目录的特点 Windows中有C盘、D盘等&#xff0c;每个都是一个根系统是个多根系统 Linux中只有一个根是个单根系统 Linux-目录存储的内容 1、/root&#xff1a;管理员的家目录 2、/home&#xff1a;存储普通用户家目录的目录/3、/tmp&#xff1a;临时目录&#xff0c;这个目录存储…

使用VMware或VirtualBox安装eNSP Pro并使用CRT连接设备

文章目录 使用Oracle Virtual Box安装eNSP Pro创建虚拟机配置网卡配置带外管理网络 使用VMware Workstation安装eNSP Pro转换文件格式及虚拟磁盘模式配置网卡创建虚拟机配置使用CRT连接管理设备 前一段时间是开放了eNSP Pro的账号权限&#xff0c;但是在写博客时&#xff0c;权…

react18【系列实用教程】memo —— 缓存组件 (2024最新版)

memo 的语法 如上图所示&#xff0c;在react中&#xff0c;当父组件重新渲染时&#xff0c;子组件也会重新渲染&#xff0c;即便子组件无任何变化&#xff0c;通过 memo 可以实现对组件的缓存&#xff0c;即当子组件无变化时&#xff0c;不再重新渲染子组件&#xff0c;核心代码…

怎么获取提取二维码链接?点击链接访问内容的方法

随着现在二维码应用的场景越来越多&#xff0c;很多的产品或者场所都会有相对应的二维码来提供信息展示&#xff0c;那么当遇到无法通过扫码获取内容的情况时&#xff0c;有什么其他方法可以访问二维码的内容呢&#xff1f;下面就让小编来分享一下二维码解码功能的使用方法&…

windows部署腾讯tmagic-editor02-Runtime

创建editor项目 将上一教程中的hello-world复制过来&#xff0c;改名hello-editor 创建runtime项目 和hello-editor同级 pnpm create vite删除src/components/HelloWorld.vue 按钮需要用的ts types依赖 pnpm add tmagic/schema tmagic/stage实现runtime 将hello-editor中…

PCIE协议-2-事务层规范-Transaction Ordering

2.4.1 事务排序规则 表2-40定义了PCI Express事务的排序要求。此表中定义的规则适用于PCI Express上的所有事务类型&#xff0c;包括内存、I/O、配置和消息事务。在单个流量类别&#xff08;Traffic Class&#xff0c;TC&#xff09;内&#xff0c;这些排序规则适用。不同TC标…

5个不同类型的AI问答机器人你都用过吗?

在科技发达的今天&#xff0c;AI问答机器人已经深入我们的日常生活&#xff0c;各式各样的机器人应用在生活的方方面面。本文给大家推荐5个不同类型的AI问答机器人&#xff0c;看看你都用过哪些&#xff0c;或者有没有兴趣尝试一下呢&#xff1f; 1.高效知识库型&#xff1a;He…

论文解读:Matching Feature Sets for Few-Shot Image Classification

文章汇总 动机 将表示分解为独立的组件应该允许捕获图像的几个不同方面&#xff0c;然后可以有效地使用这些方面来表示新类别的图像。 解决办法 从卷积主干连接多尺度特征映射。在网络中以各种尺度嵌入浅层自关注模块(称为“映射器”)。 流程解读 (a)图中右边的灰色小正方…

C++ LeetCode 刷题经验、技巧及踩坑记录【三】

C LeetCode 刷题经验、技巧及踩坑记录【三】 前言vector 计数vector 逆序vector 删除首位元素vector二维数组排序vector二维数组初始化C 不同进制输出C 位运算C lower_bound()C pairC stack 和 queue 前言 记录一些小技巧以及平时不熟悉的知识。 vector 计数 计数 //记录与首…

面 试 题

过滤器和拦截器的区别 都是 Aop 思想的一种体现&#xff0c;用来解决项目中 某一类 问题的两种接口(工具)&#xff0c;都可以对请求做一些增强 出身 过滤器来自 servlet 拦截器来自 spring 使用范围 过滤器 Filter 实现了 iavax.servlet.Filter 接口&#xff0c;也就是说…

【三家飞机制造商】

1.Boeing 波音 F-15战机 B-52轰炸机 阿帕奇攻击直升机 E-3 2 .Lockheed Martin 洛克希德马丁 F35 F22 F16 F117 C130 U2 3 Raytheon 雷神