
Java基础知识
文章平均质量分 92
Java基础相关内容,面向对象、常用API、集合、IO流、多线程、lambda表达式、stream流等
YunWQ
好记性不如烂笔头,加油!!!
展开
-
10分钟学会NIO技术
NIO的概述NIO是New I/O的简称,与旧式基于流的I/O相对,从名字上来看,它表示新的一套I/O标准。它是从JDK1.4中被纳入到JDK中的。与旧式的IO流相比,NIO是基于Block的,它以块为单位来处理数据,最为重要的两个组件是缓冲区Buffer和通道Channel。缓冲区是一块连续的内存块,是NIO读写数据的载体;通道表示缓冲数据的源头和目的地,它用于向缓冲区读取或者写入数据,是访问缓冲区的接口。Buffer的基本原理Buffer中最重要的3个参数:位置(position)、容量(ca原创 2020-06-10 17:07:53 · 743 阅读 · 0 评论 -
JavaSE常见的异常总结
JavaSE常见的异常总结在写代码的时候不可能不出现问题,遇到问题能够第一时间解决问题是每一个开发人员必备的技能。解决这些问题,就需要靠我们平时的积累。你遇到的问题多了,并且善于总结,以后遇到同样的问题就不在话下了。ArrayIndexOutofBoundsException数组索引越界异常 数组索引超过索引最大值或最小值,就会出现这个异常。 int[] arr={1,2,3,4,5}; for(int i=1;i<=arr.lengthi++){ System.out.pri原创 2020-06-03 17:44:59 · 336 阅读 · 0 评论 -
收藏这些正则表达式就够了
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n位的数字:^\d{m,n}$ 5 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9原创 2020-06-03 17:43:54 · 145 阅读 · 0 评论 -
IDEA常用快捷键大全都在这里了
自动代码Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) 或者右键(Generate) fori/sout/psvm + Tab Ctrl+Alt+T 生成try catch 或者 Alt+enter CTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里 Ctrl + O 重写方法 Ctrl + I 实现方法 Ctr+shift+U 大小写转化 ALT+回车 导入包,自动修正 AL原创 2020-06-03 17:38:07 · 316 阅读 · 0 评论 -
通俗易懂讲Java注解
注解概述注解刚开始学确实不太好理解,我尝试着用一些例子帮助大家理解,继续往下看,静下心来慢慢体会。看到注解这个词,很容易让我们联想到注释,但是它和注释有很大的不同,注释是解释说明程序的文字,是给人看的;但是注解是由代码组成的,有其特殊的语法(如类、接口等,注解也可以看做是一种特殊的数据类型)我们可以把每一个注解看做是一个【标签】,并且每一个标签有不同的含义,如果把这个标签贴在某个的物体上,那么就认为这个物体具备这个标签的含义。注解就是用代码写的一种特殊的【标签】,它可以给类、成员变量、方法、接口原创 2020-06-03 17:31:52 · 276 阅读 · 0 评论 -
跟我学Java 反射的基本用法
Java的反射机制,首先得从Java字节码入手,为了方便理解给大家举个例子,如图我们可以把Java的反射机制看做是一个照妖镜,它可以让类的字节码(Class文件)现出原形,也就是获取到字节码的各个组成部分。在Java的世界里万物皆对象,类的字节码和类的各个组成部分都是对象,而每一个对象都有与之对应的类,关系如下类的组成部分类名字节码Class表示成员变量Field表示构造方法Constructor表示成员方法Method表示获取字节码要去做反射的操原创 2020-06-03 17:26:39 · 269 阅读 · 0 评论 -
Stream流使用的详细介绍
Stream流式编程Java 8引入了全新的Stream API。这里的Stream和I/O流不同。它提供一种对 Java 集合运算和表达的流式编程方式,大大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。少废话,咱们先来体验一把//打印输出集合中,姓张并且者长度为3的元素public class StreamDemo1 { public static void main(String[] args) { ArrayList<String> li原创 2020-06-03 17:22:31 · 941 阅读 · 0 评论 -
jdk8的新特性之lambda表达式
在学习Lambda表达式之前,我们先得到了解一个知识点叫做 函数式接口函数式接口只有一个抽象方法的接口,叫函数式接口,它是Lamdba表达式的使用前提。在学习多线程的时候Runnable接口就是一个函数式接口,如下public interface Runnable{ public void run();}在学习Collections工具类的的[sort](chapter5\5.2 Collections.html#方法演示 )方法时,我们讲到Comparator接口用于可以用于排序。pu原创 2020-06-03 16:22:25 · 336 阅读 · 0 评论 -
网络编程UDP和TCP通信
网络编程顾名思义就是编写能够进行网络数据交互的应用程序。网络编程三要素在学习网络编程之前我们必须了解一些有关网络的一些关键词。【ip地址】 ip地址用来标识网络中的一台主机,在同一个局域网中ip地址不能重复。 分为ipv4和ipv6 - IpV4: 4个字节 4*8=32位 如:192.168.1.11 - IpV6: 16个字节 16*8=128位 如:fe80::2ca8:cc7e:bef0:a1cf%1原创 2020-06-03 16:20:14 · 257 阅读 · 0 评论 -
等待和唤醒实现Java线程间通信
Java的线程间通信,其实就是利用等待和唤醒机制达到多个线程之间协调工作的目的。1. 等待和唤醒Object类中有两个方法,wait()和notify()。这两个方法时在多线程中被锁对象调用的。因为所对象可以是任意对象,为了让任意对象都能调用这两个方法,所以把这两个方法设计到了Object方法中void wait() 让当先正在执行的线程进入无限等待状态void notify() 唤醒正在等待的线程很经典的一个例子,就是生产者和消费者的案例。假设包子铺生产一个包子,吃货就要吃一个包子原创 2020-06-03 15:51:40 · 189 阅读 · 0 评论 -
Java 对象序列化流
在学习对象序列化流之前,我们先解释一下什么序列化和反序列化序列化:把对象当做字节写入文件反序列化:把文件中的对象读取出来简单说对象序列化流就是用来写对象和读对象的。Java提供了ObjectOuputStream用来写对象;ObjectInputStream用来读对象。ObjectOutputStream是OutputStream的子类,写对象时需要依赖于FileOutputStream;ObjectInputStream是InputStream的子类,写对象时需要依赖于FileInputSt原创 2020-06-03 15:38:27 · 233 阅读 · 0 评论 -
Java标准的输入输出流
5.标准输入输出流标准的输入输出流简单了解一下就可以了,实际开发时一般用不着。标准的输入流System.in表示标准的输入流,用来从读取从键盘录入的数据,本质上就是一个InputStream看下面代码演示,从键盘录入数据。public class SystemInDemo{ public static void main(String[] args){ //System.in的数据源是控制台键盘录入的数据 InputStream in=System.in;原创 2020-06-03 15:37:19 · 1369 阅读 · 0 评论 -
Java基础综合练习题
猜数字小游戏随机产生一个[1,100]范围内的数据,采用键盘录入的方式猜这个数字是多少。如果键盘录入的数字比随机数大,输出猜大了如果键盘录入的数字比随机数小,输出猜小了如果键盘录入的数字比随机相同,输出猜中了如果猜大了或者猜小了可以重复猜,如果猜中了就游戏结束。//随机产生一个[1,100]范围内的数据Random r=new Random();int num=r.nextInt(100)+1; //采用键盘录入你猜的整数Scanner sc=new Scanner(System.in原创 2020-06-03 15:32:54 · 3856 阅读 · 0 评论 -
专门操作文本文件的字符流和字符缓冲流
虽然转换流可以按照指定的字符集读写文本文件,但是转换流读写文本文件代码写起来还是比较麻烦。如果你读写的文件是UTF-8编码格式,Java还给我们提供了两个读写字符文件的便捷类FileReader和FileWriter来简化代码的书写。FileReader读文件读取C:\io\a.txt文件【UTF-8格式】的所有字符public class FileReaderDemo1{ public static void main(String[] args){ //创建流对象原创 2020-06-03 15:19:16 · 184 阅读 · 0 评论 -
转换流解决中文乱码问题
中文乱码问题上一张讲字节流,通过字节流可以读写任意的文件,但是当使用字节流读写中文时,会存在乱码问题。我们通过一个案例来演示,在C:\io\a.txt文件中有如下内容使用字节流读取C:\io\a.txt,一次读取2个字节,并转换为字符串。public class IsrDemo1{ public static void main(String[] args){ FileInputStream fis=new FileInputStream("C:\\io\\a.txt");原创 2020-06-03 15:11:58 · 2085 阅读 · 0 评论 -
Java的数据读写IO流之字节流
在学习字节流之前,首先还得从字节说起,1个字节是由8个bit位组成,每一个bit位用0或1表示。计算机中最小的存储单位为1个字节在计算机的世界里,万物皆字节,包括文本、视频、图片、声音、甚至你使用的各种软件这些都是字节,也就是说计算机中所有你能看到和看不到的数据,最终都是由0和1的排列组合来表示的。接下来,我们学习的字节流可以直接读写任意文件中的字节。 我们先以文本文件为例,讲解一下如何通过字节流读取字节和写入字节。其他文件读取和写入是一模一样的,照葫芦画瓢就可以。字节输入流字节输入流是用来读取字节原创 2020-06-03 14:19:54 · 382 阅读 · 0 评论 -
轻松搞定Java异常和自定义异常
异常概述异常指的是在程序编译和运行时期的一些不正常的状况。Java语言的设计者把一些常见的异常封装成了对象,并且在API文档中对这些异常产生的原因做了解释。当开发者写代码时没有按照要求写,就会产生异常,并且在控制台输出一些异常信息,这些异常信息其实就是告诉程序员哪里出现了问题,出现了什么问题,以便程序员排查错误。java.lang.ArrayIndexOutOfBoundsException 数组角标越界异常java.lang.NullPointerException 空指针异常原创 2020-06-03 12:36:43 · 247 阅读 · 0 评论 -
Java数组和数组的常见操作
数组的概念数组是用来存储多个数据的容器,有下面几个特点。- 元素类型是一致的- 长度是不可变的如下图中,一包烟是一个数组,一篮子鸡蛋一个数组,一间教室也是一个数组。数组的格式//格式1:数据类型[] 数组名 = new 数据类型[长度];int[] arrayA=new int[3];//格式2:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素....};int[] arrayB=new int[]{10,20,30};//格式3:数据类型[] 数组名原创 2020-06-03 12:15:40 · 1289 阅读 · 0 评论 -
Windows系统JDK的安装和配置
Java开发环境配置在开发Java程序之前,我们先要搞明白JDK、JRE以及JVM的区别 名称 作用 JDK 开发Java程序所需的工具包 JRE 运行Java程序的环境 JVM 包含在JVM内部,用于执行Java程序 三者的关系 JDK包含JRE,JRE包含JVM。作为开发者,我们只需要在电脑上安装JDK就可以了,下面...原创 2018-06-12 12:12:25 · 417 阅读 · 0 评论 -
Java HelloWorld程序
安装好了JDK之后,我们就可以开始编写Java程序了,但是用什么来写呢?我们可以使用Windows自带的记事本来写代码。如下图 我们会发现Windows自带的记事本软件,文字都是黑白的,而且没有行号显示看起来不太美观。所以有一些第三方的高级记事本软件可以对我们的代码显示效果做一些优化(ps:当然还有其他功能这里不深究),如下图NotePadd++软件 NotePad++ 安装点...原创 2018-06-13 08:49:43 · 483 阅读 · 0 评论 -
简单易懂的Intellij IDEA基本使用
这里介绍一下Intellij IDEA的入门使用 Intellij IDEA的详细教程推荐一篇博客 史上最简单的 IntelliJ IDEA 教程原创 2018-06-14 08:58:17 · 1401 阅读 · 2 评论 -
Java基础经典训练题
1. 求和问题所有的求和问题,都按照下面的步骤来做定义求和变量sum遍历获取所有需要求和的数据和sum累加//求1-100之间偶数的和int sum=0; // 定义求和变量for(int i=1;i&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;=100;i++){ //遍历所有需要求和的数据 if(i%2==0){ sum+=i; //和sum累加 }}//最终sum记录...原创 2018-06-14 11:25:12 · 1167 阅读 · 1 评论 -
面向对象思想入门
很多初学者反应,面向对象这部分知识点好难、很绕、内容很抽象不好理解等等。其实面向对象真的不难,只是有些书本上或者视频教程里把它讲得太抽象了,讲得太细了也会让我感觉内容很多、很乱,最终导致学晕了。这里我不会用一些专业语言去描述面向对象的相关的概念、因为一旦描述了很多概念会让初学者误以为概念很重要,其实重在理解,这也不是语文考试。我将采用一种全新的方式,引导你自己去理解相关内容。我从5个方面去...原创 2018-06-14 21:23:54 · 351 阅读 · 2 评论 -
超详细的 Java String类使用
String类概述String表示字符串,所有的字符串字面值都是常量(如”abc”,”hello”),也是字符串的对象。字符串对象有两种形式String s1=”abc” 这就是一个字符串对象String s2=new String(“abc”) 这也是一个字符串对象两种创建对象的区别,看图String s1="abc";//s1变量,存储的是"abc"在常量池中的地...原创 2018-06-19 12:59:52 · 193 阅读 · 0 评论 -
详解 Java Collection集合
集合的继承体系Collection的常用功能1. 添加功能 boolean add(E e) 添加一个元素 boolean addAll(Collection c) 添加一批元素2. 删除功能 boolean remove(Object o) 删除一个元素3. 判断功能 boolean conta...原创 2018-07-13 20:12:34 · 5637 阅读 · 2 评论 -
教你手写一个ArrayList集合
ArrayList集合源码解析ArrayList底层是数组结构,每次添加元素的时候就会创建一个新的数组,把原来数组中的元素复制到新的数组中。每次删除元素的时候,就会把数组后面的元素往前挪动,并且把最后一个元素置为null,等待垃圾回收器回收。按照ArrayList集合的原理,我们自己也可以写一个简化版的ArrayList集合,我取名为MyArrayList添加元素的原理删除元素的原理...原创 2019-03-06 10:39:18 · 642 阅读 · 0 评论 -
详解Collection集合体系
Collection集合集合的继承体系Collection的常用功能1. 添加功能 boolean add(E e) 添加一个元素 boolean addAll(Collection c) 添加一批元素2. 删除功能 boolean remove(Object o) 删除一个元素3. 判断功能 boolean...原创 2019-03-06 10:39:03 · 3514 阅读 · 0 评论 -
详细解析Map集合
Map集合Map是双列集合,存储的是【键值对】.键不能重复。常用功能对集合的操作无非就是增加、删除、修改、查询V put(K key, V value) 往Map集合中添加键值对.返回被覆盖键的值,如果键相同.把值修改了V remove(Object key) 根据键删除键值对.返回被删除的值void clear() 清空集合中的元素int siz...原创 2019-03-06 10:38:45 · 390 阅读 · 0 评论 -
Java操作集合的工具类 Collections
Collectoins工具类Collections是专门用于对Collection集合进行操作的工具类,它提供了一些便捷的方法,如排序,查找,求最值等等常用方法static &lt;T&gt; boolean addAll(Collection&lt;? super T&gt; c, T... elements) 一次性向Collection集合中添加多个元素static void ...原创 2019-03-06 10:38:23 · 507 阅读 · 0 评论 -
Java的顶层父类Object类
Object类Object是Java的顶层父类,所有的子类都可以使用Object的方法。下面学习几个常用方法常用方法String toString() 把一个对象转换为字符串形式,默认为地址值的十六进制形式: “类名@地址值” 对开发者而言更重要对象内部封装的数据 一般子类复写toString方法把对象转换为属性值boolean equals(Object obj...原创 2019-03-06 10:38:10 · 398 阅读 · 0 评论 -
Java中有关时间和日期的处理
System类System表示系统类,提供了一些标准输入、输出的方法。以及获取系统相关属性的方法,复制数组等操作。常用方法public static long currentTimeMillis() 获取当前的系统时间毫秒值public static void arraycopy(Object src, int srcPos, Object dest, int destPos,...原创 2019-03-06 10:43:10 · 823 阅读 · 0 评论 -
SimpleDataFormt和Calendar
SimpleDateFormat类Date类的日期时间格式太丑了,可以使用SimpleDateFormat对象Date对象进行格式化和解析的操作。它可以对Date对象进行格式化和解析的操作(ps: 耐心往下看有具体解释).常用日期格式yyyy 年MM 月dd 日HH 时(24小时)mm 分ss 秒SS 毫秒日期格式化所谓格式化就是把Date对象转换为想要的字...原创 2019-03-06 10:45:24 · 501 阅读 · 0 评论