内部类的拓展

定义类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. Java Script入门

    学习来源:https://www.runoob.com/js/js-tutorial.html JavaScript 教程 JavaScript 是 Web 的编程语言. 所有现代的 HTML 页面都 ...

  2. 条件随机场CRF介绍

    链接:https://mp.weixin.qq.com/s/BEjj5zJG3QmxvQiqs8P4-w softmax CRF主要用于序列标注问题,可以简单理解为是给序列中的每一帧,既然是分类,很自 ...

  3. linux之crontab定时器

    一.安装crontab yum -y install vixie-cron yum -y install crontabs 说明:vixie-cron 软件包是 cron 的主程序:crontabs ...

  4. 【JAVA】Maven profiles控制多环境数据源日志打包(转载)

    https://blog.csdn.net/qq_17213067/article/details/81661295

  5. python selenium 相关操作

    selenium : 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fi ...

  6. day2计算机基础作业题

    1.什么是编程? 编程就是程序员用某种编程语言的语法格式将将自己脑中想让计算机做的事情写成文件.所以编程的结果就是一堆的文件,一堆文件就是的程序. 2.计算机的组成: 1).CPU 其中CPU又分为控 ...

  7. JS定时循环

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. 使用jquery给html标签加点击事件

    //直接给所有img标签绑定click事件 $("img").click(function(){ alert('你点击了图片'); }) //使用bind方法绑定click事件 $ ...

  9. 观察者模式------《Head First 设计模式》

    第二章---观察者模式 xzmxddx 学习方式:书籍<Head First 设计模式>,这本书通俗易懂,所有知识点全部取自本书. 面向对象设计原则 封装变化 多用组合,少用继承 针对接口 ...

  10. ASP.NET MVC Ajax下载文件(使用NPOI向现有的excel模板文件里面添加数据)

    View Html.DevExpress().Button(DevExpressButtonHelper.AddButton(ViewBag.Form, "Export", &qu ...