IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> java泛型和IO -> 正文阅读

[游戏开发]java泛型和IO

泛型的出现避免了因为类型不同进行强制类型转换报错的情况
通常有:【泛型类】、【泛型接口】、【泛型方法】
泛型标记符:E、T、K、V、N、?


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * java 中泛型标记符:
 * <p>
 * E - Element (在集合中使用,因为集合中存放的是元素)
 * T - Type(Java 类)
 * K - Key(键)
 * V - Value(值)
 * N - Number(数值类型)
 * ? - 表示不确定的 java 类型
 */
public class TestT<T> {

    private final T data;

    //get
    public T getData() {
        return data;
    }

    //构造
    public TestT(T data) {
        this.data = data;
    }

    // 泛型方法 printArray[E - Element (在集合中使用,因为集合中存放的是元素)]
    public static <E> void printArray(E[] inputArray) {
        // 输出数组元素
        for (E element : inputArray) {
            System.out.printf("%s ", element);
        }
        System.out.println();
    }

    // 比较三个值并返回最大值[T - Type(Java 类)]
    public static <T extends Comparable<T>> T maximum(T x, T y, T z) {
        // 假设x是初始最大值
        T max = x;
        // 将max和y进行比较,如果是字符串就挨个字符,比较是负的就是max大,返回是正的y就更大
        if (y.compareTo(max) > 0) {
            //y 更大
            max = y;
        }
        if (z.compareTo(max) > 0) {
            // 现在 z 更大
            max = z;
        }
        // 返回最大对象
        return max;
    }


    // N - Number(数值类型)
    public static void getNumber(Number data) {
        System.out.println("Number : " + data);
    }


    // ? - 表示不确定的 java 类型
    public static void getData(List<?> data) {
        System.out.println("getData :" + data.get(0) + "\n");
    }

    // ? - 表示不确定的 java 类型 + N - Number(数值类型)
    public static void getUpNumber(List<? extends Number> data) {
        System.out.println("getUpNumber :" + data.get(0) + "\n");
    }


    public static void main(String args[]) {
        // 创建不同类型数组: Integer, Double 和 Character
        Integer[] intArray = {1, 2, 3, 4, 5};
        Double[] doubleArray = {1.1, 2.2, 3.3, 4.4};
        Character[] CharacterArray = {'H', 'E', 'L', 'L', 'O'};
        String[] stringArray = {"test", "element", "super", "title"};
        System.out.println("整型数组元素为:");
        // 传递一个整型数组
        printArray(intArray);

        System.out.println("\n双精度型数组元素为:");
        // 传递一个双精度型数组
        printArray(doubleArray);

        System.out.println("\n字符型数组元素为:");
        // 传递一个字符型数组
        printArray(CharacterArray);

        System.out.println("\n字符型数组元素为:");
        // 传递一个字符串数组
        printArray(stringArray);

        System.out.println("\n======================================\n");

        System.out.printf("%d, %d 和 %d 中最大的数为 %d\n\n", 3, 4, 5, maximum(3, 4, 5));
        System.out.printf("%.1f, %.1f 和 %.1f 中最大的数为 %.1f\n\n", 6.6, 8.8, 7.7, maximum(6.6, 8.8, 7.7));
        System.out.printf("%s, %s 和 %s 中最大的数为 %s\n", "pear", "apple", "orange", maximum("pear", "apple", "orange"));

        System.out.println("\n======================================\n");

        Integer data = 100;
        getNumber(data);

        System.out.println("\n======================================\n");

        List<String> name = new ArrayList<>();
        List<Integer> age = new ArrayList<>();
        List<Number> number = new ArrayList<>();

        name.add("test");
        age.add(18);
        number.add(365);

        getData(name);
        getData(age);
        getData(number);

        getUpNumber(age);
        getUpNumber(number);

        System.out.println("\n======================================\n");

        TestT<Integer> integerTestT = new TestT<>(1);
        System.out.println(integerTestT.getData());

        TestT<String> stringTestT = new TestT<>("test-string");
        System.out.println(stringTestT.getData());

        TestT<List<String>> listTestT = new TestT<>(Arrays.asList("test", "list"));
        System.out.println(listTestT.getData());
    }
}

java的io(字节流、字符流)

不同的编码格式占字节数是不同的,UTF-8编码中一个中文所占字节也是不确定的,可能是2个、3个、4个字节;
编码格式:UTF-8、GBK、ASCII 码、UTF-16、GB18030、ISO-8859-1、GB2312等等
idea中的编码格式:通常使用UTF-8
在这里插入图片描述


import java.io.*;
import java.nio.charset.StandardCharsets;

public class TestIO {

    /**
     * 字节流:程序直接操作文件
     * 字符流:程序先把数据缓存再写入文件
     *
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        //文件字节流输出流
        OutputStream os = new FileOutputStream("test.txt");
        //将字节流转成字符流(OutputStreamWriter是字节流到字符流的连接桥梁)可以设置格式utf-8
        //因为字节流是单个字节获取,不同的字符字节不同,那就需要把字节转成字符,还要设置编码格式,
        //字符流读取文件默认是gbk格式,然后再把字符写入文件
        OutputStreamWriter writer = new OutputStreamWriter(os, StandardCharsets.UTF_8);
        //append可以放入CharSequence(String、StringBuilder、StringBuffer)写入文件
        writer.append("中文输入:");
        writer.append("\n");
        writer.append("English:");
        //关闭写入流
        writer.close();
        //关闭输出流
        os.close();

        //文件字节输入流
        InputStream is = new FileInputStream("test.txt");
        //字节流到字符流
        InputStreamReader reader = new InputStreamReader(is, StandardCharsets.UTF_8);
        StringBuilder stringBuilder = new StringBuilder();
        while (reader.ready()) {
            stringBuilder.append((char) reader.read());
        }
        System.out.println(stringBuilder);
        reader.close();
        is.close();
    }
}

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:54:10  更:2022-03-24 00:54:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 3:49:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码