Java ——扩展:内部类 匿名内部类 IO file 设计模式
内部类的拓展
定义类or方法内部的类
最外层的类只能使用public和默认修饰
class Demo {
class A {
}
public static void main(String[] args) {
class B {
}
int a;
}
}
示例2:
class Demo {
//成员变量属于类的对象,只有类的对象存在时成员变量才存在
private int bb;
class A {
}
public static void main(String[] args) {
Demo demo = new Demo();
A a = demo.new A();
A a2 = new Demo().new A();
}
}
匿名内部类
语法规则
new 接口名/父类名(参数值){
//…… 抽象方法的实现or父类方法的重写
}
示例:
public interface A {
void fun();
}
//*****************************
public static void main(String[] args) {
class AAA implements A{
@Override
public void fun() {
System.out.println("haha");
}
}
A a = new AAA();
a.fun();
//假如整个系统只使用到了类AAA的一个对象,我们就可以采用匿名内部类的方式简化代码
A a2 = new A() {
@Override
public void fun() {
System.out.println("22");
}
};
a2.fun();
new A() {
@Override
public void fun() {
System.out.println("33333333");
}
}.fun();
}
示例2:【定义对象的同时重写方法】
public class AAA extends A {
@Override
public void fun2() {
System.out.println("A fun22222");
}
}
public static void main(String[] args) {
A a = new A();
a.fun1();
a.fun2();
AAA aaa = new AAA();
aaa.fun1();
aaa.fun2();
A a2 = new A() {
@Override
public void fun2() {
System.out.println("A fun22222");
}
};
a2.fun1();
a2.fun2();
}
示例3:
public class A {
private int sth;
public int getSth() {
return sth;
}
public void setSth(int sth) {
this.sth = sth;
}
public A(int sth) {
super();
this.sth = sth;
}
public void fun1() {
System.out.println("A fun1 " + sth);
}
public void fun2() {
System.out.println("A fun2 " + sth);
}
}
public static void main(String[] args) {
A a = new A(1);
a.fun1();
a.fun2();
A a2 = new A(1234) {
public void fun1() {
System.out.println(super.getSth());
};
};
a2.fun1();
a2.fun2();
new A(1234) {
public void fun1() {
System.out.println(getSth());
};
}.fun2();
}
File
在Java中不管是文件还是文件夹都用File类表示
示例1:
public static void main(String[] args) throws IOException {
File file = new File("abc321.txt");
if(!file.exists()) {
file.createNewFile();
}
File file2 = new File("aaa");
file2.mkdir();
File file3= new File("aaa/bb/cc");//相对路径
file3.mkdirs();
File file4 = new File("D:/abc/efg/dd.txt");//绝对路径
String path = file4.getPath();
System.out.println(path);
String parent = file4.getParent();
System.out.println(parent);
File parentFile = new File(parent);
if(!parentFile.exists()) {
parentFile.mkdirs();
}
if(!file4.exists()) {
file4.createNewFile();
}
}
示例2:
private static void fun1() {
//列举出来某一个文件夹下面所有的文件
File file = new File("C:\\Users\\lenovo\\Documents\\Tencent Files\\369950806\\FileRecv\\Demp");
File[] listFiles = file.listFiles();
//Stream.of:将数据转换成Stream,
Stream.of(listFiles).forEach(item->System.out.println(item.getName()));
}
示例3:
public class Demo {
public static void main(String[] args) {
//列举某目录下面所有的文件,包含子文件夹下的文件
File file = new File("C:\\Users\\lenovo\\Documents\\Tencent Files\\369950806\\FileRecv\\Demp");
fun(file);
}
public static void fun(File file) {
File[] listFiles = file.listFiles();
for(File item : listFiles) {
if(!item.isDirectory()) {
System.out.println(item.getName());
}else {
fun(item);
}
}
}
}
示例4:
import java.io.*;
public class FileCopyDemo{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new FileReader("D:\\1.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\copy.txt"));
String line = "";
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
IO

输入输出的参考坐标:计算机内存。
示例:将指定的字符写到文件中。
public static void main(String[] args) {
try {
//1、创建一个空的文件
File file = new File("abc.txt");
if (!file.exists()) {
file.createNewFile();
}
//2、准备数据
StringBuffer data = new StringBuffer();
for(int i = 0;i<8000;i++) {
data.append(UUID.randomUUID().toString());
}
data.append("4321*");
System.out.println(data);
//往文件中写入数据
FileWriter writer = new FileWriter(file);
writer.write(data.toString());
writer.flush();//刷新
//释放资源
writer.close();
} catch (Exception e) {
System.out.println("haha");
}
}

设计模式
单例设计模式
套路,经验的沉淀
目的:保证系统中某个类只能产生一个对象。
生成类的对象:通过new调用构造方法产生。
饿汉式
public class Boss {
private Boss() {
}
//static类型的成员变量属于类,在类中只有一份拷贝
private static Boss boss = new Boss();
public static Boss getInstance() {
return boss;
}
}
懒汉式
public class Boss2 {
private Boss2() {
}
//static类型的成员变量属于类,在类中只有一份拷贝
private static Boss2 boss ;
public static Boss2 getInstance() {
if(boss == null)
boss = new Boss2();
return boss;
}
}
Java ——扩展:内部类 匿名内部类 IO file 设计模式的更多相关文章
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...
- java.io.NotSerializableException: test.io.file.Student
java.io.NotSerializableException: test.io.file.Student at java.io.ObjectOutputStream.writeObject0 ...
- 33.JAVA编程思想——JAVA IO File类
33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...
- Java 流(Stream)、文件(File)和IO
Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序 ...
- IO:File类(java.io.File)
public class File extends Object implements Serializable, Comparable<File> 构造方法: public File(S ...
- java.io.file
package cn.edu.tongji.cims.wade.system; import java.io.*; public class FileOperate { pub ...
- java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)
java.io.File.listFiles(FilenameFilter filter) 返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的文件和目录. 声明 以下是java.io. ...
- 【java IO File】统计项目代码总共多少行
统计项目代码总共有多少行 思想: 1.首先将不需要迭代的文件夹,保存在集合中,不满足的就是需要迭代的文件夹 2.将需要进行统计行数的代码文件保存在集合中,满足的就是需要计算文件行数的文件 3.迭代方法 ...
- java.io.File类
java.io.File类 1.凡是与输入.输出相关的类.接口等都定义在java.io包下 2.File是一个类.能够有构造器创建其对象.此对象相应着一个文件(.txt .avi .doc .ppt ...
随机推荐
- 应急响应中find命令总结
在应急响应中,我们经常会使用find命令来查找系统中被黑客修改过的文件,或者被上传的木马后门文件,灵活使用find命令可以达到事半功倍的效果,现总结下使用技巧 举例,查找最近被更改的jsp文件 fin ...
- Luogu P3170 [CQOI2015]标识设计 状态压缩,轮廓线,插头DP,动态规划
看到题目显然是插头\(dp\),但是\(n\)和\(m\)的范围似乎不是很小.我们先不考虑复杂度设一下状态试试: 一共有三个连通分量,我们按照\(1,2,3\)的顺序来表示一下.轮廓线上\(0\)代表 ...
- 知名界面类控件Kendo UI for jQuery R2 2019 SP1发布|附下载
Kendo UI for jQuery提供了在短时间内构建现在Web应用程序所需要的一切.从70多个UI中选择,并轻松地将它们组合起来,创建出酷炫响应式的应用程序,同时将开发时间加快了50%. [适用 ...
- python 后台 安装 富文本编辑
前言 当然需要安装一些后台只能输入一些文本编辑器,不然这样多少不美观呀 当然python 有 safe 可以把后台的标签转换 , 还有 striptags 这个是换成html 格式的,但不会加粗或 ...
- 常见状态码StatusCode
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求. ...
- 一个不错的vue项目
项目演示: https://www.xiaohuochai.cc 项目地址:https://github.com/littlematch0123/blog-client
- JVM基础——面试、笔试
1.java内存与内存溢出 1.1 JVM分为哪些区,每一个区干嘛的?(见java虚拟机38页) (1)程序计数器(线程私有) 当前线程执行字节码的信号指示器.(每个线程都会在程序计数器中存储其指令, ...
- Kafka(华为FusionInsight )操作命令
华为大数据kafka操作web界面创建角色.用户.用户管理角色进入服务器环境,进入客户端目录/opt/hadoopclient,导入环境变量source bigdata_env.切换用户kinit k ...
- 【leetcode】LCP 1. Guess Numbers
题目如下: 小A 和 小B 在玩猜数字.小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜.他们一共进行三次这个游戏,请返回 小A 猜对了几次? 输入的gues ...
- 【java&c++】父子类中同名函数的覆盖问题
java和c++两门语言对于父子类中同名函数具有不同的处理方式. 先上两段代码: C++: class Basic { public: void test(string i){ cout <&l ...