JavaSE
此专栏包含JavaSE的知识点
wenyuerpf
这个作者很懒,什么都没留下…
展开
-
Java8新特性下篇(其他)
Optional类Optional类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。常用方法:Optional.of(T t):创建一个Optional实例Optional.empty():创建一个空的Optional实例Optional.ofNullable...原创 2019-12-28 21:32:18 · 84 阅读 · 0 评论 -
Fork/Join框架
了解Fork/Join框架Fork/Join框架就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不可再拆时),再将一个个小任务运算的结果进行join汇总。Fork/Join框架与传统线程池的区别采用“工作窃取”模式(work-stealing):当执行新的任务时它可以将其拆分分成更小的任务执行,并将小任务加到线程队列中,然后再从一个随机线程的随机线程的队列中偷一个...原创 2019-12-25 16:36:51 · 89 阅读 · 0 评论 -
Java8新特性中篇(Stream流)
了解StreamJava中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是Stream API(java.util.stream.*)。Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。也可以使用Stream API来并...原创 2019-12-25 16:12:25 · 246 阅读 · 0 评论 -
Java8新特性上篇(Lambda表达式)
Java8新特性主要内容1.Lambda 表达式2.函数式接口3.方法引用与构造器引用4.Stream API5.接口中的默认方法与静态方法6.新时间日期API7.其他新特性Java8新特性简介1.速度更快(HashMap和方法区的改变,详细内容在其他博客中)2.代码更少(增加了新的语法Lambda表达式)3.强大的StreamAPI(像sql语句操作数据一样操作数据)4....原创 2019-12-21 22:10:14 · 130 阅读 · 0 评论 -
Java中的一维数组与二维数组
数组概述和定义格式说明1.数组概念数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。2.数组定义格式格式1: 数据类型[] 数组名;格式2: 数据类型 数组名[];举例:int[] a; 定义了一个int类型的数组a;int a[]; 定义了一个int类型的a数组;推荐使用第一种定义方式。数组的初始化动态初...原创 2019-10-10 15:39:58 · 213 阅读 · 0 评论 -
使用循环打印图形
矩形星星( *)图案public class ForDemo { public static void main(String[] args) { /* A: 案例演示 需求:请输出一个4行5列的星星( *)图案。 如图: ***** ***** ***** ***** */ //循环...原创 2019-10-10 14:20:41 · 338 阅读 · 0 评论 -
Java中的循环结构
循环结构概述和for语句的格式及其使用1.什么是循环结构循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环2.循环结构的分类for循环while循环3.循环结构for语句的格式:for(初始化表达式语句;判断条件语句;控...原创 2019-10-01 21:55:17 · 104 阅读 · 0 评论 -
Java中的运算符
Java中的运算符运算符是一种“功能”符号,用以通知 Java 进行相关的运算。Java 语言中常用的运算符可分为如下几种:算术运算符赋值运算符比较运算符逻辑运算符位运算符三目运算符算术运算符的基本用法1.算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。2.算数运算符有哪些注意事项:整数相除只能得到整数。如果想得到小数,请使用浮点数/获取的是除法操...原创 2019-09-30 22:20:03 · 134 阅读 · 0 评论 -
Java中的常量和变量
常量的概述和使用1.什么是常量就是在程序的执行过程中其值不发生改变的量。 2.Java中常量的分类 (1):字面值常量(2):自定义常量3.字面值常量的分类(1): 字符串常量 用双引号括起来的内容 “HelloWorld” ,“Hello”(2): 整数常量 所有整数 12,23(3): 小数常量 所有小数 ...原创 2019-09-30 21:45:47 · 177 阅读 · 0 评论 -
Java中的关键字和标识符
关键字的概述和使用A:什么是关键字就是被java语言赋予特殊含义的单词。B:关键字的特点组成关键的字母都是小写C:常见关键字在JAVA中目前一共有53个关键字:其中由51+2个保留字=53个关键字JAVA的保留关键字(2个)const——常量,常数:用于修改字段或局部变量的声明。goto——转到:指定跳转到标签,找到标签后,程序将处理从下一行开始的命令访问修饰符的关键字(3个...原创 2019-09-30 19:06:56 · 372 阅读 · 0 评论 -
Java线程池(ExecutorService)使用
原文链接:https://blog.csdn.net/wanghao_0206/article/details/76460877一、前提/** * 线程运行demo,运行时打出线程id以及传入线程中参数 */public class ThreadRunner implements Runnable { private final SimpleDateFormat format ...转载 2019-11-28 22:17:13 · 120 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
一、Callable 与 Runnable先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法:public interface Runnable { public abstract void run();}由于run()方法返回值为void类型,所以在执行完任务之后无法返回任何结果。Callable位于java.util.concu...原创 2019-11-28 20:04:16 · 126 阅读 · 1 评论 -
HashMap源码学习
一、HashMap概述在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。下图中代表jdk1.8之前的hash...原创 2019-11-15 22:33:03 · 50 阅读 · 0 评论 -
ArrayList源码学习
package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;import sun.misc.SharedSecrets;public class ArrayList<E> ex...原创 2019-11-07 18:18:46 · 83 阅读 · 0 评论 -
java中的枚举类型
概述枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。枚举的定义//使用普通方式定义常量public class DayDemo { public static final int MONDAY =1; public st...原创 2019-12-19 21:30:57 · 97 阅读 · 0 评论 -
java中的序列化与反序列化
概述序列化 由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化。反序列化 反序列化恰恰是序列化的反向操作,也就是说,把已存在在磁盘或者其他介质中的对象,反序列化(读取)到内存中,以便后续操作,而这个过程就叫做反序列化。 概括性来说序列化是指将对象实例的状态存储到存储媒体(磁盘或者其他介质)的过...原创 2019-12-19 20:22:13 · 108 阅读 · 0 评论 -
java中的注解
什么是注解Annotation的作用 :不是程序本身 , 可以对程序作出解释.(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取Annotation的格式 :注解是以"@注释名"在代码中存在的 , 还可以添加一些参数值 , 例 如:@SuppressWarnings(value=“unchecked”).Annotation在哪里使用?可以附加在pack...原创 2019-12-12 21:21:56 · 72 阅读 · 0 评论 -
java实现UDP多线程在线咨询
网络编程IPpackage com.kuang.lesson01;import java.net.InetAddress;import java.net.UnknownHostException;//测试IPpublic class TestInetAddress { public static void main(String[] args) { try ...原创 2019-12-05 22:49:13 · 171 阅读 · 0 评论 -
java实现贪吃蛇小游戏
一、主函数import javax.swing.*;import java.awt.*;public class startGame { public static void main(String[] args) { //游戏窗口 JFrame jFrame = new JFrame("文玉的贪吃蛇小游戏"); Container ...原创 2019-12-05 22:37:46 · 145 阅读 · 0 评论 -
java中实现生产者消费者(两种方式)
一、wait(),notify()实现生产者消费者import java.util.ArrayList;//测试类public class MainMethed { public static void main(String[] args) { ProductPool pool = new ProductPool(8,new ArrayList<Product...原创 2019-11-30 23:05:02 · 149 阅读 · 0 评论 -
Java中volatile关键字
一、概述volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。二、volatile...原创 2019-11-28 19:42:16 · 124 阅读 · 0 评论 -
java中的同步与异步
一、概述多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的,有时为了解决此问题,优先考虑使用局部变量,退而求其次使用同步代码块,出于这样的安全考虑就必须牺牲系统处理性能,加在多线程并发时资源挣夺最激烈的地方,这就实现了线程的同步机制同步:A线程要请求某个资源,但是此资源正在被B线程使...原创 2019-11-28 19:31:09 · 2024 阅读 · 0 评论 -
java中的IO流概述
一、按操作方式分类结构图二、按操作对象分类结构图三、IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。字节流和字符流的区别:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符...原创 2019-11-22 22:58:04 · 117 阅读 · 0 评论 -
java中的集合概述
一、集合框架总体架构图黄色:代表接口 绿色:代表抽象类 蓝色:代表类概述:List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口Set下有HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap,Tre...原创 2019-11-22 22:25:44 · 69 阅读 · 0 评论 -
java中的File类
java中的File类File类的概述和构造方法File(String pathname):根据一个路径得到File对象 File(String parent, String child):根据一个目录和一个子文件/目录得到File对象File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象File类的创建功能pu...原创 2019-11-15 22:49:02 · 296 阅读 · 0 评论 -
java中的正则表达式
正则表达式的组成规则规则字符在java.util.regex Pattern类中A:字符 x 字符 x。举例:'a'表示字符a \\ 反斜线字符。 \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D')B:字符类 [abc] a、b 或 c(简单类) [^abc] 任何字符,除了 a、b 或 c(否定) [a-zA-Z] a到 z 或 A到 Z,两...原创 2019-11-04 16:00:28 · 189 阅读 · 0 评论 -
java中数组的排序与查找
数组排序把数组中得元素,通过比较移位替换,使之变成一个有序序列排序方式:冒泡排序,选择排序,插入排序,希尔排序,快速排序,基数排序,堆排序,归并排序。冒泡排序import java.util.Arrays;//冒泡排序:数组元素 两两比较,大的往后放,经过一轮比较后,最大得元素会出现在最后面,如此往复,那么整个数组元素就有序了。public class maoPao { public...原创 2019-11-01 16:59:37 · 459 阅读 · 0 评论 -
理解Java字符串常量池与intern()方法
理解Java字符串常量池与intern()方法例题String s1 = "Hello"; String s2 = "Hello"; String s3 = "Hel" + "lo"; String s4 = "Hel" + new String("lo"); String s5 = new String("Hello"); String s6 = s5.intern(); Str...原创 2019-11-01 16:33:50 · 158 阅读 · 0 评论 -
Java中几种常量池的区分
Java中几种常量池的区分1.全局字符串池(string pool也有叫做string literal pool)全局字符串池里的内容是在类加载完成,经过验证,准备阶段之后在堆中生成字符串对象实例,然后将该字符串对象实例的引用值存到string pool中(记住:string pool中存的是引用值而不是具体的实例对象,具体的实例对象是在堆中开辟的一块空间存放的。)。在HotSpot VM里...原创 2019-11-01 15:57:36 · 84 阅读 · 0 评论 -
java中的深拷贝
深拷贝深克隆与浅克隆的区别就是,浅克隆不会克隆原对象中的引用类型,仅仅拷贝了引用类型的指向。深克隆则拷贝了所有。也就是说深克隆能够做到原对象和新对象之间完全没有影响。实现深拷贝方法一深克隆的实现就是在引用类型所在的类实现Cloneable接口,并使用public访问修饰符重写clone方法。import java.util.zip.DeflaterOutputStream;/* ja...原创 2019-10-22 16:02:56 · 94 阅读 · 0 评论 -
java中的Object类
Object类Object(类) public int hashCode() public final Class getClass() public String toString() public boolean equals(Object obj)API概述以及Object类的概述A:API(Application Programming Interface) 应用程序编...原创 2019-10-22 13:43:54 · 126 阅读 · 1 评论 -
java中的修饰符
四种权限修饰符的作用域范围 本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private Y 默认 Y Y protected Y Y Y public Y Y Y Y类及其组成所使用的常见修饰符A:修饰符: 权...原创 2019-10-22 10:30:41 · 187 阅读 · 0 评论 -
java中的内部类和匿名类
内部类概述和访问特点A:内部类概述: 把类定义在其他类的内部,这个类就被称为内部类。B:内部类访问特点 a:内部类可以直接访问外部类的成员,包括私有。 b:外部类要访问内部类的成员,必须创建对象。内部类分类及成员内部类的直接使用A:按照内部类位置分类 成员位置:在成员位置定义的类,被称为成员内部类。 局部位置:在局部位置定义的类,被称为局部内部类。B:成员内部类 如何在测试...原创 2019-10-22 11:11:54 · 140 阅读 · 0 评论 -
Java中的多态
多态的概述A:多态概述 某一个事物,在不同时刻表现出来的不同状态。 举例: Cat c=new Cat(); Animal a=new Cat(); 猫可以是猫的类型。猫 m = new 猫(); 同时猫也是动物的一种,也可以把猫称为动物。动物 d = new 猫(); B:多态前提 a:要有继承关系。 b:要有方法重写。 其实没有也是可以的,但是如果没有这个...原创 2019-10-16 20:36:44 · 115 阅读 · 0 评论 -
栈帧详解
Java虚拟机栈与程序计数器一样,Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。经...原创 2019-10-16 20:18:54 · 574 阅读 · 0 评论 -
String类和常量池
1.String对象的两种创建方式:这两种不同的创建方法是有差别的,第一种方式是在常量池中拿对象,第二种方式是直接在堆内存空间创建一个新的对象。记住:只要使用new方法,便需要创建新的对象。2.String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用String提供的int...原创 2019-10-10 17:46:22 · 178 阅读 · 0 评论 -
Java内存区域
1 概述(为什么要学习Java内存区域)对于Java程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为一个new 操作去写对应的delete/free操作,不容易出现内存泄漏和内存溢出问题。正是因为Java程序员把内存控制权利交给Java虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。2 运行时数据...原创 2019-10-10 17:21:23 · 68 阅读 · 0 评论 -
Java中new一个对象的过程中发生了什么?
Jave中new一个对象的过程中发生了什么?java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。我们先假设是第一次使用该类,这样的话new一个对象就可以分为两个过程:加载并初始化类和创建对象。一、类加载过程(第一次使用该类)java是使用双亲委派模型来进行类的加载的,所以在描述类加载...原创 2019-10-10 16:16:07 · 114 阅读 · 0 评论