Java的多线程一 Li.046

多线程增加效率 并行, 就是多个任务同时进行, 多核cpu同时执行 并发, 多个任务轮流进行, cpu一个一个的执行 证明 JVM 是多线程的 垃圾回收和main线程间隔执行 public class Demo1_Thread { public static void main(String[] args) { for(int i=0; i < 10000000 ;i++){ new Demo(); } for(int i=0; i < 10000 ; i++){ System.out.println("主线程"); } } } class Demo{ @Override protected void finalize() throws Throwable { System.out.println("垃圾被回收了"); } } 继承Thread 开启一个线程 实际run() 方法 start() 开启线程 public class Demo2_ExtendsThread { public static void main(String[] args) { MyThread mt = new MyThread(); // mt....

September 10, 2021 · 6 分钟 · Lizicai

Java的递归 Li.045

递归练习, 计算文件夹大小 import java.io.File; import java.util.Scanner; public class Demo1_FolderSize { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String strFolder = null; long size = 0; while (true){ if( sc.hasNext()){ strFolder = sc.nextLine(); break; } } if( strFolder.equals(null)){ System.out.println("不能为空"); } else { File folder = new File(strFolder); if(folder.isFile()){ size = folder.length(); } else if(folder.isDirectory()){ size = getSize(folder); } else if(! folder.exists()){ System.out.println("文件夹不存在"); } } System.out.println(size); } public static long getSize(File folder){ long len = 0; File [] files = folder....

September 8, 2021 · 4 分钟 · Lizicai

Java的IO其他流(及Properties) Li.044

序列流 SequenceInputStream 关闭时会关闭所有流 public class Demo1_Stream { public static void main(String[] args) throws IOException { FileInputStream fr1 = new FileInputStream("read1.md"); FileInputStream fr2 = new FileInputStream("read2.md"); SequenceInputStream sis = new SequenceInputStream(fr1,fr2); FileOutputStream fos = new FileOutputStream("read3.md"); int b ; while ( ( b = sis.read()) != -1){ fos.write(b); } sis.close(); fos.close(); } public static void demo1() throws IOException { FileInputStream fr1 = new FileInputStream("read1.md"); FileOutputStream fos = new FileOutputStream("read3.md"); int b; while ((b = fr1....

September 6, 2021 · 5 分钟 · Lizicai

Java的Reader和Writer类 Li.043

FileReader 读取文件 import java.io.FileReader; import java.io.IOException; public class Demo1_FileReader { public static void main(String[] args) throws IOException { // Demo1(); FileReader fr = new FileReader("m.txt"); int b ; while ( (b = fr.read()) != -1){ System.out.println((char)b); } fr.close(); } private static void Demo1() throws IOException { FileReader fr = new FileReader("m.txt"); int x = fr.read(); System.out.println(x); System.out.println((char)x); } } FileWriter 字符写入文件 import java.io.FileWriter; import java.io.IOException; public class Demo2_FileWriter { public static void main(String[] args) throws IOException { FileWriter fw = new FileWriter("output....

September 2, 2021 · 4 分钟 · Lizicai

Java的IO流 Li.042

Java 的 IO 流 字节流, 字节流可以操作任何数据, 计算机中存储是字节流 InputStream OutputStream 字符流, 只能操作纯字符数据, 比较方便 Reader Writer 使用IO流要导入包, 使用时要进行异常处理, 使用后要释放资源 FileInputStream 读取一个文件 import java.io.FileInputStream; import java.io.IOException; public class Demo1_FileInputStream { public static void main(String[] args) throws IOException { FileInputStream fps = new FileInputStream("test.txt"); int x; while ((x = fps.read() ) != -1){ System.out.println(x); } fps.close(); } } read() 为什么接收的int类型 因为字节输入流可以操作任意类型的文件,比如图片音频等, 这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte, 有可能在读到中间的时候遇到111111111,那么这11111111是byte类型的-1, 我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收, 如果11111111会在其前面补上24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完, 而结束标记的-1就是int类型 字节输出流 write() void write(int b) throws IOException 在输出时int 去掉前3个byte字节, 写入第4个byte到文件中, 这个写是覆盖 import java....

August 30, 2021 · 4 分钟 · Lizicai

Java的File类 Li.041

File 相对路径文件或目录 绝对路径文件或目录 File(String pathname) 文件路径或目录 File(String parent, String child) 父文件路径, 和子文件名 File(File parent, String child) 父文件路径file, 和子文件名 import java.io.File; public class Demo1_File { public static void main(String[] args) { // Demo1(); // Demo2(); File parentFile = new File("/usr/local/etc/nginx/"); String child = "nginx.conf"; File file = new File(parentFile, child); } private static void Demo2() { String parent = "/usr/local/etc/nginx/"; String child = "nginx.conf"; File file = new File(parent,child); System.out.println(file.exists()); } // a....

August 29, 2021 · 3 分钟 · Lizicai

Java的异常类 Li.040

Java 的异常类 异常的体系 Throwable Error Exception RuntimeException 如果程序没有处理异常, JVM 自行处理, 把异常的名称和信息, 打印在控制台上. 异常的2种处理方式 try catch finally try catch try catch finally try finally throws public class Demo1_Exception { public static void main(String[] args) { Demo1 demo1 = new Demo1(); int x; try{ x = demo1.div(10,0); } catch (ArithmeticException e){ System.out.println(e.getClass()); System.out.println("test"); }finally { System.out.println("最后执行了吗"); } } } class Demo1 { public int div (int a, int b){ return a/b; } } public class Demo2_Exception { public static void main(String[] args) { int a = 0; int b = 10; int[] arr = {1, 2, 3}; int x ; arr = null; try { // x = b / a; System....

August 27, 2021 · 4 分钟 · Lizicai

Java的Map类 Li.039

Map 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 Map 与 Collection 接口的不同 Map 是双列的, Collection 是单列的 Map 是键唯一, Collection 的子体系Set是唯一的 Map 集合的数据结构值针对键有效, 跟值无关; Collection集合的数据结构是针对元素有效 Map 方法 V put(K key, V value) 添加键和值, 成功返回null, 覆盖重复key值, 则返回被覆盖的Value值 V remove(Object key) 通过key删除元素, 删除成功则返回Value值 boolean containsKey(Object key) Map 中是否包含Key值 boolean containsValue(Object value) Map 中是否包含Value值 boolean isEmpty() Map 是否为空 clear() 清空Map import java.util.Collection; import java.util.HashMap; import java.util.Map; public class Demo1_Map { public static void main(String[] args) { // Demo1(); Map<String, Integer> hashMap = new HashMap<>(); hashMap....

August 24, 2021 · 8 分钟 · Lizicai