内部类的拓展

定义类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. preg_match 与 preg_match_all 函数示例详解

    正则表达式在 PHP 中的应用 在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正则表达式匹配相应的内容 正则替换:根据正则表达式匹配内容并替换 正则分割:根据正则表达式分割字符串 在 PHP ...

  2. Codeforces 975 前缀和二分算存活人数 思维离直线速度相同判平行

    A /* Huyyt */ #include <bits/stdc++.h> using namespace std; typedef long long ll; ]; ]; map< ...

  3. VUE+DJANGO

    1.router类型不能设置为history const router = new Router({ mode: '', routes, }); //避免打包到django后刷新报错 2.样式放sta ...

  4. js 传递字符串问题

    data[i]['operate'] = '<a onclick="objProjectStageEdit.onProjectStageEdit(' + scheduleID + ', ...

  5. SonarQube 7.7默认数据库连接方法

    SonarQube7.7默认数据库为H2 embbed数据库 连接字符串:jdbc:h2:tcp://localhost:9092/sonar 用户名密码都为空

  6. sudo: pip:command not found问题解决

    python3 sudo apt-get install python3-pip python2 sudo apt-get install python-pip如果还是不行,则按照下面操作 原因:编译 ...

  7. CentOS8 中文输入法

    CentOS8发布了,安装了下试试,结果发现中文输入法调不出来. 系统安装完成后,在系统[设置]的[Region&Language]里的[输入源]里可以添加汉语输入源,但是不能打中文字. 下面 ...

  8. Mybatis-Plus和Mybatis的区别

    1.List item 区别一如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂.通俗来讲——MyBatis:一种操作数据库的框架,提供一种Mapper类,支持 ...

  9. Linux培训教程 linux磁盘分区详解

    在学习 Linux 的过程中,安装 Linux 是每一个初学者的第一个门槛.在这个过程中间,最大的困惑莫过于给硬盘进行分区.虽然,现在各种发行版本的 Linux 已经提供了友好的图形交互界面,但是很多 ...

  10. #383 Div1 Problem B Arpa's weak amphitheater.... (分组背包 && 并查集)

    题意 : 有n个人,每个人都有颜值bi与体重wi.剧场的容量为W.有m条关系,xi与yi表示xi和yi是好朋友,在一个小组. 每个小组要么全部参加舞会,要么参加人数不能超过1人. 问保证总重量不超过W ...