Java高级
主要讲解Java高级部分的知识
辰行
热爱编程,主攻java,研究复杂网络
展开
-
详解集合框架
一、集合框架的概述1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储。2.(1)数组在存储多个数据方面的特点:1⃣️一旦初始化以后,其长度就确定了。2⃣️数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。比如:String arr[](2)数组在存储多个数据方面的缺点:1⃣️一旦...原创 2020-05-02 17:57:36 · 237 阅读 · 0 评论 -
详解注解
1.注解的使用示例:(1)示例一:生成文档相关的注解(2)示例二:在编译时进行格式检查(JDK内置的三个基本注解)(3)示例三:跟踪代码依赖性,实现替代配置文件功能2.JDK内置的三个基本注解(1)@Override:限定重写父类方法,该注解只能用于方法interface Info{ void show();}class Person{ private Strin...原创 2020-04-30 20:48:23 · 87 阅读 · 0 评论 -
详解枚举类
一、枚举类的基本介绍1.类的对象只有有限个,确定的。我们称此类为枚举类2.当需要定义一组常量时,强烈建议使用枚举类。3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。二、如何自定义枚举类1.方式一:jdk5.0之前,自定义枚举类(1)public class SeasonTest { public static void main(String[] args){ ...原创 2020-04-30 18:16:21 · 1673 阅读 · 0 评论 -
详解Java比较器
一、Comparable接口的使用1.像String、包装类等实现了Compare接口,重写了compareTo()方法,给出了比较两个对象大小的方法。2.像String、包装类重写compareTo方法以后,进行了从小到大的排列。3.重写compareTo()的规则:如果当前对象this大于形参对象obj,则返回正整数;如果当前对象this小于形参对象obj,则负整数;如果当前对象this...原创 2020-04-30 16:45:41 · 146 阅读 · 0 评论 -
详解Instant类
1.Instant类类似于java.util.Date类2.public static void main(String[] args){ //获取本初子午线标准时间 Instant instant=Instant.now(); System.out.println(instant);//与东八区时间相差8小时 //添加时间的偏移...原创 2020-04-30 12:18:11 · 2660 阅读 · 0 评论 -
详解LocalDate、LocalTime、LocalDateTime
1.now():获取当前的日期、时间、日期+时间import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;public static void main(String[] args){ LocalDate localDate=LocalDate.now(); ...原创 2020-04-30 11:01:08 · 529 阅读 · 0 评论 -
详解Calendar日历类
1.Calendar日历类是抽象类2.Calendar日历类的实例化方式一:创建其子类(GregorianCalendar)的对象。方式二:调用其静态方法getInstance()import java.util.Calendar;public static void main(String[] args){ Calendar calendar=Calendar.getI...原创 2020-04-29 20:13:48 · 375 阅读 · 0 评论 -
详解SimpleDateFormat
1.SimpleDateFormat是对日期Date类对格式化和解析2.两个操作(1)格式化:日期—>字符串(2)解析:格式化对逆过程,字符串—>日期日期和时间模式结果“yyyy.MM.dd G ‘at’ HH:mm:ss z”2001.07.04 AD at 12:08:56 PDT“EEE, MMM d, ''yy”Wed, Jul 4, '0...原创 2020-04-29 19:49:54 · 8888 阅读 · 0 评论 -
详解Java中两个Date类
1.Java中两个Date类的使用(1)java.util.Date类1⃣️两个构造器的使用Date date=new Date();//创建一个对应当前时间的Date对象Date date1=new Date(1588066475111L);//创建指定毫秒数的Date对象2⃣️两个方法的使用toString()//显示当前的年、月、日、时、分、秒getTime()//获取当...原创 2020-04-28 17:55:50 · 543 阅读 · 0 评论 -
System类中获取时间戳的方法
//1.System类中的currentTimeMillis()s long time=System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。 //称为时间戳 System.out.println(time);...原创 2020-04-28 17:48:26 · 912 阅读 · 0 评论 -
详解线程的通信
1.引例:使用两个线程打印1-100.线程1,线程2交替打印。(1)涉及到到三个方法:1⃣️notifyall():唤起多个被wait()的线程。2⃣️notify():唤起被wait()的一个优先级高的线程。3⃣️wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。public class CommunicationTest { public static ...原创 2020-04-26 16:29:27 · 115 阅读 · 0 评论 -
sleep()和wait()的简单比较
1.相同点:一旦执行,都可以是的当前的线程进入阻塞状态。2.不同点:1⃣️两个方法声明的位置不同:Thread类中声明sleep(),Object类中声明wait()。2⃣️调用的要求不一样:sleep()可以在任何需要的场景下使用,wait()方法必须使用在同步代码块或同步方法中。3⃣️关于是否释放同步监视器的问题:如果两个方法都使用在同步代码块或同步方法中,sleep()不会释放,wa...原创 2020-04-26 15:39:34 · 114 阅读 · 0 评论 -
线程的同步案例
1.银行有一个账户,有两个储户分别向同一个账户存3000元,存3次。每次存完打印账户余额。public class AccountTest { public static void main(String[] args){ Account acct=new Account(1000); Customer c1=new Customer(acct); ...原创 2020-04-26 11:57:56 · 117 阅读 · 0 评论 -
详解Lock锁方式解决线程安全问题
1.步骤:1⃣️实例化ReentrantLockprivate ReentrantLock lock=new ReentrantLock(true);如果不加true,则默认为false2⃣️调用Lock()方法 lock.lock();3⃣️调用解锁的方法lock.unlock();举例:public class LockTest { public static ...原创 2020-04-26 11:33:08 · 657 阅读 · 0 评论 -
详解线程的死锁问题
一、死锁的介绍1.不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。2.出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续。...原创 2020-04-26 11:04:01 · 89 阅读 · 0 评论 -
详解线程安全的单例模式之懒汉式
一、1.使用同步机制将单例模式中的懒汉式该写为线程安全的public class BankTest { public static void main(String[] args){ }}class Bank{ private Bank(){ } private static Bank instance=null; public s...原创 2020-04-25 16:33:53 · 135 阅读 · 1 评论 -
详解线程的安全问题
一、问题的提出:1.多个线程执行的不确定性引起执行结果的不稳定。2。多个线程对账本的共享,会造成操作的不完整性,会破坏数据。二、线程安全问题举例:1.在详解线程的创建一问中遗留的卖票问题。...原创 2020-04-25 16:09:50 · 134 阅读 · 0 评论 -
详解线程的生命周期
1.java使用Thread类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态:1⃣️新建:当一个Thread类或其子类对象被声明并创建时,新生的线程对象处于新建状态。2⃣️就绪:处于新建状态的线程被start()后,将进入线程列队等待cpu时间片,此时它已具备了运行的条件,只是没有分配到cpu资源。3⃣️运行:当就绪的线程被调度并获得cpu资源时,便进入运行状态...原创 2020-04-24 16:21:56 · 256 阅读 · 0 评论 -
详解线程的创建和使用
1.Java的JVM允许程序运行多个线程,通过创建java.lang.Thread类来体现。2.多线程多创建:(1)方法一:继承于Thread类1⃣️创建一个继承于Thread类的子类。2⃣️重写Thread类的run()。---->将此线程执行的操作声明在run()中3⃣️创建Thread类的子对象。4⃣️通过此对象调用start()。public class ThreadT...原创 2020-04-23 18:41:26 · 347 阅读 · 0 评论 -
详解线程的调度
1.高优先级的线程抢占CPU。2.Java的调度方法:1⃣️同优先级线程组成先进先出列队(先到先服务),使用时间片策略。2⃣️对高优先级,使用优先调度的抢占式策略。3.线程的优先级:Max_PRIORITY:10Min_PRIORITY:1NORM_PRIORITY:54.如何获取和设置当前线程的优先级::1⃣️getPriority():返回线程的优先值。2⃣️setPrio...原创 2020-04-23 17:37:23 · 189 阅读 · 0 评论 -
并行与并发概念
1.并行:多个cpu同时执行多个任务。2.并发:一个cpu(采用时间片)同时执行多个任务。原创 2020-04-22 19:44:28 · 95 阅读 · 0 评论 -
程序、线程、进程的概念
1.程序:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。2.进程:是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——声明周期1⃣️程序是静态的,进程是动态的。2⃣️进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域。3.线程:进程可以进一步细化为线程,是一个程序内部的一条执行路径。1⃣️...原创 2020-04-22 18:52:18 · 178 阅读 · 0 评论