内部类的拓展

定义类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 设计模式的更多相关文章

  1. JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?

    本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...

  2. java.io.NotSerializableException: test.io.file.Student

    java.io.NotSerializableException: test.io.file.Student    at java.io.ObjectOutputStream.writeObject0 ...

  3. 33.JAVA编程思想——JAVA IO File类

    33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...

  4. Java 流(Stream)、文件(File)和IO

    Java.io包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序 ...

  5. IO:File类(java.io.File)

    public class File extends Object implements Serializable, Comparable<File> 构造方法: public File(S ...

  6. java.io.file

    package cn.edu.tongji.cims.wade.system;     import java.io.*;     public class FileOperate {     pub ...

  7. java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)

    java.io.File.listFiles(FilenameFilter filter) 返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的文件和目录. 声明 以下是java.io. ...

  8. 【java IO File】统计项目代码总共多少行

    统计项目代码总共有多少行 思想: 1.首先将不需要迭代的文件夹,保存在集合中,不满足的就是需要迭代的文件夹 2.将需要进行统计行数的代码文件保存在集合中,满足的就是需要计算文件行数的文件 3.迭代方法 ...

  9. java.io.File类

    java.io.File类 1.凡是与输入.输出相关的类.接口等都定义在java.io包下 2.File是一个类.能够有构造器创建其对象.此对象相应着一个文件(.txt .avi .doc .ppt ...

随机推荐

  1. 应急响应中find命令总结

    在应急响应中,我们经常会使用find命令来查找系统中被黑客修改过的文件,或者被上传的木马后门文件,灵活使用find命令可以达到事半功倍的效果,现总结下使用技巧 举例,查找最近被更改的jsp文件 fin ...

  2. Luogu P3170 [CQOI2015]标识设计 状态压缩,轮廓线,插头DP,动态规划

    看到题目显然是插头\(dp\),但是\(n\)和\(m\)的范围似乎不是很小.我们先不考虑复杂度设一下状态试试: 一共有三个连通分量,我们按照\(1,2,3\)的顺序来表示一下.轮廓线上\(0\)代表 ...

  3. 知名界面类控件Kendo UI for jQuery R2 2019 SP1发布|附下载

    Kendo UI for jQuery提供了在短时间内构建现在Web应用程序所需要的一切.从70多个UI中选择,并轻松地将它们组合起来,创建出酷炫响应式的应用程序,同时将开发时间加快了50%. [适用 ...

  4. python 后台 安装 富文本编辑

    前言 当然需要安装一些后台只能输入一些文本编辑器,不然这样多少不美观呀 当然python 有 safe 可以把后台的标签转换 , 还有 striptags   这个是换成html 格式的,但不会加粗或 ...

  5. 常见状态码StatusCode

    当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求.当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求. ...

  6. 一个不错的vue项目

    项目演示: https://www.xiaohuochai.cc 项目地址:https://github.com/littlematch0123/blog-client

  7. JVM基础——面试、笔试

    1.java内存与内存溢出 1.1 JVM分为哪些区,每一个区干嘛的?(见java虚拟机38页) (1)程序计数器(线程私有) 当前线程执行字节码的信号指示器.(每个线程都会在程序计数器中存储其指令, ...

  8. Kafka(华为FusionInsight )操作命令

    华为大数据kafka操作web界面创建角色.用户.用户管理角色进入服务器环境,进入客户端目录/opt/hadoopclient,导入环境变量source bigdata_env.切换用户kinit k ...

  9. 【leetcode】LCP 1. Guess Numbers

    题目如下: 小A 和 小B 在玩猜数字.小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜.他们一共进行三次这个游戏,请返回 小A 猜对了几次? 输入的gues ...

  10. 【java&c++】父子类中同名函数的覆盖问题

    java和c++两门语言对于父子类中同名函数具有不同的处理方式. 先上两段代码: C++: class Basic { public: void test(string i){ cout <&l ...