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 ...
随机推荐
- 爬虫笔记八——Scrapy实战项目
(案例一)手机App抓包爬虫 1. items.py import scrapy class DouyuspiderItem(scrapy.Item): # 存储照片的名字 nickName = sc ...
- oracle的sql 记录
----1.分组函数--select max(tfi.expected_scale) max1,min(tfi.expected_scale) min1,to_char(avg(tfi.expecte ...
- 详解PHP文件下载的原理和实现
通常文件下载过程是十分简单的,建立一个链接指向到目标文件就可以了.例如下面的链接: XML/HTML代码 <a href=http://www.xxx.com/xxx.rar>点击下载文件 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(4)|借用Borrowing]
[易学易懂系列|rustlang语言|零基础|快速入门|(4)] Borrowing 继续讲讲另一个重要的概念:借用(borrowing), 什么是借用? 我们先来看前一文章([易学易懂系列|rust ...
- linux线程的实现(转)
原文:https://www.cnblogs.com/zhaoyl/p/3620204.html 首先从OS设计原理上阐明三种线程:内核线程.轻量级进程.用户线程 内核线程 内核线程就是内核的分身,一 ...
- redux 中的 redux-thunk(中间件)
前言 空闲时间把redux中的redux-thunk中间件回顾下,因为以前没有写博客的习惯,都怪自己太年轻,好了 其实: redux的核心概念其实很简单:将需要修改的state都存入到sto ...
- JAVA泛型里面各值代表的意义
Java泛型中的标记符含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number ...
- JAVA笔记18-容器之二增强的for循环(不重要)
JDK1.5增强的for循环(foreach??)
- 伸展树splay之求区间极值
前言 这篇博客是根据我在打这道题的时候遇到的问题,来打的,有些细节可能考虑不到. 题目 在N(1<=N<=100000)个数A1-An组成的序列上进行M(1<=M<=10000 ...
- 【BZOJ2022】Pku1837 Balance
Description Gigel has a strange "balance" and he wants to poise it. Actually, the device i ...