Java基础
文章平均质量分 53
gaoz666
只有不停地学习新的知识才不会被新的技术所淘汰
展开
-
Stream:中间操作,终止行为
Streamjdk8新增了Stream的新特性,可以对数据源中的数据进行运行或计算。注:数组|集合可以作为存储数据的数据源,stream不能存储数据,只能对数据源中的数据进行计算,得到一个新的结果或一个新的streamstream不会影响数据源中的数据stream是一次性的,使用过一次以后不能再次使用stream的特点是延迟加载,即进行一些操作时,如果没有终止行为,就不会执行中间操作,会在进行终止行为的时候统一执行使用步骤:根据数据源获取流中间操作终止行为本文所使用的类均为St原创 2021-04-18 14:09:37 · 834 阅读 · 3 评论 -
注解及自定义注解
注解1. 注解的介绍jdk5提出注解的概念,作用是注释,作为标识,传递数据,代替配置文件的存在。注解有以下几种类型:内置注解:标记注解:一个没有成员定义的Annotation类型被称为标记注解单值注解:只有一个值的注解完整注解:拥有多个值的注解元注解:注解注解的注解自定义注解使用方式:@注解名(参数)使用位置:类的上面,方法的上面,属性的上面。。。几种常见的注解:@Override:标记重写方法@Deprecated:标记过时@SuppressWarnings:抑制原创 2021-04-18 12:16:58 · 107 阅读 · 0 评论 -
正则表达式
正则表达式正则表达式是用来描述具有一定特征的字符串的特殊字符串。例如"ab*“匹配"a 若干个b”,"a,ab,abb"等均可匹配。1. 字符类1.1 自定义字符类由[ ]组,只匹配一个,需要注意以下四个:^:如果在第一个位置,表示取反的含义-:表示一个区间即范围]:结束 ,如果要表示普通的]请加 \\:转义.:单独表示.自身,如果想表示任意字符加上\例:[ae134]->ae134[(as)]->as[a-z]->a~z之间的小写字母[-\]a-z\[]-原创 2021-04-18 11:36:07 · 87 阅读 · 0 评论 -
XML:文档的修改和删除
XML文档的删除和修改例源文件:<?xml version="1.0" encoding="UTF-8"?><users> <user id="101" sex="男"> <name>张三</name> <pwd>123</pwd> <haha>haha</haha> </user> <user id="102" sex=原创 2021-04-17 14:50:09 · 830 阅读 · 0 评论 -
反射:获取Class对象,创建对象,操作属性和方法
反射反射是发生在程序运行期间的行为,在一个类加载到内存时,就会存在一个当前类的Class对象,Class对象是唯一的,不变的,包含此类中的所用内容,所以反射的源头就是Class对象。反射大量运用在框架,组件,服务器等的底层。1. 获取Class获取Class对象有以下三种方式:类名.class对象.getClass()Class.forName(“包名.类名”)代码:import java.io.IOException;import java.util.Properties;publ原创 2021-04-16 19:29:48 · 458 阅读 · 0 评论 -
XML:解析
XML1. XML介绍XML是一门标记语言,有以下特点:语言规则非常严格HTML中的标签是固定的,而XML中的标签是自定义的,根据需求定义作用是存储数据,解析数据,传递数据,配置信息标签分为单标签和双标签文件首行必须写"<?xml version="1.0" encoding="UTF-8"?>",这是版本控制声明有且只有一个根标签标签可以添加属性和子标签,属性的作用是帮助标签展示作用功能2. XML解析及写出XML的解析可以使用DOM4J,具体使用方法见下方代码。需原创 2021-04-16 19:21:27 · 293 阅读 · 0 评论 -
网络编程:IP,端口,URL,UDP协议,TCP协议
网络编程1. IPIP是用来定位互联网中的每一个节点,域名是IP的字符变现形式,通过DNS服务器实现这一功能。注:192.168.0.0~192.168.255.255范围是非注册IP,供组织内部使用。代码:import java.net.InetAddress;import java.net.UnknownHostException;public class NetDemo01 { public static void main(String[] args) throws Unkno原创 2021-04-15 19:19:42 · 179 阅读 · 0 评论 -
JDK8:函数型接口,方法的引用,构造器及数组的引用
JDK81. 函数式接口四大内置函数型接口:消费型接口:Consumer 方法:void accept(T t)供给型接口:Supplier 方法:T get()函数型接口:Function<T,R> 方法:R apply(T t)断定型接口:Predicate 方法:boolean test(T t)代码:import java.util.ArrayList;import java.util.List;import java.util.function.Cons原创 2021-04-15 19:05:12 · 104 阅读 · 0 评论 -
多线程:线程的状态,常用方法,线程同步,线程通信
多线程1. 线程的状态新生状态:new Thread( )就绪状态:线程会进入就绪队列中,等待CPU的调度运行状态:当就绪队列中的线程被CPU调度,就进入执行状态阻塞状态:阻塞的状态,但是线程并没有结束终止状态:线程执行结束注:一个线程一旦进入终止状态,就无法恢复;如果一个线程的阻塞状态解除之后,无法直接恢复运行,会直接进入到就绪状态。如何使一个线程进入到就绪状态:start()方法阻塞解除,恢复就绪状态yield礼让线程CPU调度切换如何使一个线程进入到阻塞状态:原创 2021-04-13 20:09:26 · 167 阅读 · 0 评论 -
函数式接口例题
函数式接口例题练习1:/* * 1)声明函数式接口,接口中声明抽象方法,public String getValue(String str) * 2)声明类 TestLambda,类中编写方法使用接口作为参数,操作字符串 */public class TestLambda02 { public static void main(String[] args) { String str = " hiudhiuwhdowjd dhjdwjdw "; //原创 2021-04-13 19:21:54 · 607 阅读 · 0 评论 -
多线程:线程创建和开启的三种方法
多线程Java中有单线程和多线程。单线程即单个任务,一个执行路径,一个顺序流;多线程即多个任务,多个执行流程,多个顺序流。三高网站:高性能,高可用,高并发多线程的优点:资源利用率更好,程序设计在某些情况下更简单,程序响应更快1. 线程的创建和开启方法1.1 继承Thread类继承Thread类,重写run()方法,方法内部定义线程体,使用start()方法开启线程。代码://定义类继承Thread类public class ThreadDemo01 extends Thread {原创 2021-04-12 19:41:06 · 405 阅读 · 0 评论 -
容器:TreeMap实现类,Properties实现类,Collections工具类,HashMap的线程不安全问题
容器1. LinkedList实现类TreeMap的底层结构是红黑树,特点是有序(默认升序排序)不可重复,根据key实现去重和排序,如果key存储的是自定义引用类型数据,需要实现内部比较器或外部比较器。代码:import java.util.Objects;import java.util.TreeMap;public class TreeMapDemo { public static void main(String[] args) { TreeMap<Pers原创 2021-04-12 13:54:47 · 430 阅读 · 0 评论 -
容器:LinkedList实现类,HashSet实现类,Map接口,HashMap实现类
容器1. LinkedList实现类LinkedList实现类的数据是有序可重复的,底层结构式双向链表。特点是增删效率较高,根据索引查询、遍历、修改效率低。应用场景:在大量做增删,少量做查询的情况下适合使用LinkedListLinkedList中新增了一些操作链表头尾的方法常用方法:import java.util.LinkedList;public class LinkedListDemo01 { public static void main(String[] args) {原创 2021-04-10 20:43:20 · 162 阅读 · 0 评论 -
集合:Collection接口,List接口,ArrayList类,Set接口,TreeSet类,比较器
集合集合与数组的区别:数组:长度一旦确定不可改变;存储的数据类型要求相同;有序,索引为0~length-1集合:长度根据数据的多少动态的伸缩;可以存储任意类型的数据1. 手写简易版容器手写简易版容器,实现数据的增删查改,具体代码如下:import java.util.Arrays;//尝试实现自定义容器类中的删除,修改,查询的方法public class ContainerTest { public static void main(String[] args) {原创 2021-04-09 19:27:43 · 197 阅读 · 0 评论 -
IO流基础知识
IO流file类能够操作文件外部的内容,却无法操作文件内部的内容,如果想操作文件内部的内容需要通过IO流。IO流可以实现文件内容的读入写出,文件的拷贝,上传和下载。流根据流向可分为输入流和输出流,根据操作单元可分为字符流和字节流,根据功能可分为节点流和功能流。1. 字节流InputStream/OutputStream字节流是万能的,具体使用方式见下方代码。字节输入流:import java.io.File;import java.io.FileInputStream;import jav原创 2021-04-08 19:37:20 · 126 阅读 · 0 评论 -
常用类:Date类,File类
常用类:Date类Date类的常用方法如下:import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateDemo01 { public static void main(String[] args) throws ParseException { //测试Date类 Date date1 = new Date(原创 2021-04-07 19:13:17 · 433 阅读 · 2 评论 -
常用类:枚举类
枚举类枚举enum表示一种事物的所有可能/一种类的所有情况。注:枚举类型不能自定义实例化,实例由枚举类型自己提供,因为枚举类的构造器默认私有化枚举类型通过枚举字段提供当前类型的实例一般通过枚举类型表示某种标识,而不会定义太多的功能和属性通过enum关键字,定义的枚举类,都没人继承自java.lang.Enumimport java.util.Arrays;public class EnumDemo01 { public static void main(String[] args原创 2021-04-06 22:20:49 · 175 阅读 · 0 评论 -
常用类:Arrays工具类
Arrays工具类Arrays工具类提供了一些操作数组的静态方法。import java.util.Arrays;import java.util.Objects;public class ArraysDemo01 { public static void main(String[] args) { //static int compare(int[] a, int[] b) int[] arr = {1,2,3,4,7,6,5}; int[]原创 2021-04-06 22:20:12 · 88 阅读 · 0 评论 -
常用类:String类
String类1. String类构造方法:import java.util.Arrays;public class StringDemo01 { public static void main(String[] args) throws UnsupportedEncodingException { String str = ""; //String() 初始化新创建的String对象,使其表示空字符序列。 String str1 = new原创 2021-04-06 22:19:22 · 106 阅读 · 0 评论 -
常用类:包装类
包装类基本数据类型有着各自的包装类,具体见下表:基本数据类型包装类基本数据类型包装类byteBytefloatFloatshortShortdoubleDoubleintIntegercharCharacterlongLongbooleanBoolean基本数据类型为什么要有对应的包装类?原因:比如集合只能存储引用数据类型的数据,可以通过包装类型表示包装类提供了很多方法,可以灵活才做数据表示数据默认值的问题|对接数据库中的某原创 2021-04-06 22:18:38 · 48 阅读 · 0 评论 -
常用类:Math类
Math类常用方法:public class MathDemo01 { public static void main(String[] args) { //static double abs(double a) 返回 double值的绝对值。 //static double ceil(double a) 返回大于或等于参数且等于数学整数的最小值(最接近负无穷大) double 。 System.out.println(Math.ceil(-2))原创 2021-04-06 22:17:57 · 114 阅读 · 0 评论 -
JavaSe基础:数组+异常
JavaSe基础数组数组是存储多个数据的一段连续的空间,是相同数据类型数据的有序集合。特点:是一个引用数据类型存储的多个数据要求数据类型相同数组的长度一旦确定,不可改变数组是有序的,数组中的每一个空间的序号从0开始,每次索引/下标+1数组的属性:长度:使用数组名.length,即存储数据的个数索引/下标:所有的数组只要有数据,第一个数据空间的索引为0,最后一个数据空间的索引为数组的长度-1一维数组的定义一维数组的初始化分为以下两种:动态初始化:先创建数组,然后再赋值,语法原创 2021-04-03 13:53:56 · 102 阅读 · 0 评论 -
JavaSe基础:面向对象4(接口,内部类,Lambda表达式)
JavaSe基础:面向对象41. 接口interface接口使用interface关键字定义,接口是一种类似规范的东西,需要通过implements关键字实现,接口有以下特点:是一个特殊的抽象类是一个引用数据类型类只能单继承,接口是多实现是方法(抽象方法)的集合接口使用的注意点:接口需要被类实现接口中一般都是大量的抽象方法,实现后重写方法才可以使用实现与继承非常像,都能够有权使用接口/父类中的成员/功能,但是侧重点不一样接口中不能定义普通的方法,大部分为抽象方法接口不能实例化原创 2021-04-01 19:58:34 · 126 阅读 · 2 评论 -
JavaSe基础:面向对象3(权限修饰符,方法的重写,多态,类型转换,equals方法,toString方法,abstract类)
JavaSe基础:面向对象31. 权限修饰符权限修饰符的作用是指定内容能够被使用的范围,具体如下:本类同包类不同包子类不同包下的其他类私有的private√默认的default√√受保护的protected√√√公共的public√√√√注:使用最多的是private和public能够修饰类的权限修饰符:public,default(默认的省略不写)都是成员修饰符,只能修饰成员,不能修饰局部在不同包下的子类,如原创 2021-04-01 00:26:57 · 111 阅读 · 0 评论 -
JavaSe基础:面向对象2(封装,继承,static关键字,block块,package包,super关键字,final关键字)
JavaSe基础:面向对象21. static关键字static关键字可修饰成员变量,方法,块及类。被static关键字修饰的变量与方法的使用方式如下:类名.静态变量名/类名.静态方法名()对象的引用.静态变量名/对象的引用.静态方法名()被static关键字修饰的内容为静态的内容。值得注意的是,成员是属于对象的,只能跟随对象使用,因为成员在对象的堆内存空间中。而static修饰的静态的内容是属于类的,可以跟随类使用。注:在静态的内容中可以直接使用静态内容,但是不能直接使用成员内容,需要跟随原创 2021-03-30 21:41:15 · 152 阅读 · 0 评论 -
JavaSe基础:面向对象(内存分析,构造器,this关键字)
JavaSe基础:面向对象11. 面向对象对象(object)是具体的实物,类(class)是对对象的抽象,类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象。1.1 类的定义方式类的定义方式如下:class 类名{ }在类中可以定义成员变量:[修饰符] 属性类型 属性名 [= 默认值] ;也可以定义方法:[修饰符] 方法返回值类型 方法名(形参列表) { 方法体;}1.2 对象的创建和使用根据类可以创建对象,必须使用new关键字创建对象。类名 对象名 =原创 2021-03-29 19:34:47 · 98 阅读 · 0 评论 -
递归
递归递归即方法自己调用自己,不建议频繁大量使用,简单但是使用不好可能会造成内存的溢出。关于递归有以下两种组成形式:第一种递归头:停止自己调用自己的条件递归体:自己调用自己第二种临界条件:停止自己调用自己的条件递归前进段:自己调用自己直到临界条件的过程递归后退段:从临界条件开始一直返回到最初调用处例1://求5的阶乘public class Recursion01{ public static void main(String[] haha){ System.out.pr原创 2021-03-28 10:58:35 · 70 阅读 · 0 评论 -
JavaSe基础知识补充
JavaSe基础知识补充1. 循环语句练习针对JavaSe所学循环语句的知识,有两道简单的练习题对其进行熟悉。练习1://键盘接收一个数字,判断这个数是否为质数(质数是只能被1跟自身整除的数,1不是质数)import java.util.Scanner;public class Test01{ public static void main(String[] args){ System.out.println("请输入数字:"); Scanner sc = new Scanner(Sy原创 2021-03-26 19:28:45 · 59 阅读 · 0 评论 -
位运算符
位运算符位运算符的本质是先把操作数转为二进制,然后运算,结果转为十进制。&:转为二进制后,同一位置的两个 数,一个为0就是0,两个都为1才是1|:转为二进制后,同一位置的两个数,一个为1就是1,两个都为0才是0^:转为二进制后,同一位置的两个数,相同为0,不同为1public class Test01 { public static void main(String[] args) { int a = 10; int b = 12;原创 2021-03-25 20:34:52 · 384 阅读 · 0 评论 -
Scanner常用类
Scanner常用类当需要接收键盘输入的数据时需要用到Scanner常用类,可以接收输入的整数及小数,也可以接受输入的字符串,值得注意的是接收输入的字符串有两种方法:next()方法:从有效字符开始接收,如果遇到空格停止接收,enter代表功能的结束nextLine()方法:接收一整行内容,包括空格,接收到enter结束功能例1://导包import java.util.Scanner;public class TestScanner1{ public static void main(原创 2021-03-25 20:34:00 · 96 阅读 · 0 评论 -
Java常用类:Math.random()
常用类:Math.random()Java中提供了一个生成随机数的常用类即Math.random(),一般用的比较多的就是生成随机整数,有如下公式:生成[min,max]区间的随机整数:int a = (int)(Math.random()*(max-min+1)+min);生成[min,max)区间的随机整数:int b = (int)(Math.random()*(max-min)+min);例:public class RandomTest{ public sta原创 2021-03-24 20:27:12 · 317 阅读 · 0 评论 -
常见DOS命令及jdk11生成jre文件夹
常见DOS命令有时需要用到命令提示符窗口,下表给了一些快捷命令及操作内容,当然后续在使用Linux系统时还会有更多的命令需要学习,这里给出的知识Windows操作系统中的命令。通过命令生成jdk11的jrejdk1.8后安装完jdk后没有了jre文件夹显示,但是后面安装其他软件可能会需要使用jre文件夹的路径,因此可以手动生成。具体方法如下:cmd使用管理员身份进入jdk安装路径下,输入以下命令即可自动生成jre文件夹。命令:bin\jlink.exe --module-path jmods -原创 2021-03-22 20:02:24 · 549 阅读 · 0 评论 -
JavaSe基础篇4
JavaSe基础篇41. break与continuebreak作用:结束终止应用场景:用于循环|switch语句continue作用:结束本次循环直接进入到下一次循环应用场景:用于循环语句小练习://1~10直接的数字,跳过3或者3的倍数for(int i=1;i<=10;i++){ if(i%3==0){ continue; } System.out.println(i);}//死循环需要结合break关键字int i=原创 2021-03-07 13:48:34 · 123 阅读 · 3 评论 -
JavaSe基础篇3
JavaSe基础篇31. Random工具类Random工具类的作用是生成随机数,具体功能如下:nextInt():随机产生int类型的整数nextInt(整数n):随机产生[0,n)区间的随机整数生成[0,max]区间随机整数:ran.nextInt(max+1)生成[min,max)区间随机整数:ran.nextInt(max-min)+min生成[min,max]区间随机整数:ran.nextInt(max-min+1)+minnextDouble():随机产生double类型原创 2021-03-05 20:53:33 · 135 阅读 · 1 评论 -
JavaSe基础篇2
JavaSe基础21. 数据类型转换1.1 数据类型转换分类数据类型转换包括以下两种类型:自动类型提升:小范围类型的数据赋值给大范围类型的变量强制类型转换:大范围类型的数据赋值给小范围类型的变量(可能会造成数据损失精度)注意点:布尔类型不参与类型转换变量参与运算时,最后会统一提升成为最大的类型byte,short,char类型运算时,最后结果类型会提升为int类型在为byte,short,char类型赋值时,只要是其范围内的“常量”都能成功赋值常量看范围,变量看类型可表示数值大原创 2021-03-05 08:35:39 · 133 阅读 · 4 评论 -
JavaSe基础篇1
JavaSe基础篇11. 新手编程注意点类名和文件名并非必须要保持一致,但是被public修饰的类需要与文件名保持一致一个java文件中可以存在多个类,但只能存在一个被public修饰的类当对一个java文件进行编译时,会对所有的类进行编译main方法是程序的入口,找到main方法会逐行从上到下执行一个类中可以没有main方法,这个类就不能自主运行,只能被调用运行一个类可以存在多个方法,但只能存在一个main方法2. 注释注释即用于解释代码的文字,根据不同情况的需求分为三种类型。2.原创 2021-03-02 20:23:56 · 188 阅读 · 0 评论