Java笔记
Java笔记
DeMonnnnnn
I decide what tide to bring. 我的命运,由我做主。
展开
-
Java格式化占位符
【代码】Java格式化占位符。原创 2023-08-07 12:30:29 · 384 阅读 · 0 评论 -
设计模式之:工厂模式
工厂模式 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。 情景模拟+代码实现现在有两款汽车原创 2017-08-30 15:57:10 · 690 阅读 · 0 评论 -
设计模式之:单例模式
定义与要素:定义: 确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。要素:私有的构造方法指向自己实例的私有静态引用以自己实例为返回值的静态的公有的方法饿汉式与懒汉式单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。饿汉式单例在单例类被加载时候,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法的时候才会实例化对象。懒汉式(线程安全版)等到原创 2017-04-17 23:52:51 · 655 阅读 · 0 评论 -
Java 文本与二进制I/O总结
文本I/O与二进制I/O二进制I/O不涉及编码和解码,因此更高效。 文本I/O建立在二进制I/O的基础之上,它提供一层抽象,用于字符层次自动进行的编码和解码。 Java的类文件存储为二进制文件。因为二进制文件与主机编码方案无关,可移植,在任何机器上的Java程序可以读取Java程序创建的二进制文件。流流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字原创 2017-04-16 23:03:04 · 2384 阅读 · 0 评论 -
Java基于TCP/IP协议的Socket网络通信详解
TCP/IPTCP/IP是一种可靠的网络协议,在通信两端个简历一个Socket,形成虚拟链路,进行通信。 通信端通过Socket产生I/O流来进行网络通信。 特点IP协议负责传递消息,TCP提供可靠的无差错的通信服务。TCP协议是一种端对端协议。链接两个通信端,建立用于发送和接收数据的虚拟链路。TCP负责接收IP协议传送的信息包,按次序放好,接收端接收后正还原。保证了数据包在传送中准确无误原创 2017-05-08 16:32:51 · 4070 阅读 · 0 评论 -
Java的goto:标签+break/continue
gotogoto起源于汇编,用于A成立则跳转到B。 goto是Java中的保留字,但Java并未使用。Java使用标签+break/continue,实现goto操作。 代码public class Goto { public static void main(String[] args) { int sum; outer://外部循环标签原创 2017-07-10 23:27:40 · 1105 阅读 · 0 评论 -
Java清理:垃圾回收
finalize()方法工作原理一旦垃圾回收器准备好释放对象占用的存储空吗好考吗,首先调用finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象的内存。要点对象可能不被垃圾回收。垃圾回收不等于析构。(C++中销毁对象必须使用析构函数,且对象一定会被销毁。)垃圾回收只与内存有关。垃圾回收器存储空间的释放会影响存储空间的分配—-某些Java虚拟机的工作方式。引用计数器每个对原创 2017-07-12 23:51:26 · 1065 阅读 · 0 评论 -
Java list.remove( )方法需要注意的两个地方
list.remove最近做项目的过程中,需要用到list.remove()方法,结果发现两个有趣的坑,经过分析后找到原因,记录一下跟大家分享一下。代码直接上一段代码,进行分析。public class Main { public static void main(String[] args) { List<String> stringList = new ArrayList<原创 2017-07-13 14:41:48 · 103503 阅读 · 13 评论 -
Java 反射机制学习笔记
概念JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 反射是Java中一种强大的工具,能够使我们很方便的创建原创 2017-08-22 13:16:13 · 682 阅读 · 0 评论 -
Java 按位操作运算符
按位操作符Java中所有的按位操作符,都是在二进制上进行操作的,而且是有符号数。 操作符 说明 << 逻辑左移运算符 (>>) 逻辑右移运算符 ~ 按位取反运算符 & 逻辑与运算符 ^ 异或运算符 I 逻辑或运算符测试代码public class Test { public static void main(String[] args)原创 2017-08-31 10:52:56 · 669 阅读 · 0 评论 -
Java 面试题笔记
前沿记录自己面试过程中遇到的Java相关面试题。欢迎大家前来交流!2017.09.24 1.如何实现一个int型整数乘8?1.int y = x * 8;2. int y = x << 3;(逻辑左移,8 = 2的3次方)这种题一问出来就知道是陷阱。事实上在大数字方面的计算左移的效率要比直接乘高很多。 2.Java的三大特性?1.封装:把对象的属性和操作(或服务)结合为一个独立的整原创 2017-09-24 17:17:46 · 665 阅读 · 0 评论 -
Java(仿QQ/微信聊天)的时间格式方法
前言业务需求:需要根据时间戳或者日期,将时间显示的像QQ/微信聊天那样。 具体效果请自行查看QQ/微信。代码如下import java.text.SimpleDateFormat;import java.util.Date;/** * Created by DeMon on 2017/12/8. */public class TimeUtil { /** * 日期格式化原创 2017-12-08 16:12:00 · 5597 阅读 · 6 评论 -
Java 浮点数运算不准确的原因及解决方案
前言问题执行如下代码,你觉得会打印出什么结果? System.out.println(0.1 + 0.2); System.out.println(0.2 - 0.1); System.out.println(0.1 * 0.2); System.out.println(0.2 / 0.1); S...原创 2018-11-28 16:07:00 · 13145 阅读 · 0 评论 -
Java并发ThreadPoolExecutor+BlockingQueue使用详解
前言从Java线程池及用法 一文中我们知道,Java提供了4个常用的线程池。但是在如下场景的的时候,就需要我们使用自定义ThreadPoolExecutor和BlockingQueue队列结合使用来处理。需要的子线程数量很多,但是数量不确定。子线程有自己的优先级,根据优先级来确定执行的先后顺序。监听线程池的开始,结束,关闭等状态。ThreadPoolExecutor构造方法//使...原创 2019-01-14 15:16:14 · 4616 阅读 · 3 评论 -
Java short[]与byte[]互转
/** * byte数组转short数组 * * @param src * @return */ private short[] toShortArray(byte[] src) { int count = src.length >> 1; short[] dest = new s...原创 2019-07-10 11:47:24 · 1466 阅读 · 0 评论 -
Java 判断某个时间是否在条件时间之内
判断某个时间是否是在条件时间的n天之内正数表示在条件时间n天之后,负数表示在条件时间n天之前 /** * 判断time是否在now的n天之内 * @param time * @param now * @param n 正数表示在条件时间n天之后,负数表示在条件时间n天之前 * @return */ public static原创 2017-03-16 15:33:32 · 23049 阅读 · 1 评论 -
Java字符串类
StringString对象是不可改变的,字符串一旦创建,内容就帮你再改变。 Stringbianlcunchu的是对String的引用,String对象里存储的才是字符串的内容。 String s = "Java";s = "hello";思考:以上代码改变字符串的内容了吗? 尽管打印s的结果是”hello”,但是答案是否定的。 因为第一条语句创建”Java”的对象,第二条创建”hell原创 2017-04-18 23:03:09 · 1183 阅读 · 0 评论 -
Java Date与String的相互转换
1.String转为Date参数String类型的格式必须与注释中的日期格式对齐,否则会报错。 public static Date stringToDate(String time) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd");//日期格式 Date date = null;原创 2017-03-16 14:54:37 · 33970 阅读 · 2 评论 -
Java Calendar日历与Date日期的相互转换
Calendar转化为Data返回标准化的Date public static Date calendarToData(int year, int month, int day) { Calendar calendar = Calendar.getInstance();//日历类的实例化 calendar.set(year, month - 1, day);//设置日原创 2017-03-16 15:12:51 · 49585 阅读 · 4 评论 -
Java线程池及用法
线程池:线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;任务队列(taskQueue):用于存放没有处理的原创 2017-04-17 21:13:19 · 640 阅读 · 0 评论 -
Java内存管理
JVM回收对象的标准是什么?答:对象是否被引用。也就是说如果对象处于不可到达状态就会被回收掉。(可恢复状态)失去引用的对象怎么变活?答:系统的垃圾回收机制准备回收该对形象的时候之前,系统会调用可恢复状态对象的finalize方法进行资源清理,如果在此让一个以上引用变量引用此对象,那么这个对象又为可达对象。对象引用的分类和区别? 分类 区别 强引用 JVM不会回收强引用所引用的Java对原创 2017-04-17 21:49:08 · 584 阅读 · 0 评论 -
Java线程总结
基础理解线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。内存方面:进程拥有独立的内存单元,而进程内的线程只能共享进程的内存而不独立拥有;资源管理:进程由独立的地址空间,一个进程崩溃后不会对其他进程产生影响,而线程只是一个进程的不同执行路径,有自己的堆原创 2017-04-17 21:14:49 · 693 阅读 · 0 评论 -
Java处理控制台输入的长度可变的数组数据
问题由来Java编程中有的时候我们会在控制台输入长度可变的数组数据(分隔符一致),例如:1 2 3 4 5 6或者1,2,3,4,5,6,7然后对这串未知长度的数据进行处理,得到对应类型的数组。分析1.由于长度可变,所以不能直接用数组去接受,可以用ArrayList存储。 2.控制台输入,可以用Scanner对象的标记读取next()方法进行处理。 3.这里要提一下,默认情况下,Scanner对原创 2017-04-13 14:17:45 · 10185 阅读 · 0 评论 -
JUnit Java单元测试
单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证。 对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类.Demo类public class Divide { public static int divide(int a, int b) { if (b == 0) {原创 2017-04-29 12:56:05 · 873 阅读 · 0 评论 -
Java Comparable接口的使用与自定义实现
Comparable接口Comparable接口是一个泛型接口。Java类库中:Byte,Short,Integer,Long,Float,Double,Character,BigTnteger,BigDecimal,Calendar,String及Data类都实现了Comparable接口。可以直接调用,对于没有实现的类,可以通过接口implements实现。CompareTo方法Java提供Co原创 2017-04-14 14:51:11 · 7424 阅读 · 1 评论 -
Java 对象的比较,多个参数进行排序
模拟处理器进程的实体类import java.io.Serializable;public class ProcessInfo implements Serializable { private int name;//进程标识符 private int status;//进程状态 private int pri;//进程优先数 private int time;//原创 2017-01-16 23:55:00 · 3657 阅读 · 0 评论 -
Java封装,继承和多态总结
三大支柱面向对象程序设计的三大支柱是封装,继承和多态。 封装:把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。public class A { String a; public A(String a) { this.a = a; } public Str原创 2017-04-18 22:17:11 · 1966 阅读 · 0 评论 -
Java关键字总结
this关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法。 隐藏的静态变量可以通过”类.静态变量”来引用,而隐藏的实例变量就需要使用”this.实例变量”来引用。 调用一个重载的构造方法this引用是必须的。 this是个隐式参数,代表当前对象 publie class Student{ private String name; public void s原创 2017-04-16 16:47:47 · 700 阅读 · 0 评论 -
Java异常处理总结
异常的分类Java会将所有的异常封装成对象,其根本父类为Throwable。 Throwable有两个子类:Error 和Exception。 Error一个Error对象表示一个程序错误,指的是底层的低级的不可恢复的严重错误。遇到Error,程序一定会退出,因为已经失去了运行所必须的物理环境。 对于Error我们无法进行处理,因为我们是通过程序来应对错误的,可是程序已经退出了。 Except原创 2017-04-16 23:45:06 · 397 阅读 · 0 评论 -
Java数据类型及大小
基本数据类型 类型 长度 范围 byte(字节型) 1个字节 -128~127 boolean(布尔型) 1个字节 true或false int(整型) 长度:4个字节 -2147483648~2147483647 short(短整型) 2个字节 -32768~32767 long(长整型) 8 个字节 -922337203685原创 2017-04-17 10:32:09 · 6085 阅读 · 0 评论 -
Java程序运行原理
Java的运行流程:java编译器(编译) → 虚拟机(解释执行) → 解释器(翻译) → 机器码ClassLoaderBootstrap ClassLoader:称为启动类加载器,是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,如:rt.jar、resources.jar、charsets.jar等。Extension ClassLoader:称为扩展类加载器,负责加载原创 2017-04-17 13:00:33 · 1837 阅读 · 0 评论 -
Java对象的内存控制
内存分配初始化内存分配—这里指的是JVM为对象在堆内存中分配内存。 每个类对应一个Class对象,但可以创建多个java对象,一个JVM内的一个类的类变量只需一块内存空间存放;对于每次创建实例都会为实例变量分配一块内存空间。先初始化类变量,然后再初始化实例变量 实例变量的初始化时机: 从程序的角度来看,每次创建Java对象都会为实例变量分配内存空间,并对实例变量执行初始化。 从语法的角度来原创 2017-04-17 13:24:10 · 1065 阅读 · 0 评论 -
java List复制:浅拷贝与深拷贝
List浅拷贝众所周知,list本质上是数组,而数组的是以地址的形式进行存储。如上图将list A浅拷贝给list B,由于进行的是浅拷贝,所以直接将A的内容复制给了B,java中相同内容的数组指向同一地址,即进行浅拷贝后A与B指向同一地址。造成的后果就是,改变B的同时也会改变A,因为改变B就是改变B所指向地址的内容,由于A也指向同一地址,所以A与B一起改变。几种浅拷贝1、遍历循环复制List<原创 2017-01-16 12:16:33 · 113127 阅读 · 28 评论