java
Desperate_gh
这个作者很懒,什么都没留下…
展开
-
归并排序demo
public class Merge_sort{ public static void main(String[] args) { // TODO Auto-generated method stub int[] num = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; sort(num, 0, num.length - 1); for (int i = 0; i < num.length; i++) { System.out.println(num[i])原创 2021-09-14 11:32:26 · 188 阅读 · 0 评论 -
List 和 Array 之间的转换
List 转 Array方法一 :toArray()无参方法:返回一个Object[ ]ArrayList<Integer> list = new ArrayList<Integer>();list.add(1);list.add(2);list.add(3);Object[] arr = list.toArray();for (Object o : arr) { System.out.println(o);}方法二:toArray(T[ ] a)带泛型参数:原创 2021-07-03 15:23:44 · 1336 阅读 · 0 评论 -
Java控制输出小数点后几位数
import java.text.DecimalFormat;public class test { public static void main(String[] args) { DecimalFormat df = new DecimalFormat("#.000");// float a = 12.3456789f; float 也可以 double a = 12.3456789; System.out.println(df.format(a)); // 输出的是原创 2021-03-16 14:41:58 · 3444 阅读 · 0 评论 -
Java-10.23
读取properties文件的两种方式package test_reflect;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class test_loadProperties { public static void main(String[]原创 2020-10-23 16:49:57 · 95 阅读 · 0 评论 -
Java-10.17
套接字 NIO 实例public class NIOServer { public static void main(String[] args) throws IOException { Selector selector = Selector.open(); ServerSocketChannel ssChannel = ServerSocketChannel.open(); ssChannel.configureBlocking(fals原创 2020-10-17 13:38:50 · 143 阅读 · 0 评论 -
Java-10.16
网络操作Java 中的网络支持:InetAddress:用于表示网络上的硬件资源,即 IP 地址;URL:统一资源定位符;Sockets:使用 TCP 协议实现网络通信;Datagram:使用 UDP 协议实现网络通信。InetAddress没有公有的构造函数,只能通过静态方法来创建实例。InetAddress.getByName(String host); //根据主机获取对应的InetAddress对象。InetAddress.getByAddress(byte[] addres原创 2020-10-16 15:19:25 · 91 阅读 · 0 评论 -
Java-10.15
字符操作编码与解码编码就是把字符转换为字节,而解码是把字节重新组合成字符。如果编码和解码过程使用不同的编码方式那么就出现了乱码。GBK 编码中,中文字符占 2 个字节,英文字符占 1 个字节;UTF-8 编码中,中文字符占 3 个字节,英文字符占 1 个字节;UTF-16be 编码中,中文字符和英文字符都占 2 个字节。UTF-16be 中的 be 指的是 Big Endian,也就是大端。相应地也有 UTF-16le,le 指的是 Little Endian,也就是小端。Java 的内原创 2020-10-16 09:24:41 · 113 阅读 · 0 评论 -
Java-9.14-next
概览Java 的 I/O 大概可以分成以下几类:磁盘操作:File字节操作:InputStream 和 OutputStream字符操作:Reader 和 Writer对象操作:Serializable网络操作:Socket新的输入/输出:NIO磁盘操作File 类可以用于表示文件和目录的信息,但是它不表示文件的内容。递归地列出一个目录下所有文件:public static void listAllFiles(File dir) { if (dir == null || !原创 2020-10-14 16:51:07 · 132 阅读 · 0 评论 -
Java-10.14
内存分配与回收策略Minor GC 和 Full GCMinor GC:回收新生代,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。Full GC:回收老年代和新生代,老年代对象其存活时间长,因此 Full GC 很少执行,执行速度会比 Minor GC 慢很多。内存分配策略对象优先在 Eden 分配大多数情况下,对象在新生代 Eden 上分配,当 Eden 空间不够时,发起 Minor GC。大对象直接进入老年代大对象是指需要连续内存空原创 2020-10-14 11:47:46 · 428 阅读 · 0 评论 -
Java-10.13
垃圾收集器以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。单线程与多线程:单线程指的是垃圾收集器只使用一个线程,而多线程使用多个线程;串行与并行:串行指的是垃圾收集器与用户程序交替执行,这意味着在执行垃圾收集的时候需要停顿用户程序;并行指的是垃圾收集器和用户程序同时执行。除了 CMS 和 G1 之外,其它垃圾收集器都是以串行的方式执行。Serial 收集器Serial 翻译为串行,也就是说它以串行的方式执行。它是单线程的收集器,只会使用一个线程进原创 2020-10-14 08:37:44 · 97 阅读 · 0 评论 -
Java-10.12
垃圾收集垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。判断一个对象是否可被回收引用计数算法为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。在两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正是因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。publi原创 2020-10-12 13:53:47 · 218 阅读 · 0 评论 -
Java-10.6
运行时数据区域程序计数器记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。Java 虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M:java -Xss2M HackTheJav原创 2020-10-06 18:52:52 · 144 阅读 · 0 评论 -
Java-10.5
J.U.C - 其它组件FutureTask在介绍 Callable 时我们知道它可以有返回值,返回值通过 Future 进行封装。FutureTask 实现了 RunnableFuture 接口,该接口继承自 Runnable 和 Future 接口,这使得 FutureTask 既可以当做一个任务执行,也可以有返回值。public class FutureTask<V> implements RunnableFuture<V>public interface Runna原创 2020-10-05 09:38:12 · 198 阅读 · 0 评论 -
Java-10.2
CyclicBarrier用来控制多个线程互相等待,只有当多个线程都到达时,这些线程才会继续执行。和 CountdownLatch 相似,都是通过维护计数器来实现的。线程执行 await() 方法之后计数器会减 1,并进行等待,直到计数器为 0,所有调用 await() 方法而在等待的线程才能继续执行。CyclicBarrier 和 CountdownLatch 的一个区别是,CyclicBarrier 的计数器通过调用 reset() 方法可以循环使用,所以它才叫做循环屏障。CyclicBarri原创 2020-10-02 10:56:20 · 197 阅读 · 0 评论 -
Java-9.28
基础线程机制ExecutorExecutor 管理多个异步任务的执行,而无需程序员显式地管理线程的生命周期。这里的异步是指多个任务的执行互不干扰,不需要进行同步操作。主要有三种 Executor:CachedThreadPool:一个任务创建一个线程;FixedThreadPool:所有任务只能使用固定大小的线程;SingleThreadExecutor:相当于大小为 1 的 FixedThreadPool。...原创 2020-09-28 09:26:56 · 212 阅读 · 0 评论 -
Java-9.26-next
使用线程有三种使用线程的方法:实现 Runnable 接口;实现 Callable 接口;继承 Thread 类。实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通过线程驱动从而执行的。实现 Runnable 接口需要实现接口中的 run() 方法。public class MyRunnable implements Runnable { @Override原创 2020-09-26 16:47:29 · 233 阅读 · 0 评论 -
Java-9.26
容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。Collection原创 2020-09-26 14:30:21 · 98 阅读 · 0 评论 -
Java-9.22
Java 与 C++ 的区别Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持面向过程。Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台。Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。Java 支持自动垃圾回收,而 C++ 需要手动回收。Java 不支持多重继承,只能通过实现多个接口来达到相同目的,而 C++ 支持多重继承。Java 不支持操作符重载,虽然可原创 2020-09-23 12:01:59 · 99 阅读 · 0 评论 -
Java-9.19
异常Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception。其中 Error 用来表示 JVM 无法处理的错误,Exception 分为两种:受检异常 :需要用 try…catch… 语句捕获并进行处理,并且可以从异常中恢复;非受检异常 :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。泛型public class Box<T> { // T stands for原创 2020-09-22 14:11:25 · 474 阅读 · 0 评论 -
Java-9.18
super访问父类的构造函数:可以使用 super() 函数访问父类的构造函数,从而委托父类完成一些初始化的工作。应该注意到,子类一定会调用父类的构造函数来完成初始化工作,一般是调用父类的默认构造函数,如果子类需要调用父类其它构造函数,那么就可以使用 super() 函数。访问父类的成员:如果子类重写了父类的某个方法,可以通过使用 super 关键字来引用父类的方法实现。public class SuperExample { protected int x; protected原创 2020-09-18 10:45:01 · 91 阅读 · 0 评论 -
Java-9.17
Object 通用方法equals()等价关系两个对象具有等价关系,需要满足以下五个条件:Ⅰ 自反性x.equals(x); // trueⅡ 对称性x.equals(y) == y.equals(x); // trueⅢ 传递性if (x.equals(y) && y.equals(z)) x.equals(z); // true;Ⅳ 一致性多次调用 equals() 方法结果不变x.equals(y) == x.equals(y); // tru原创 2020-09-17 16:10:42 · 313 阅读 · 0 评论 -
Java-9.13
## static静态变量静态变量:又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它。静态变量在内存中只存在一份。实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。public class A { private int x; // 实例变量 private static int y; // 静态变量 public static void main(String[] args) {原创 2020-09-17 14:30:20 · 122 阅读 · 0 评论 -
Java-9.11
包装类基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。Integer x = 2; // 装箱 调用了 Integer.valueOf(2)int y = x; // 拆箱 调用了 X.intValue()原创 2020-09-11 14:38:02 · 131 阅读 · 0 评论