首页
投稿
每日成就
留言
友链
统计
Search
1
NPS内网穿透服务
90 阅读
2
本服务用于为你的某东每天自动获取豆豆
89 阅读
3
小米妙享PC版来啦——替代MIUI+(3.1.0版本以后该安装方法失效)
80 阅读
4
KMS永久激活你的windows
74 阅读
5
autojs学习之路(二)基于控件
65 阅读
小日常
唠嗑
windows小芝士
应用推荐
linux小芝士
autojs
JAVA
今日推软Android
登录
/
注册
Search
标签搜索
JAVA
autojs
自动获取京豆
青龙面板
儿童节
kill进程
linux命令
高考加油
KMS
激活windows
NPS
内网穿透
shell脚本定时重启mysql数据库
加油
多态
生日祝福
小米妙享PC
应用推荐
100以内加减法
猜数小游戏
小宇
累计撰写
32
篇文章
累计收到
58
条评论
首页
栏目
小日常
唠嗑
windows小芝士
应用推荐
linux小芝士
autojs
JAVA
今日推软Android
页面
投稿
每日成就
留言
友链
统计
搜索到
13
篇与
的结果
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(); fos.write(b, 0, 4);// 写出字节数组数据 fos.close(); } catch (IOException e) { } } } 输出结果: 小宇在学io //小宇(一个汉字两个字节)二、字节输入流(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日
15 阅读
0 评论
0 点赞
2022-11-17
JAVA多态11.17写实验前来研究
多态就是同一个接口,因不同的实例,而进行的不同的操作同一个行为,具有不同的表现形式——————多态{tabs}{tabs-pane label="多态理解1"}{/tabs-pane}{tabs-pane label="多态理解2"}{/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日
11 阅读
0 评论
0 点赞
2022-10-12
JAVA课堂内容(八)2022.10.7、8(面向对象)
封装(访问权限的控制)public/private/protected的具体区别1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用。3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。可以通过get、set方法进行操作来得到继承 extends优点{card-list}{card-list-item}父类的属性和方法可用于子类{/card-list-item}{card-list-item}可以轻松地自定义子类{/card-list-item}{card-list-item}设计应用程序变得更加简单{/card-list-item}{card-list-item}代码的可重用性{/card-list-item}{/card-list}他爹有的,他儿子可直接调用(除private权限的成员变量)继承格式默认继承Object类继承后的调用来个Animalpublic class Animal { int age; String name; String color; public Animal(int age, String name, String color) { super(); // this.age = age; this.name = name; this.color = color; System.out.println("Animal的有参数的构造方法"); } public Animal() { super(); System.out.println("Animal的无参数的构造方法"); } void run(){ System.out.println(name+" is running........"); }}来个dog,继承Animalclass Dog extends Animal{ public Dog() { //super(); System.out.println("Dog的无参数的构造方法"); } public Dog(int age, String name, String color) { super(age, name, color); System.out.println("Dog的有参数的构造方法"); } }最后来个带main的测试无参public class Test { public static void main(String[] args) { Dog d1 = new Dog(); d1.run(); } } //该情况为无参有参public class Test { public static void main(String[] args) { Dog d1 = new Dog(10,"WangWang","red"); d1.run(); } } //该情况为有参参数大概就是这么传滴,会自己判断有参无参。多态{card-list}{card-list-item}方法重载与覆盖{/card-list-item}{card-list-item}{/card-list-item}{card-list-item}{/card-list-item}{/card-list}
2022年10月12日
10 阅读
0 评论
1 点赞
2022-10-02
JAVA课堂内容(七)2022.10.1(面向对象)
构造函数要点:设计测试类,调用其他不同的类,生成对象,组织对象调用各自方法。狗捉猫,猫捉老鼠的剧情://主public class test { public static void main(String[] args) throws InterruptedException { System.out.println("\t"+"欢迎来到小宇的院子里,这里有一只3岁的小灰猫叫Tom,老鼠1岁叫jerry,狗子4岁叫玛卡巴卡"); Thread.sleep(5000); System.out.println("\t"+"看,Tom在这里趴着,嘴里还哼着小曲"); cat Tom=new cat(1,"Tom","red"); Tom.sing(); Thread.sleep(2000); System.out.println("\t"+"jerry饿了出来寻找吃的"); Mouse jerry=new Mouse(1,"jerry"); Thread.sleep(2000); jerry.voice(); System.out.println("\t"+"Tom看到了jerry"); Tom.catchMouse(); Thread.sleep(2000); System.out.println("\t"+"激烈的抓捕引来了玛卡巴卡"); Thread.sleep(1000); Dog maka = new Dog(); maka.wangwang(); System.out.println("\t"+"在抓捕过程中,聪明的jerry躲过了Tom的各种攻击,在进窝前还对嘲讽了Tom"); Thread.sleep(500); jerry.CF(); } } //猫class cat { int age; String name; String color; cat(int _age,String _name,String _color){ this.age=_age; this.name=_name; this.color=_color; } void sing(){ System.out.println(" "+"Tom:你爱我丫我爱你,蜜雪冰城甜蜜蜜~"); } void catchMouse() throws InterruptedException{ System.out.println("\t"+"Tom正在抓jerry"); Thread.sleep(2000); System.out.println(" "+"Tom:看我抓不抓到你,慢点跑"); } }//老鼠class Mouse{ int age; String name; Mouse(int _age,String _name){ age=_age; name=_name; } void voice(){ System.out.println(" "+"jerry:zzz,吱吱吱,俺饿咧"); } void CF(){ System.out.println(" "+"jerry:hahaha,大笨蛋"); } }//狗子class Dog { int age=4; String name="maka"; void wangwang(){ System.out.println(" "+"maka:汪汪,Hi,Tom"); } void catchcat(cat c){ System.out.println("miaomiaomiao"); } }结果: 欢迎来到小宇的院子里,这里有一只3岁的小灰猫叫Tom,老鼠1岁叫jerry,狗子4岁叫玛卡巴卡 看,Tom在这里趴着,嘴里还哼着小曲 Tom:你爱我丫我爱你,蜜雪冰城甜蜜蜜~ jerry饿了出来寻找吃的 jerry:zzz,吱吱吱,俺饿咧 Tom看到了jerry Tom正在抓jerry Tom:看我抓不抓到你,慢点跑 激烈的抓捕引来了玛卡巴卡 maka:汪汪,Hi,Tom 在抓捕过程中,聪明的jerry躲过了Tom的各种攻击,在进窝前还对嘲讽了Tom jerry:hahaha,大笨蛋
2022年10月02日
13 阅读
0 评论
0 点赞
2022-09-30
JAVA课堂内容(六)2022.9.30(面向对象)
*老师回老本行了,讲了一节课Visual Basic,我觉得e就够用了。传参,重点即为传参。class Dog { int age=10; String name="wangwang"; public static void main(String[] args) { Dog xiaoyu =new Dog(20,"dongxiaoyu"); System.out.println("xiaoyu.age="+xiaoyu.age); System.out.println("xiaoyu.name="+xiaoyu.name); } Dog(int agge,String naame){ //谁调用传给谁 age=agge; name=naame; } } 输出: xiaoyu.age=20 xiaoyu.name=dongxiaoyu{lamp/}
2022年09月30日
13 阅读
0 评论
1 点赞
1
2
3