首页
友链
留言
统计
Search
1
NPS内网穿透服务
270 阅读
2
langchain4j ChatLanguageModel(一)
217 阅读
3
今日推软——code FA
169 阅读
4
本服务用于为你的某东每天自动获取豆豆
153 阅读
5
儿童节就要到了,大家有什么想说的麽
142 阅读
小日常
langchain4j
登录
/
注册
Search
标签搜索
langchain4j
java
数据结构
js
功能提供
小宇
累计撰写
24
篇文章
累计收到
177
条评论
首页
栏目
小日常
langchain4j
页面
友链
留言
统计
搜索到
13
篇与
的结果
2023-03-28
2、数据结构(逻辑结构、物理结构)、数据类型
数据结构:相互之间存在一种或多种特定关系的数据元素的集合逻辑结构物理结构用来表示、表达用来告诉计算机怎么存放(按自己的理解写的)(补一下结构)结构上面说了,数据元素之间存在一种或多种特定关系,我们把这种关系,称为结构。逻辑结构举个栗子集合结构(同属于一个集合)线性结构(一对一)树形结构(一对多)图形结构(多对多)物理结构说明优缺点顺序存储结构按顺序存储,先开辟一段连续的空间,然后按照大小分位置(因为相同类型,所以每个位置大小一样),第一个数据放第一个位置、第二个放第二个、以此类推。提醒一下,数组别越界好找(找的时间短即时间复杂度为O(1),也就是所需时间短),事实上总会涉及到插入和删除等操作、此时时间复杂度即为O(n)甚至更大,也就是所需时间长链式存储结构 随便存(地址随便但依旧有号/顺序)(一个头节点(没有数据、只是储存了第一个数据元素的地址))如图插入、删除操作快了、不好找了(想要找到第6个需要先找到第5个,但找到第5个的前提是找到第4个,嗯麻烦、慢时间复杂度O(n))数据类型是一组性质相同的值的集合及定义在此集合上的一些操作的总称(不太理解定义,不影响了解一下下面的)八大基本数据类型 整数类型:byte、short、int、long 小数类型:float、double 字符类型:char 布尔类型:boolean 1、 整数数据类型 byte:1个字节,8位,256种状态,取值范围为【-128,127】 short:2个字节,16位,65536种状态,取值范围为【-32768,32767】 int:4个字节,32位,整数类型默认是int类型,取值范围约21亿【-2,147,483,648~2,147,483,647之间)】 long:8个字节,64位,long类型表示long类型常量,要加L或者l 2、 小数数据类型 float:4个字节,32位,单精度,能精确到6~7位,声明一个小数类型,要加F或者f double:8个字节,64位,双精度,能精确到15~16位,小数类型默认是double类型 3、 字符数据类型 char:2个字节,16位,字符表示Unicode编码表中的每一个符号,每个符号使用单引号引起来,其中前128个符号和ASCII表相同 4、 布尔数据类型 boolean:占1位,有true和false2个值,一个表示真,一个表示假,一般用于表示逻辑运算抽象数据类型一个数学模型及定义在该模型上的一组操作抽象 抽出问题的特征、忽略细节一个小栗子:3维坐标中的点,Point x,y,z;描述抽象数据类型的标准格式:(不了解?没事,我也没见过)ADT抽象数据类型名 DATA 数据元素之间逻辑关系的定义 OPeration 操作1 初始条件 操作结果描述 操作2 ····· 操作n ····· endADT
2023年03月28日
24 阅读
0 评论
0 点赞
2023-03-26
数据,数据元素 数据项,数据对象
什么是数据、数据元素、数据项、数据对象注:看不到图片请进行科学上网在《大话数据结构》中,他是这样总结的详细说数据:是描述客观事物的符号,是能被计算机识别并输入给计算机处理的符号集合,是计算机中可以操作的对象。数据元素:组成数据的、有一定意义的基本单位(人类中,人就是数据元素)数据项:一个数据元素由若干个数据项组成(人这个数据元素,眼睛、鼻子、嘴、手、脚这些数据项)。数据对象:性质相同的数据元素的集合更直观的说(一下来源于互联网结合自己的理解更改)姓名性别年龄小宇男20小白女19小玉女18课程号课程名学分Z22061010数据结构3.5Z220610105数据库原理及应用3.5Z220610107计算机网络3.5这两个表如果为数据单个表为数据对象每个表中的每一个人、每一门课均为数据元素姓名、性别、年龄、课程号、课程名、学分均为数据项
2023年03月26日
25 阅读
0 评论
0 点赞
2022-11-22
深入理解io流
感谢博文——>史上最骚最全最详细的IO流教程,没有之一!一键跳转 注:以此博文为基础进行复习查阅如若有哪方面侵权,请联系小宇(不懂这方面,您的博文也未明确),总之,这篇写的真好明确{card-describe title="明确分析"}(1)明确要操作是要读还是要写(2)明确要操作的设备上的数据是字节还是文本(3)明确数据所在的具体设备(4)明确是否需要额外功能(比如是否需要转换流、高效流等、暂时不涉及){/card-describe}字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示,1B(byte,字节)= 8bit(位) 字符:是指计算机中使用的字母、数字、字和符号(1)输入输出是相对内存而言输入:将硬盘中的数据读到内存中使用输出:将内存中的数据写到硬盘中保存源(读、输入流)目的(写、输出流)字节: InputStream字节: OutputStream文本、字符:Reader文本、字符:Writer(3)表头源设备:对应目的设备:硬盘文件 File开头文件 File开头内存数组,字符串数组,字符串键盘/屏幕System.inSystem.out网络SocketSocket流的主要分类总结:有Stream即为字节流(注:OutputStreamWriter与InputStreamReader 是字节流通向字符流的桥梁)所有字符流都含有Writer、ReaderIO流(一)、一、根据数据的流向分为:输入流 和 输出流。①输入流 :把数据从其他设备上读取到内存中的流。②输出流 :把数据从内存 中写出到其他设备上的流。二、根据数据的类型分为:字节流 和 字符流。①字节流 :以字节为单位,读写数据的流。(适合读取视频声音图片等二进制文件)一切文件数据(文本、图片、视频等)在存储时,都是以二进制数字的形式保存,都一个一个的字节,那么传输时一样如此。所以,字节流可以传输任意文件数据。②字符流 :以字符为单位,读写数据的流。(纯文本文件:文字、数字等)(二)、字节流一、字节输出流(OutputStream)此抽象类是表示输出字节流的所有类的超类(父类),子类能改继承其方法。输出流接受输出字节并将这些字节发送到某个接收器。 需要定义 OutputStream 子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。 1、FileOutputStream 以我的英格力士水平觉得他是文件输出流,用于将数据写出到文件。2、FileOutputStream构造方法不管学啥,只要是对象,就从构造方法开始!FileOutputStream fos = new FileOutputStream("学io.txt");就这句代码,类似这样创建对象都做了三件事情:1、调用系统功能去创建文件【输出流对象会自动创建】(没有该文件才自动创建、有则清空数据)2、创建fos对象3、把fos对象指向这个文件import java.io.*; public class Fostest { public static void main(String[] args) { FileOutputStream fos; try { fos = new FileOutputStream("fos.txt"); // 字符串转换为字节数组 byte[] b = "小宇在学io".getBytes();// 默认UTF-8 fos.write(b, 0, 6);// 写出字节数组数据 fos.close(); } catch (IOException e) { } } } 输出结果: 小宇(一个汉字三个字节)二、字节输入流(InputStream)此抽象类是表示字节输入流的所有类的超类。 需要定义 InputStream 子类的应用程序必须总是提供返回下一个输入字节的方法。 1、FileInputStream文件输入流,从文件中读取字节。2、FileInputStream的构造方法 FileInputStream fis = new FileInputStream("小宇在学io.txt");当你创建一个流对象时,必须传入一个文件路径。该路径下,如果没有该文件,会抛出FileNotFoundException。 read方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回-1import java.io.*; class Fisread { public static void main(String[] args) throws IOException{ // 使用文件名称创建流对象 FileInputStream fis = new FileInputStream("read.txt");//read.txt文件中内容为abcde // 读取数据,返回一个字节 int read = fis.read(); System.out.println((char) read); read = fis.read(); System.out.println((char) read); read = fis.read(); System.out.println((char) read); read = fis.read(); System.out.println((char) read); read = fis.read(); System.out.println((char) read); // 读取到末尾,返回-1 read = fis.read(); System.out.println( read); // 关闭资源 fis.close(); } } //循环结构 import java.io.*; class Tenio { public static void main(String[] args) throws IOException { // 使用文件名称创建流对象 FileInputStream fis = new FileInputStream("fos.txt");// read.txt文件中内容为1234 // 读取数据,返回一个字节 int read; while ((read = fis.read()) != -1) { System.out.println((char) read); } // 关闭资源 fis.close(); } } 结果: a b c d*开发中一般强烈推荐使用数组读取文件传输图片等二进制文件import java.io.*; class Copy { public static void main(String[] args) throws IOException { // 1.创建流对象 // 1.1 指定数据源 FileInputStream fis = new FileInputStream("D:\\test.jpg"); // 1.2 指定目的地 FileOutputStream fos = new FileOutputStream("test_copy.jpg"); // 2.读写数据 // 2.1 定义数组 byte[] b = new byte[1024]; // 2.2 定义长度 int len; // 2.3 循环读取 while ((len = fis.read(b))!=-1) { // 2.4 写出数据 fos.write(b, 0 , len); } // 3.关闭资源 fos.close(); fis.close(); } } //传输图片等二进制文件 import java.io.*; class Tenio { public static void main(String[] args) throws IOException { //指定数据源 FileInputStream fis = new FileInputStream("C:\\Users\\dong1\\Pictures\\11.png"); //指定目的地 FileOutputStream fos = new FileOutputStream("C:\\Users\\dong1\\Desktop\\赞赏.png"); byte[] b = new byte[1024];//定义数组 int len;//定义长度 while ((len = fis.read(b))!=-1) {//循环读取 fos.write(b, 0 , len);//写出数据 } //关闭流 fos.close(); fis.close(); } } (三)、字符流因为数据编码的不同,因而有了对字符进行高效操作的流对象,字节流直接读取数据会有乱码的问题(读中文会乱码)//乱码例 import java.io.*; public class zifu { public static void main(String[] args) throws Exception { //FileInputStream为操作文件的字节输入流(原博客这里写的字符输入流,我做了修改) FileInputStream inputStream = new FileInputStream("a.txt");//内容为小宇在学io int len; while ((len=inputStream.read())!=-1){ System.out.print((char)len); } } } 结果:?°??????¨???io //因为io有对应的编码,所以能正常输出 //修改为数组读取,并用String输出 import java.io.*; public class zifu { public static void main(String[] args) throws Exception { FileInputStream inputStream = new FileInputStream("a.txt"); byte[] bytes = new byte[1024]; int len; while ((len=inputStream.read(bytes))!=-1){ System.out.print(new String(bytes,0,len)); } } } 结果:灏忓畤鍦ㄥio("小宇在学io"的utf-8编码) 原因String构造方法有解码功能,并且默认编码是utf-8,Cmd默认使用的编码为GBK一、字符输入流(Reader)用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。 1、FileReader(用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。)用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。 依旧是构造,造就完了import java.io.*; public class Frtest throws IOException{ public static void main(String[] args) { // 使用File对象创建流对象 File file = new File("io.txt"); try { FileReader fr = new FileReader(file); } catch (FileNotFoundException e) { System.out.println("无法找到文件"); } // 使用文件名称创建流对象 //FileReader fr = new FileReader("b.txt"); } }读取字符:read方法每次可以读取一个字符的数据,提升为int类型,读取到文件末尾,返回-1import java.io.*; public class readtest{ public static void main(String[] args) throws IOException { try { // 使用文件名称创建流对象 FileReader fr = new FileReader("io.txt"); // 定义变量,保存数据 int b; // 循环读取 while ((b = fr.read()) != -1) { System.out.print((char) b); } // 关闭资源 fr.close(); } catch (IOException e) { System.out.println("找不到文件"); } } }二、字符输出流(Writer)写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。 1、FileWriter(FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。)写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriter。 import java.io.*; public class io{ public static void main(String[] args) throws IOException { // 第一种:使用File对象创建流对象——>写文件 try { File file = new File("io.txt"); //FileWriter fw = new FileWriter(file);//已有该文件,则会清除文件数据 FileWriter fw = new FileWriter(file,true);//有文件则将数据写入文件末尾处,而不是清楚原有数据,并从开始处写。 // 第二种:使用文件名称创建流对象 // FileWriter fw = new FileWriter("b.txt"); fw.write('小'); fw.write("宇在学io"); fw.close();//关闭资源时,与FileOutputStream不同。如果不关闭,数据只是保存到缓冲区,并未保存到文件。 } catch (IOException e) { System.out.println("创建文件失败"); } try { // 使用文件名称创建流对象——>读文件 FileReader fr = new FileReader("io.txt"); // 定义变量,保存数据 int b; // 循环读取 while ((b = fr.read()) != -1) { System.out.print((char) b); } // 关闭资源 fr.close(); } catch (IOException e) { System.out.println("无法找到文件");} } } } 输出结果:小{card-describe title="小测试"}编写一个程序,求 2~200 之间的素数,并将结果保存在文件 prime.dat 中。再从该文件中读取内容并在屏幕上显示出来。注意异常处理{/card-describe}io先告一段落,有时间会继续学,先处理实验
2022年11月22日
44 阅读
0 评论
1 点赞
2022-11-17
JAVA多态11.17写实验前来研究
多态就是同一个接口,因不同的实例,而进行的不同的操作同一个行为,具有不同的表现形式——————多态{tabs}{tabs-pane label="多态理解1"}{/tabs-pane}{/tabs}重写—————子类能够重写父类的方法(final无法被重写,进而无法被继承)。public class sevenpet { //主测试类 public static void main(String[] args) { Dog d = new Dog("小狗", "雄", "yellow");//new对象Dog d.talk();//调用方法 d.eat(); Cat c = new Cat("小喵", "磁", 12);//new对象Cat c.talk();//调用方法 c.eat(); } } abstract class Pet {//声明抽象类 private String name;//封装属性 private String sex; //get/set public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Pet(String _name, String _sex) {//声明一个带有两个参数的构造函数 name = _name; sex = _sex; } //声明抽象方法 void talk()和 void eat(); public abstract void talk(); public abstract void eat(); } class Dog extends Pet {//Dog类继承Pet private String color;//封装color public Dog(String _name, String _sex, String color) {//声明一个带有三个参数的构造函数 super(_name, _sex); this.color=color; } //重写 talk()和 eat()方法; public void talk() { System.out.println(getName() + ":" + getSex() + "性,汪汪汪~~~"); } public void eat() { System.out.println(getName() + ":" + color + "色,呼呼呼"); } } class Cat extends Pet {//Cat类继承Pet private double weight;//封装weight public Cat(String _name, String _sex, double weight) {//声明一个带有三个参数的构造函数 super(_name, _sex); this.weight=weight; } //重写 talk()和 eat()方法; public void talk() { System.out.println(getName() + ",一只"+ weight +" 斤重的的"+getSex()+"性小喵,喵喵喵~~~"); } public void eat() { System.out.println(getName() + ":cat唔唔唔"); } }
2022年11月17日
17 阅读
0 评论
0 点赞
2022-10-18
生日祝福(10.18当日开启)
留一个言吧,球球辣(´I`)
2022年10月18日
34 阅读
23 评论
8 点赞
1
2
3