![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
Java基础、Java高级特性等
绿萝蔓蔓绕枝生
这个作者很懒,什么都没留下…
展开
-
UDF、UDAF、UDTF之间的区别
1、UDF:用户定义(普通)函数,只对单行数值产生作用;继承UDF类,添加方法 evaluate() /** * @function 自定义UDF统计最小值 * */ public class Min extends UDF { public Double evaluate(Double a, Double b) { if (a == null) a = 0.0;转载 2020-11-16 18:42:52 · 4416 阅读 · 0 评论 -
Java Lambda表达式
Lambda表达式1、函数式接口一种只含有一个抽象方法声明的接口可以使用匿名内部类来实例化函数式接口的对象通过Lambda表达式可以进一步简化代码2、Lambda语法(parameters) -> expression(parameters) ->{ statements; }3、Lambda表达式实例3.1、传入学历、年龄,输出相应的工资(1)创建接口public interface PanduanInterface { public Integer pan原创 2020-10-20 15:23:22 · 204 阅读 · 0 评论 -
Java操作Hbase
1、创建maven项目,在pom.xml文件中添加如下依赖项 <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.2.0</version> </dependency>2、编写java 连接Hbase类:HBaseC原创 2020-09-25 17:17:55 · 2635 阅读 · 0 评论 -
JDBC连接操作数据库
JDBC连接mysql数据库1、创建Java web项目2、创建实体类Student.javapublic class Student { private int stu_id; private String stu_name; private int age; private String gender; private String phone; @Override public String toString() { re原创 2020-09-16 16:41:36 · 242 阅读 · 0 评论 -
IDEA配置Tomcat创建一个Java Web项目
1、创建一个java web项目JDBC2、添加web项目目录;然后 Apply---->OK;生成web文件夹3、点击Create Artifact创建Artifact;然后 Apply---->OK4、配置tomcat5、添加Tomcat服务器6、Tomcat配置Name建议修改为工程名;Application service选择 Tomcat 服务器,第一次配置需要点击后面的Configure选择 Tomcat 安装路径7、点击Fix自动解决Warning;然后原创 2020-09-15 19:22:59 · 188 阅读 · 0 评论 -
创建maveng工程、以及打 jar 包
一、安装maven1、解压maven安装包在非系统盘中解压maven压缩包,然后打开可以看到如下目录结构2、修改sittings.xml文件进入conf文件夹,修改里面的sittings.xml文件;修改内容如下IDEA创建maven项目1、点击新建项目,选中Maven,右边勾上Create from archetype选则下面的maven-archetype-quickstart;如图所示2、在GroupId后填包名、Artifactld后面填项目名称3、填好maven安装位置、原创 2020-09-04 14:24:27 · 469 阅读 · 0 评论 -
Java高级特性知识框架
1、集合框架 List:有序 ArrayList:长度可变的数组,便于查找和访问 LinkedList(Node):双向链表,便于插入和删除 Set:不重复 HashSet:HashMap的key的hashCode()和equals()方法共同保证不重复 Map:Entry<k,v>键值对 遍历: List:fori,增强for,迭代器 Set:增强for,迭代器 Map:entrySet(),keySet(),values() 泛型: 限定了集原创 2020-08-11 10:48:28 · 107 阅读 · 0 评论 -
正则表达式
正则表达式正则表达式描述了一种字符串匹配的模式,也称规则表达式;常用于检索、替换符合指定模式(规则)的文本;大多数语言都支持正则表达式正则表达式是由普通字符与特殊字符组成的字符串普通字符– 原义字符、非打印字符特殊字符– 元字符:* + ? $ ^ . | \ ( ) { } [ ]非打印字符字符说明\r匹配一个回车符\n匹配一个换行符\t匹配一个制表符\f匹配一个换页符特殊字符字符说明字符说明$匹配输入字符原创 2020-08-10 09:50:51 · 148 阅读 · 0 评论 -
JSON
JSON 简介JSON(JavaScript Object Notation)是JavaScript中的对象表示法;轻量级的文本数据交换格式,独立于JavaScript语言;具有自我描述性;比XML传输速度快原创 2020-08-10 08:34:02 · 121 阅读 · 0 评论 -
XML文档
认识 XMLXML 是 Extensible Markup Language 的简称,即可扩展标记语言的缩写;XML是一种简单的数据存储语言,使用一系列简单的标记来描述数据XML特点XML与操作系统、编程语言的开发平台都无关规范统一实现不同系统之间的数据交换XML作用常用于数据交互配置应用程序和网站作为 Ajax 基石XML文档格式<?xml version="1.0" encoding="utf-8" ?><!--注释内容--><books&原创 2020-08-09 01:22:09 · 665 阅读 · 0 评论 -
多线程经典练习题
线程练习题1、用共享资源的方式实现 生产者–仓库–消费者的模式(注意线程安全)public class Test4 { public static void main(String[] args) { Storage s=new Storage(); Worker w=new Worker(); w.setName("生产者"); w.s=s; Customer c=new Customer(); c原创 2020-08-07 11:55:11 · 2339 阅读 · 1 评论 -
复制文件方法
文件操作使用字节流对二进制文件进行复制操作复制文件方法代码 public static void main(String[] args) { //前面是需要复制文件路径,后面是新文件保存路径 copyDate("E:/work/4.jpg","E:/PlayCards/a.jpg"); } public static void copyDate(String fromPath, String targetPath){ FileInputS原创 2020-08-07 10:45:07 · 130 阅读 · 0 评论 -
单例模式
单例模式所谓的单例模式是指一个系统中只允许存在该类的一个对象;即不允许随意创建对象,保证只有一个实例代码示例public class Teacher { private static Teacher t=null;//创建本类私有对象 private Teacher(){ //不允许随意创建对象,将无参构造私有化 } //懒汉式 public synchronized static Teacher getInstance(){ i原创 2020-08-07 10:38:58 · 86 阅读 · 0 评论 -
反射机制
认识反射反射是 Java 好高级特性之一。反射机制是构建框架技术的基础所在反射机制是指在运行状态中,动态获取信息以及动态调用对象方法的功能Java 反射的动态性质运行时生成对象实例运行期间调用方法运行时更改属性Java 反射实现的功能在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的方法和属性在运行时调用任意一个对象的方法Java 反射常用的 APIClass 类:反射的核心类,反射所有的操作都是围绕该类来生成的。通过Class类,原创 2020-08-07 10:09:28 · 97 阅读 · 0 评论 -
线程同步
线程同步的必要性当进程中的多个线程同时运行,且需要共享数据的时候,使用异步线程就会出现各种各样的问题;这个时候就需要通过线程同步来解决这些问题实现线程同步当两个或多个线程需要访问同一资源时,需要以某种顺序来确保该资源在某一时刻只能被一个线程使用的方式称为线程同步采用同步来控制线程的方式一般有两种,即同步方法和同步代码块1、同步方法通过在方法声明中加入 synchronized 关键字来声明同步方法;使用 synchronized 关键字修饰的方法控制对类成员变量的访问;这样确保了同一时刻对应每原创 2020-08-06 11:43:45 · 100 阅读 · 0 评论 -
进程和线程
进程程序是对数据描述与操作的代码的集合进程是程序的一次动态执行过程,它对应了从代码的加载、执行至执行完毕的一个完整过程进程的特点进程是系统运行程序的基本单位每一个进程都有自己一个独立的内存空间、一组系统资源每一个进程的内部数据和状态都是完全独立的线程线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个进程内执行一个进程中同时运行了多个线程,用来完成不同的工作,则称之为多线程线程特点一个进程中至少要有一个线程资源分配给进程,同一进程中所有线程共原创 2020-08-06 09:41:08 · 179 阅读 · 0 评论 -
字符流使用
使用字符流读写文件1、使用字符流类 BufferedReader 和 FileReader 读文本文件基本步骤引入相关类构造一个 BufferedReader 对象利用 BufferedReader 类的方法读取文本文件数据关闭相关的流对象代码演示public static void main(String[] args) { String s=readBuffer("E:/work/text.txt"); System.out.println(s);原创 2020-08-04 21:45:38 · 443 阅读 · 0 评论 -
StringBuffer类和StringBuilder类
StringBuffer 类和 StringBuilder 类1、使用 StringBuffer 类处理字符串StringBuffer 类是一种比 String 类更高效的储存字符串的一种引用数据类型StringBuffer 类的常用方法(1)声明 StringBuffer 对象并初始化StringBuffer sb=new StringBuffer("青春飞扬!");(2)toString() 方法:转化为 String 类型String s=sb.toString();(3)appe原创 2020-08-03 20:07:53 · 195 阅读 · 0 评论 -
对文件的读写
文件操作使用 File 类操作文件使用 FileInputStream 类读写文件使用 FileOutputStream 类写文本文件1、操作文件或目录属性File 对象即可表示文件,也可表示目录,常利用 File 对象来对文件或目录进行基本操作File类的常用方法方法说明boolean exists()测试文件是否存在String getAbsolutePath()返回此对象表示的文件的绝对路径名String getParent()返回此File对象原创 2020-08-03 23:59:39 · 929 阅读 · 0 评论 -
String类的常用方法
String类在 java 中,字符串被作为 String 类型的对象来处理。String 类位于 java.lang 包中,默认情况下,该包被自动导入所有的程序。String类的常用方法(1)获取字符串长度获取字符串长度调用 length() 方法,语法格式如下//获取字符串长度字符串.length();(2)字符串比较比较字符串通常使用 equals() 方法,语法格式如下//比较字符串字符串1.equals(字符串2);(3)忽略大小写比较字符串上一种是不忽略大小写的比较,原创 2020-08-03 09:49:19 · 201 阅读 · 0 评论 -
包装类
Java APIAPI 通常是指常用类及其方法Java API 提供的常用包有以下几种:(1)java.lang :编写Java程序时最广泛使用的包,自动导入到所有的程序中(2)java.util :包含系统辅助类,如Collection、List和Map等集合(3)java.io :包含输入与输出有关的类(4)java.net :包含了与网络有关的类(5)java.sql :包含了与数据库相关的类枚举枚举是指由一组固定的常量组成的类型,使用 enum 关键字定义枚举类型枚举示例//原创 2020-07-30 19:23:28 · 107 阅读 · 0 评论 -
Interator接口
Interator接口Interator接口又称为迭代器;Interator接口为集合而生,作用就是实现集合的遍历;Interator接口主要有两个方法:hasNext():判断是否存在下一个可访问的元素,如果有,则返回 truenext():返回要访问的下一个元素所有由 Collection 接口派生而来的接口或类都实现了 iterate() 方法代码演示// 迭代器public static void main(String[] args) { ArrayList list原创 2020-07-30 11:55:20 · 1349 阅读 · 0 评论 -
HashSet集合
HashSet类的使用HashSet类是Set接口的实现类;HashSet类用来储存不重复的无序数据;因此HashSet类里面的数据没有下标,不能查询、修改里面的数据;下面通过具体代码详看HashSet类中常用的方法// HashSet类方法使用public static void main(String[] args) { //1*创建新闻标题对象并赋值 NewTitle car=new NewTitle(1,"汽车爆炸","赛车手"); NewTi原创 2020-07-30 11:34:09 · 263 阅读 · 0 评论 -
ArraryList集合
ArrayList集合代码理解下面一段代码演示ArrayList集合的创建以及ArrayList类方法的操作// ArrayList类的使用public static void main(String[] args) { ArrayList list=new ArrayList();//1*创建集合 //2*集合赋值 list.add("张三丰"); list.add("郭靖"); list.add("杨过");原创 2020-07-30 09:26:41 · 280 阅读 · 0 评论 -
快排
快速排序前面讲过冒泡排序、插入排序等,今天具体讲解一下排序效率最高的快排快排基本思想一下图为例,假设下面是一个长度为14的一维数组,里面储存着一些数据(1)先选取第一个元素最为基准位 temp=A(2)将基准位与数组中最后一个元素 N 计较,若 temp>N 则将 N 赋值给 A即 A=N ,否则继续将 temp 与 M 比较;然后将 B 与 temp 比较,若 B<temp,则继续将 C与 temp 比较;若 B>temp 则将 B 赋值给 N ,再将 temp 与 M 比较原创 2020-07-29 22:36:52 · 341 阅读 · 0 评论 -
集合框架
集合框架了解Java集合框架体系结构使用ArrayList存取数据使用LinkedList存取数据ArrayList与LinkedList区别什么是集合首先我们需要了解集合的定义,即什么是集合。在Java中,集合是用来储存一组无序可重复的数据。Java集合框架提供了一套性能优良、使用方便的借口和类,它们都位于java.util包中。Java的集合类主要由Map接口和Collection接口派生而来,其中Collection接口有两个常用的子接口List接口和Set接口。List接口Li原创 2020-07-28 20:09:41 · 78 阅读 · 0 评论 -
异常捕获和处理
异常异常是指在程序的运行过程中所发生的不正常事假,异常会中断正在运行的程序。Java提供了异常处理机制,由系统来处理程序在运行过程中异常事件异常在Java中被封装成了各种异常类;所有异常类都是Throwable类的子类,它派生了两个子类:Error类和Exception类1、Error类:表示仅靠程序本身无法恢复的严重错误,一般由虚拟机抛出这类错误。假如出现这类错误,应尽力使程序安全退出。2、Exception类:由Java应用程序抛出和处理的非严重错误,这种情况经过处理程序可以正常运行;该类又分原创 2020-07-25 22:45:06 · 160 阅读 · 0 评论 -
抽象类和接口
抽象类和抽象方法在前一篇文章中已经提到过抽象类和抽象方法了,今天再详细了解一下抽象类和抽象方法1、抽象类被abstract关键字修饰的类叫抽象类。抽象类中有构造方法抽象类不能被实例化抽象类中可以包括所有普通类里面的成员抽象类的子类必须是子类或者重写全部抽象类中的抽象方法抽象类中可以没有抽象方法2、抽象方法被abstract关键字修饰的方法叫抽象方法。抽象方法没有方法体抽象方法只能在抽象类里面没有抽象构造方法和抽象静态方法抽象类(方法)和普通类(方法)的区别抽象类原创 2020-07-23 20:11:13 · 100 阅读 · 0 评论 -
多态、抽象类和方法以及类的转型
实现多态1、多态就是根据作用到不同对象类型响应不同的操作。方法重写是实现多态的基础例如:一个父类A定义了一个paly方法,两个子类B、C分别重写了这个方法// A类public class A { public void play(){ System.out.println("一起玩耍"); }}//B类继承A类public class B extends A { public void play(){ System.out.printl原创 2020-07-23 10:16:23 · 116 阅读 · 0 评论 -
继承和重写
继承继承是面向对象的三大特性之一,继承可以解决编程中代码冗余的问题,是实现代码重用的重要手段之一。Java中只支持单继承,即一个子类只能有一个直接父类。继承的语法格式如下:// 继承语法格式[访问修饰符] class 子类 extends 父类 {}Java中,继承通过extends关键字来连接子类和父类访问修饰符如果是public,那么该类在整个项目中可见如不写访问修饰符,则该类只在当前包中可见子类继承父类所有东西,包括私有的东西,只是看不到继承应用1、首先将8个部门类中相同的代原创 2020-07-23 00:29:30 · 146 阅读 · 0 评论 -
封装和继承
封装Java中封装的实质就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。封装的好处在于隐藏类的实现细节,让使用者只能通过程序员规定的方法来访问数据,可以方便地加入存取控制修饰符,来限制不合理的操作封装步骤(1)修改属性的可见性,用 private 将类的属性私有化(2)设置 setter/getter() 方法(3)设置属性的存储限制封装的优点保护属性开一个出口以共使用便于使用者正确使用系统,防止错误修改属性有助于系统之间的原创 2020-07-21 22:49:59 · 170 阅读 · 0 评论 -
构造方法及方法重载
成员方法类成员主要包括成员变量和成员方法。带参数的成员方法带参数的成员方法可以接受用户输入的内容。创建带参数的方法时定义的参数叫形式参数,即形参;调用方法时传入的参数叫实际参数,即实参。语法结构:// 有参方法[访问修饰符] 返回值类型 方法名(参数列表){ 代码; return 具体的返回值; }参数传递:基本数据类型做参数时,传递的是值,不能出方法的范围引用数据类型做参数时,传递的是地址,可以影响方法外部特殊:String做参数时,等同于基本数据类型方法重载方法重原创 2020-07-21 10:04:04 · 145 阅读 · 0 评论 -
面向对象
面向对象的基本概念1、面向对象Java语言是一种面向对象的语言。面向对象是一种直观而且程序结构简单的程序设计方法。面向对象的三大特征:封装、继承、多态。2、对象对象是用来描述客观事物的一个实体。3、类类是具有相同属性和方法的一组对象的集合。类定义了对象将会拥有的特征(属性)和行为(方法)。定义类类是对象的抽象,对象是类的实例;面向对象设计的过程就是抽象的过程,一般分三步来完成:(1)发现类,类定义了对象将会拥有的特征(属性)和行为(方法)(2)发现类的属性,对象所拥有的静态特征在类中原创 2020-07-20 09:48:30 · 91 阅读 · 0 评论 -
Java入门
Java 基础总结今天对Java基础做一个简单的小结。经过十天左右的学习,已经将Java基础部分学完,下面简单画了一个思维导图简述Java基础的知识点。希望对大家有所帮助。1.Java入门需要先了解什么是Java、Java的编译环境以及Java原理,在学习Java的前提条件是安装配置Java的编译环境,即安装JDK以及其环境变量的设置。在了解Java以及配置好Java环境以后可以先简单做一个Java源程序增加对Java的理解。2.Java语言包含9大数据类型,分别是:byte、short、int、l原创 2020-07-17 10:24:30 · 80 阅读 · 0 评论 -
二分查找
二分查找二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。// 二分查找public static void main(String[] args) { int[]a={1,2,3,4,5,6,7,8,9,10,原创 2020-07-15 23:16:36 · 89 阅读 · 0 评论 -
二维数组
定义本质上二维数组也是一个一维数组,只是里面是元素变成一个一维数组;二维数组是一些一维数组的集合;定义二维数组时,必须定义最大维度,即由几个一维数组构成;其定义格式如下:public static void main(String[] args) { //二维数组的声明 int[][]a=new int[5][5]; int[][]b; b=new int[3][2]; //二维数组赋值 a[0][0]=1;原创 2020-07-15 22:37:07 · 178 阅读 · 0 评论 -
冒泡排序
冒泡排序之所以叫冒泡排序,是因为这种排序方式跟水里的气泡类似,气泡小的上浮速度比气泡大的上浮的慢;气泡排序是从数组第一个元素开始,依次两两比较,较大的数下沉,较小的数上浮。从第一个元素开始依次比较相邻的两个数,如果第二个数小就交换位置再拿这个数跟下一个数比较,这样循环,一直比到数组最后一个元素这样第一轮比换结束后最后一个元素就是数组中做大的元素然后循环第二轮,直到全部排序完成现在简单定义一个数组,然后用冒泡排序法对它进行排序// 冒泡排序public static void main(S原创 2020-07-15 21:52:05 · 199 阅读 · 0 评论 -
选择排序、插入排序
基本排序法基本排序法有选择排序、插入排序和冒泡排序法三种。今天简单讲解一下选择排序法和插入排序法选择排序法顾名思义,选择排序法是用选择的方法排序,那么该怎么选怎么排呢?(1)首先选择数组中从第二个数组元素开始到数组中最后一个元素中值最小的一个(2)将选择的这个值与数组中第一个数组元素比较(3)如果选择的这个元素的值比第一个数组元素的值大,则将这两个数调换位置,这样依次选择跟第二个、第三个…比较,直到比较到数组长度减1,输出数组// 选择排序法public static void main(S原创 2020-07-14 22:11:56 · 166 阅读 · 0 评论 -
一维数组
定义数组Java 中定义数组的语法有两种:// 定义数组数组类型 []数组名=new 数组类型[数组长度];数组类型 数组名[]=new 数组类型[数组长度];定义数组时一定要指定数组名和数组类型;必须书写[ ],表示定义了一个数组而不是变量;[数组长度]决定连续分配的空间的个数,通过数组的length 属性可以获取此长度数组元素的表示与赋值定义数组时内存分配的是连续空间,所以数组元素里顺序排列序号,该编号即元素下标,它标明了元素在数组中的位置。首元素的编号规定为0,因此,数组的下标原创 2020-07-13 11:44:27 · 102 阅读 · 0 评论 -
break、continue、return 跳转语句的异同
跳转语句比较Java 语言中支持3种类型的跳转语句:break 语句、continue 语句、return 语句。使用这些跳转语句可以把控制转移到循环甚至程序的其他部分。break 语句break 语句在循环中的作用是终止当前循环,在switch 语句中的作用是终止switch。实例请实现输出数字1到10,若遇到4的倍数程序自动退出。// break 的使用public static void main(String[] args) { for (int i=1;i<10原创 2020-07-10 10:14:31 · 330 阅读 · 0 评论