JavaSE部分
本专栏主要讲解JavaSE的基础知识,及其内存结构等
Pointer-faker
宝藏男孩一枚,关注收藏,技术栈持续更新
展开
-
Java注解与反射——框架底层的实现与类加载器工作内存分析
42.注解与反射注解与反射是所有框架的底层,所以非常重要mybatis,spring,springboot都脱离不了干系1.什么是注解?Annotation是jdk5.0开始引入的新技术Annotation的作用:不是程序本身,可以对程序进行解释。可以被其他程序所读取(比如,编译器等)Annotation的格式:注解是以@注解名在代码中存在的,还可以添加一些参数类型,例如,@SupperWarning(value=“unchecked”)Annotation在哪里使用?原创 2020-08-05 21:50:09 · 252 阅读 · 0 评论 -
JavaGUI编程——及贪吃蛇游戏实战
GUI编程GUI:Graphical User Interface 又称图形用户接口Java不适合做界面设计不过 Java自己都放弃GUI了,所以了解篇,你懂的GUI怎么玩?组件:窗体弹窗面板文本框列表框按钮菜单栏表格等事件监听鼠标事件键盘事件窗口事件1.简介GUI核心 : Swing , AWT问什么学?GUI是MVC架构的基础可以用来开发一些小工具2.1AWT2.2.认识第一个窗体package com.gui.demo;imp原创 2020-08-04 22:05:55 · 469 阅读 · 0 评论 -
Java网络编程——TCP、UDP必修篇
40.网络编程计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。如何准确的定位到网络上的一台计算机ip:192.168.16.103:端口 , 定位到具体的某个资源连接上主机之后如何进行数据传输呢?网络通信的要素通信双方的地址ip端口号IP分类IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任原创 2020-08-03 18:15:50 · 581 阅读 · 0 评论 -
Java多线程——线程池及多线程章节总结
线程池线程经常创建销毁会消耗大量的系统资源,比如并发情况下的线程,对性能影响很大。思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完又放回池子中,可以避免频繁的创建销毁、实现了重复利用。类似于公共交通工具。好处:提高响应速度降低资源消耗便于线程管理corePoolSize:核心池的大小maximumPoolSize:最大线程数keepAliveTime:线程没有任务时最长保持多长时间后会终止JDK1.5起提供了线程池相关API:EXecutorService和E原创 2020-08-02 21:47:15 · 237 阅读 · 0 评论 -
Java多线程——线程协助之生产者消费者问题&程管法&信号灯法
线程协助生产者消费者模式(非设计模式)Object 提供的几个方法方法作用wait()表示线程一直等待,直到其他线程通知,与sleep不同,会释放锁wait(long timeout)等待指定毫秒数notify()唤醒一个正在等待的线程notifyAll()唤醒同一个对象上所有调用wait方法的线程,优先级别高的线程先调度生产者将生产好的数据放入缓冲区,消费者从缓冲区拿出数据(管程法)信号灯法生产消费问题(管程法)packa原创 2020-08-02 20:59:20 · 294 阅读 · 0 评论 -
Java多线程——隐式锁synchronized与显示锁Lock之间的选择
锁对象除了synchronized 隐式锁之外,JDK还提供了Lock显示锁,显示所需要我们手动上锁、解锁,性能更加高效,并具有良好的可扩展性,但是Lock锁只能锁代码块却不能对方法上锁。JDK1.5之后增加的Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition 。锁是用于通过多个线程控制对共享资源的访问的工具。 通常,锁提供对共享资源的独占访问:一次只能有一个线原创 2020-08-02 17:25:12 · 210 阅读 · 0 评论 -
Java IO流 ——转换流&管道流&打印流&缓冲流(文件拷贝案例,打印流——装饰者模式)
转换流(了解)整体继承关系package com.io.demo;import java.io.*;public class Demo5 { public static void main(String[] args) { File file = new File("D:\\Javaproject\\test\\b.txt");//创建文件对象 if (!file.exists()) {// 判断文件是否存在 file.原创 2020-08-02 16:54:35 · 364 阅读 · 0 评论 -
Java多线程——线程安全问题与线程同步&死锁
线程安全问题买火车票问题package com.thread.demo;public class Demo3 implements Runnable {/* 买火车票问题* 多个线程操作同一个资源时,出现线程安全问题,发生数据紊乱* */ private int ticketNums = 10; @Override public void run() { while (true) { if (ticketNums <原创 2020-08-02 16:48:49 · 246 阅读 · 0 评论 -
Java多线程——线程优先级与守护线程
线程优先级Modifier and TypeField and Descriptionstatic intMAX_PRIORITY线程可以拥有的最大优先级。1static intMIN_PRIORITY线程可以拥有的最小优先级。5static intNORM_PRIORITY分配给线程的默认优先级。10可以通过 setPriority 来设定优先级1~10可以通过getPriority 来获取线程优先级package com.thread.demo;原创 2020-08-02 16:47:17 · 241 阅读 · 0 评论 -
Java多线程——线程的状态&休眠、礼让与插队(延时的意义与倒计时模拟)
线程的状态方法解析setPriority(int newPriority)更改线程优先级static void sleep(long millis)让指定线程休眠指定的毫秒数void join()等待线程结束static void yield()暂停当前正在执行的线程对象,并执行其他线程void interrupt()中断线程(不推荐使用)boolean isAlive()测试线程是否处于活动状态让线程停止package com.t原创 2020-08-02 16:46:13 · 443 阅读 · 0 评论 -
Java多线程——静态代理(代理模式)& Lambda表达式
静态代理代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。介绍**意图:**为其他对象提供一种代理以控制对这个对象的访问。**主要解决:**在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在原创 2020-08-02 16:43:01 · 263 阅读 · 0 评论 -
Java多线程——多线程的三种实现方式
39.多线程线程简介任务,进程,线程,多线程进程:程序是指令和数据的集合,其本身没有任何运行的含义,是一个静态的概念,当程序载入内存开始运行,这是程序的执行过程就是一个进程,它是一个动态的概念,是系统分配资源的单位通常一个进程中会包含有若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义,线程是CPU调度和执行的单位。注意:很多多线程是模拟出来的,其本身并不是多个任务同时在执行,真正的多线程,是指有多个CPU即多核,如服务器,如果是模拟出来的多线程,在同一个时间点,C原创 2020-08-02 16:40:38 · 309 阅读 · 0 评论 -
Java IO流——字节流与字符流本质与区别及类继承关系
38.IO流File类回顾exists() 判断文件路径是否存在且有效mkdirs() 创建文件夹createNewFile() 创建文件file.canExecute() 判断是否可执行canWrite() 判断是否可以写入canRead() 判断是否可以读取isHidden() 判断是否是隐藏文件package com.File.demo;import java.io.File;import java.io.IOException;public class Demo7原创 2020-08-01 22:11:19 · 720 阅读 · 0 评论 -
集合框架——Colletions工具类,集合总结(完结)
Colletions工具类概念:集合工具类,定义了除了存取以外的集合常用方法。此类仅由静态方法组合或返回集合。它包含对集合进行操作的多态算法,“包装器”,返回由指定集合支持的新集合,以及其他一些可能的和最终的。如果提供给它们的集合或类对象为null,则此类的方法都抛出一个NullPointerException 。该类中包含的多态算法的文档通常包括实现的简要说明 。 这些描述应被视为实施说明 ,而不是说明书的一部分 。 只要规范本身得到遵守,实现者就可以随意替代其他算法。 (例如,sort使原创 2020-07-30 22:40:55 · 262 阅读 · 0 评论 -
集合框架——Map体系集合,Map接口及其实现类
Map体系集合Map接口特点:用于存储任意键值对(Key-Value)键:无序、无下标、不允许重复(唯一)值:无序、无下标、允许重复方法:V put(K key, V value) //将指定的值与该映射中的指定键相关联(可选操作)。Object get (Object key) //返回到指定键所映射的值,或 null如果此映射包含该键的映射。Set<K> KeySet( )//返回此地图中包含的键的Set视图。Collection<V>原创 2020-07-30 20:10:36 · 219 阅读 · 0 评论 -
集合框架——Set集合的使用与数据结构详解
Set集合特点:无序,无下标,元素不可重复方法:全部继承自Collection中的方法不包含重复元素的集合。更正式地,集合不包含一对元素e1和e2 ,使得e1.equals(e2) ,并且最多一个空元素。正如其名称所暗示的那样,这个接口模拟了数学集抽象。Set接口除了继承自Collection接口的所有构造函数的合同以及add,equals和hashCode方法的合同外 , 还 增加了其他规定。 其他继承方法的声明也包括在这里以方便。 (伴随这些声明的规范已经量身定做Set接口,但它们不包原创 2020-07-30 16:56:45 · 1916 阅读 · 0 评论 -
泛型的几种用法与集合安全问题
泛型Java泛型是JDK1.5中引入的新特性,其本质就是参数化类型,把类型作为参数进行传递。常见形式有泛型、泛型接口,泛型方法。语法** <T…>** T成为占位符,表示一种引用类型好处提高代码的重用性防止类型转换异常,提高代码的安全性泛型类泛型类:语法:类名 <T>T是类型占位符,表示一种引用类型,如果编写多个使用逗号隔开泛型只能是引用类型不同泛型类型对象之间不能相互复制package com.list.demo.generic;原创 2020-07-30 13:37:15 · 210 阅读 · 0 评论 -
集合框架——List子接口及其实现类,具体用法与源码分析
List子接口特点:有序,有下标,元素可重复。方法:add(int index, E element) //将指定的元素插入此列表中的指定位置(可选操作)。indexOf(Object o) //返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。lastIndexOf([Object o) //返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。listIterator() //返回列表中的列表迭代器(按适当的顺序)。addAll(int原创 2020-07-30 11:41:48 · 213 阅读 · 0 评论 -
集合框架——Collection体系集合
37.集合框架集合的概念:对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的功能。集合和数组的区别:数组的长度是固定的,集合的长度不固定数组可以存储基本数据类型和引用数据类型,集合只能存储引用数据类型所有的集合的包都在java.util包下,可以通过 java.util.* 进行导入Collection体系集合List接口特点有序 ,有下标, 元素可重复Set接口特点 无序,无下标 ,元素不能重复Collection父接口集合层次结构中的根界面 。原创 2020-07-29 23:53:44 · 308 阅读 · 0 评论 -
String类——主要常用方法解析
36.String类字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。String类位于Java.lang包下,无序导入以下是String类的一些常用方法equals(“这是一个字符串”) 比较两个字符串,split(“分隔依据”) 分割字符串,charAt(1) 索引取值,codePointAt(1)获取指定索引的Unicode码,replace(“老”, “新”),**replaceAll(“个”, “”)**支持正则匹配原创 2020-07-29 21:51:46 · 289 阅读 · 0 评论 -
Java常用类——File文件处理相关
3.文件处理File类java.io.File类:文件和目录路径名的抽象类表示形式通过File对象可以访问文件的属性isFile() 判断是否为文件,file.isDirectory() 判断是否为文件夹package com.File.demo;import java.io.File;public class Demo1 { public static void main(String[] args) { File file = new File("D:\\Ja原创 2020-07-29 20:46:53 · 251 阅读 · 0 评论 -
Java常用类——时间处理相关类
2.时间处理相关类时间处理的相关类主要在Java.util包中其中Date类为核心 ,Calendar为日期计算首选Date 时间类计算机中的时间是如何计算的?日历时间:有些书上又叫系统时间。该值是自1970年1月1日00:00:00以来国际标准时间(U T C)所经过的秒数累计值(早期的手册称U T C为格林尼治标准时间)。在PC/AT微机系统中,支撑该时间的硬件是实时钟RT(Real Time)电路。操作系统在系统初始化的过程中,会从该电路中读取该时间,并保存在内核变量中原创 2020-07-29 18:42:19 · 354 阅读 · 0 评论 -
Java常用类——包装类
35.Java常用类1.包装类(Wrapper Class)Java并不是纯面向对象的语言,Java是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的!但是在我们的实际生活使用中,经常需要将基本数据转化为对象,便于操作。包装类均位于 Java.lang 包中包装类和基本数据类型的对应关系基本数据类型包装类byteBytebooleanBooleanshortShortcharCharacterintInteger原创 2020-07-29 18:38:51 · 179 阅读 · 0 评论 -
Java的异常机制与自定义异常类
33.Java的异常机制什么是异常,实际工作中,遇到的情况不是完美的,例如:我们在开发时希望用户输入一个数字,结果用户输入了一个字符串;又或者当我们去打开某些并不存在的文件,读取不存在的数据等待。英文 Exception,当遇到这些特殊情况是给予其合理的解决方案,而不至于导致程序崩溃异常三大类检查异常:最经典的是用户错误或问题所引起异常,这是程序员无法预见的,例如要读取某个文件,这个文件被用户删掉了,这些异常编译时不能被简单的忽略运行时的异常:运行时异常是可能被程序员避免的异常,这类异常编译时原创 2020-07-28 23:42:27 · 222 阅读 · 0 评论 -
Java中多种不同的内部类
32.多种内部类成员内部类在类里边嵌套定义一个类,这个内部的类我们就称其为成员内部类package com.inner.demo;public class Outer { private int age = 10; public void out() { System.out.println("外部类"); } class Inner { public void in() { System.ou原创 2020-07-28 19:10:52 · 252 阅读 · 0 评论 -
Java抽象类与接口差异与规范
30.抽象类用 abstract关键字修饰的类就是抽象类用 abstract关键字修饰的方法叫抽象方法,抽象方法没有方法体抽象类只是一种约束,继承它的类必须重写他的全部抽象方法,除非继承它的类也是一个抽象类抽象类不能被new关键字所创建出实例抽象方法只能存在于抽象类中,抽象类中可以存在普通方法抽象类命名规范:抽象类命名使用 Abstract 或 Base 开头package com.Interface.demo.Abstract;public abstract class Abstra原创 2020-07-28 18:39:37 · 325 阅读 · 0 评论 -
static关键字解析,还能这样玩你知道吗?
29.static关键字详解Static 声明静态的关键字在声明之后就直接与类挂钩可以通过 类名.属性 或 类名.方法的方式访问而且Static修饰的属性或方法跟类同时加载package com.Interface.demo.Static;public class Demo1 { String a = "你好"; static String b = "静态"; {// 匿名代码块,不推荐使用 //类加载完后加载原创 2020-07-28 17:23:41 · 149 阅读 · 0 评论 -
Java面向对象编程,看这一个就够了
28.面向对象编程面向过程思想步骤简单清晰,第一步做什么,第二步做什么…面向过程适合处理一些较为简单的问题面向对象的思想物以类聚,分类思维模式,思考问题首先解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向过程适合处理复杂的问题,适合处理需要多人协作的问题!什么是面向对象面向对象编程(Object-Oriented Programming.)面向对象编程的本质就是:以类的方式组织代码,以对象组织(封装)数据抽象三大特性原创 2020-07-28 16:51:28 · 182 阅读 · 0 评论 -
稀疏数组——压缩数组空间
27.稀疏数组在多维数组中可能会存在大量空间存储无效数值的现象为了节省空间,我们可以通过记录 行 ,列,值的方式,来压缩数组空间这样形成的新数组我们称之为稀疏数组如图18×18的棋盘,[1][2] -----> 1, [2][3]----> 2 ,其余位置都为0,用代码来压缩数组成稀疏数组package com.demo.array;public class Demo5 { public static void main(String[] arg原创 2020-07-27 23:09:28 · 403 阅读 · 0 评论 -
Arrays类的使用与冒泡排序
25.Arrays类数组工具类java.util.Arrays由于在Java中数组,自己本身没有方法可以供我们调用,但API中给我们提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。可以查看JDK8 api 帮助文档,来了解package com.demo.Arrays$;import java.util.Arrays;public class Demo1 { public static void main(String[] args) {原创 2020-07-27 21:58:08 · 257 阅读 · 0 评论 -
数组及其内存分析,多维数组的本质
24.数组数组是相同数据类型的有序集合数组的每个元素可以通过他们的下标来访问它们package com.demo.array;import java.lang.reflect.Array;public class Demo1 { public static void main(String[] args) { /* * 定义一个数组, * 数据类型[] 数组名 = {元素0,元素1,元素2,...}; * 数据类原创 2020-07-27 20:36:06 · 249 阅读 · 0 评论 -
方法基础知识——方法重载,可变参数与递归调用
23.什么是方法?System.out.print(),是什么?System —> 类out -----> 对象print() ----->方法方法是实现某一功能的代码块集合。方法包含与类或对象中方法再程序中被创建,在其他地方被引用方法设计原则方法是实现功能的代码块遵循原子性原则,一个方法只实现一个功能,这样利于我们后期扩展方法的命名规则?lowerCamelCase 风格 例子:addItem(), upd原创 2020-07-27 18:06:57 · 217 阅读 · 0 评论 -
Java中的各种循环语句解析与案例
22.循环语句while循环while循环时最基本的循环结构while(布尔表达式){ //循环执行语句}大部分的while循环我们都会让它停下来,只有部分情况我们会让循环一直执行,例如:服务器响应监听,事件监听等。我们正常的业务逻辑编程中应该尽量避免死循环,会降低程序的性能或者造成程序卡死崩溃package com.demo.Cycle;public class Demo1 { public static void main(String[] args) {原创 2020-07-27 15:20:22 · 741 阅读 · 0 评论 -
Java中的分支控制结构
20.顺序结构Java最基本的结构就是顺序结构,除非特别指明,否则就是按顺序一句一句往下执行顺序结构是最简单的算法结构21.选择结构if单选择结构package com.demo.branch;import java.util.Scanner;public class Demo1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);原创 2020-07-27 14:30:24 · 328 阅读 · 0 评论 -
Scanner类扫描器基本用法
19.Scanner对象java.util.Scanner 是Java5的新特性我们可以通过Scanner来获取用户的输入基本语法Scanner sc = new Scanner(System.in);通过Scanner类的next(),nextLine()方法可以获取用户输入的字符串,一般我们要用hasNext(),hasNextLine()方法来判断是否有输入数据next()方法以空白为结束符,不可以获取空白的字符串package com.demo.scan;import j原创 2020-07-27 11:56:06 · 1024 阅读 · 0 评论 -
包机制与JavaDoc生成api文档及IDEA中生成api文档相关
17.包机制为了更好的组织类,Java提供了包机制,用于区分类名的命名空间包语句的语法格式为package pk1.pk2[.pk3[.pk4]];一般利用公司域名倒置作为包名,例:www.baidu.com --> com.baidu.www, com.baidu.baike18.JavaDocjavadoc 标签javadoc 工具软件识别以下标签:标签描述示例@author标识一个类的作者@author description@dep原创 2020-07-27 00:42:56 · 282 阅读 · 0 评论 -
Java的运算符基础知识与扩展
16.运算符算术运算符 +,-,*,/,%,++,–赋值运算符 =关系运算符(比较运算符)>, >=, <=, <, ==, != ,instancof逻辑运算符 &&, ||, !位运算符 & , | , ^ , ~, >> , <<, >>> (了解!!)条件运算符 ?:扩展赋值运算符 += , -= ,*= , /=package operator;public class Demo1原创 2020-07-26 23:13:43 · 205 阅读 · 0 评论 -
变量类型及其作用域,常量的命名与使用
14.变量变量是什么?可以变化的量Java是强制类型的语言,每个变量都需要先声明其类型Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 // 数据类型 变量名 = 值; 可以用逗号隔开来声明多个同类型变量,但是不建议这样做!!注意事项:每个变量都有其数据类型,它可以是基本数据类型,也可以是引用数据类型变量名必须是合法的表示符变量声明是一条完整的语句,因此每一个声明都需要以分号结束 public class Demo8 {原创 2020-07-26 21:27:56 · 239 阅读 · 0 评论 -
Java类型转化与内存溢出问题
13.类型转换由于Java是强类型语言,所以在有些运算中会用到类型转换容量排序低 ----------------------------------------------------------------------->高byte,short,char --> int —> long ----> float —> doublepublic class Demo6 { public static void main(String[] args原创 2020-07-26 20:21:24 · 316 阅读 · 0 评论 -
Java数据类型与面试问题扩展
12.数据类型强类型语言(Java , C , C++)要求变量的使用必须要严格符合规定,所有的变量要先声明才能使用弱类型语言( JavaScript)Java的数据类型基本数据类型引用数据类型一个字节8bit , 8位2进制数整数类型byte 占用1个字节,范围: -128~127short 占用2个字节,范围: -32768~32767int 占用4个字节,范围:-2147483648~2147483647long 占用8个字节,范围:-922337原创 2020-07-26 18:31:28 · 219 阅读 · 0 评论