自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 Java反射编译器API

反射-可以查看对象的类型标识-可以动态创建对象,访问其属性,调用其方法-前提:类(class文件)必须先存在编译器API-对java文件即时编译-对字符串即时编译-监听在编译过程中产生的警告和错误-在代码中运行编译器(并非:Runtime命令行调用javac命令)JavaCompiler-位于javax。tools包中-可用在程序文件中的java编译器接口-在程序中编译java文件,产生class文件-run方法较简单,可以编译java源文件,生成class文件,但不能指定输出路径

2020-11-02 22:29:38 134

原创 Java反射应用

数据库链接1、Connection,连接到各个不同的数据库反射构建Java和数据库之间的桥臂介质class.forname"com.mysql.jdbc.Driver"class.forname 实际上是将类加载到jvm中去构建Java和数据库之间的桥梁conn = DriverManager.getConnectin(url,“root”,“123”)DriverManager将会选择合适的驱动类,并采用getConnecting方法连接数组扩充给定一个数组,将其长度扩大一倍-java

2020-11-02 21:56:10 142

原创 Java反射关键类

反射-在运行中分析类的能力-在运行中查看和操作对象反射构建出无法直接访问的类set或get到无法访问的成员变量调用不可访问的方法-实现通用的数组来操作代码-类似函数的指针功能Class:类型标识-JVM为每个对象都保留其类型标识信息-三种获取方式String s1 = ‘abc’;Class c1 = s1.getClass();System.out.println(c1.getName());Class c2 = Class.forName(“java.lang.String”

2020-11-01 21:34:22 148

原创 Java反射

反射入门如何判断一个类有多少的方法? reflection反射反射-程序可以访问,检测和修改它本身状态或行为能力,即自描述和自控制-可以在运行时加载、探知和使用编译期间完全未知的类-给Java插上动态语言特性的翅膀,弥补强类型语言的不足-Java.lang.reflection包,java2就有,java5得到完善创建对象1、静态编码&编译public class A{public void hello(){System.out.println(“hello”);}}

2020-10-27 21:43:42 108

原创 java类型协变和逆变

类型变化关系(1)1、面向对象语言,支持子类型(Subtyping)2、类型变化关系(type variance)-更复杂类型中的子类型关系,与子类型之间的关系相关联A,B是类型,f()表示类型转换,?表示继承,如A?B表示A继承于B如果A?B,有f(A)?f(B)f()是协变(convariant)如果A?B,有f(B)?f(A),f()是逆变(contravariant)当上述两种都不成立,即f(A)和f(B)都没有关系,f()是不变(invariant)如果A?B,有f(A)?f(B)

2020-10-26 22:35:28 93

原创 Java泛型实现的本质和约束

泛型是JDK1.5引进的新特性JDk的版本是向后兼容的,即低版本的class文件可以在高版本的JDK上运行JVM里面没有泛型对象,而是采用类型擦除技术,只有普通的类和方法类型擦除(1)擦除泛型变量,替换为原始类型,无限定为object类型擦除(2)擦除泛型变量,替换为原始类型,有限定则为第一个类型类型擦除(3)擦除泛型变量后,为了保证类型的安全性,需要自动进行类型转换泛型表达式翻译Fruit a = fruits. getFirst();Object a1 = fruits.getFi

2020-10-26 20:45:00 118

原创 Java泛型类型限定

泛型类型限定(1)编写的代码可以被很多不同类型的对象重用特定场合下,需要对类型进行限定-如约定必须是Comparable的子类-extends 固定,后面可以是多个,以&拼接,如<T extends Comparable&Serializable>-extends限定可以有多个接口。但只能有一个类,且必须是拍在第一位-逗号隔参数,<T extends File & Cloneable, U extends Serializable>泛型继承原则(

2020-10-20 22:36:28 1890 1

原创 Java泛型入门

泛型(1)泛型:Generic Programming编写的代码可以被很多不同类型的对象所重用泛型类:ArrayList,HashSet,HashMap泛型方法:Collections.binarySearch,Arrays.sort这个方法可以被很多类所使用泛型接口:List,Iterator泛型本质:参数化类型,避免类型转换,代码可复用自定义泛型1、泛型类-具有泛型变量的类-在类名后用代表引入类型多个字母表示多个引入类型引入类型可以修饰成员变量、局部变量、参数、返回值没有专门

2020-10-20 21:09:33 55

原创 Java语法糖--var类型和switch

var类型java以前一直是一种强类型的程序语言-每个变量在定义时就确定了类型-类型固定了就不能更改java10推出var:局部变量推断-避免信息冗余-对齐了变量名-更容易阅读-本质上好帅强类型语言,编译器负责推断类型,并写入字节码文件,因此推断后不能更改var限制-可以用在局部变量上,非类成员变量-可以用在for/for-each循环中-声明时必须初始化-不能用在方法(方式)参数和返回类型-大面积滥用会使代码整天阅读性变差-var只在编译时起作用,没有在字节码中引入新的内容,

2020-10-19 21:45:19 203

原创 java语法糖try-with-resource

try-with-resource程序如果打开外部资源,那么在使用后需要正确关闭考虑异常因素,java提供try-catch-finally进行保证JDK7提供try-with-resource更简便try(资源对象){…}catch(Exception e){…}资源对象必须实现AutoCloseable接口,即实现close方法...

2020-10-19 20:55:38 139

原创 java语法糖--接口方法

接口的默认方法(1)1、接口的方法都是没有实现的公开的2、java8推出的默认方法/静态方法(都带实现的),为Lambda表达式提供支持接口的默认方法1、以default关键字标注,其他的定义和普通函数一样2、默认方法不能重写Object中的方法3、实现类可以继承/重写父类接口的默认方法4、接口可以继承/重写父类接口的默认方法5、当父类和父类接口都有默认方法,子类继承父类的默认方法,这样可以兼容JDK7以前的代码6、子类实现了2个接口(均有同名同参数的默认方法),那么编译失败,必须在子类中

2020-10-15 21:33:08 127

原创 Java语法糖-自动装箱和拆箱、多异常并列、数值类型赋值优化

自动装箱和拆箱(auto-boxing/ auto-unboxing)简化基本类型和对象转换的写法基本类型:boolean/byte/char/int/'short/;long/flaot/double对象:Boolean、Byte、Character、Integer、Short、Long、Float、Long装箱:基本类型的值封装为一个包装类对象拆箱:一个包装类对象被拆来并获取相应的值...

2020-10-13 22:09:33 204

原创 JAVA不定向参数和静态导入

不定参数(可变参数)1、普通函数的形参列表是固定个数/类型/顺序2、JDK5提供了不定项参数功能-类型后面加3个点,-可变参数,本质是数组一个方法只能有一个不定项参数,且必须唯一参数列表的最后重载的有线级规则1:固定参数的方法,比可变参数优先级更高重载的优先级规则2:调用语句,同时与两个带可变参数的方法匹配,则报错public class TextRead{public static void main(String args[]) {print();print(“aaa”);pri

2020-10-12 21:43:16 247

原创 Java语法糖

语法糖:Syntactic suger/Syntax suger-语法糖是的程序员更日你故意编写程序,更清晰准确表达业务逻辑-语法糖不仅仅是语法的转换,也包括一些小的改进-JDK2(1.1-1.4)普及版JDK5/6/7/8/11长期稳定版JDK9/10.12短期版本...

2020-10-12 21:07:38 75

原创 Java网络编程基础

公网(万维网/互联网)和内网(局域网)-网络是分层的-最外层是公网/互联网-底下的每层都是内网-IP地址可以在每个层次的网重用-tracert看当前机器和目标机器的访问中继通讯协议:TCP/UDP-TCP(Transmission Control Protoctol)传输控制协议,面向连接的协议两个机器的可靠无差错的数据传输双向字节流传递UDP(User Datagram Protocol)用户数据报协议,面向无连接协议不保证可靠的数据传输速度快,也可以在较差的网络下使用..

2020-09-27 22:25:14 61

原创 Java多线程管理

线程状态-new 刚创建(new)-Runnable就绪状态(start)-running运行中(run)-block 阻塞(sleep)-terminated 结束

2020-09-27 21:38:10 71

原创 Java多线程信息共享

-粗粒度:子线程与子线程之间、和main线程之间缺乏交流-细粒度:线程之间有信息交流通讯通过共享变量达到信息共享JDk原生库暂不支持发送消息多线程信息共享-通过共享变量在多个线程中共享消息static变量同一个Runnable类的成员变量-多线程信息共享问题工作缓存副本关键步骤缺乏加锁限制-i++,并非原子性操作读取主存i(正本)到工作缓存(副本)中每个CPU执行(副本)i+1操作CPU将结果写入到缓存(副本)中数据从工作缓存(副本)刷到主存(正本)中–变量副本问题的解决方法

2020-09-23 21:56:50 126

原创 Java多线程实现

Java多线程创建-java.lang.Thread线程继承Thread类,通过start方法来启动线程实现run方法public class TextRead extends Thread{public void run() {System.out.println(“hello”);}public static void main(String[] args) throws Exception{new TextRead().start();}}-java.lang.Runnable接

2020-09-22 22:45:27 178

原创 Java多线程和多进程

多线程1、当前的操作系统都是多任务OS2、每个独立执行的任务就是一个进程3、OS将时间划分为多个时间片(时间很短)4、每个时间片内将CPU分配给某一个任务,时间片结束,CPU将自动回收,在分配给另外任务。从外部看,所有任务是同时在执行,烦死在CPU上,任务是按照串行一次运行(单核CPU)。如果是多核,多个进程任务可以并发进行。但是在单核史昂,多进程只能串行执行-多进程优点1、可以运行多个任务2、程序因IO堵塞时,可以释放CPU,让CPU为其他程序服务3、当系统有多个CPU时,可以为多个程序同

2020-09-22 21:07:58 326

原创 Java图形图像解析

Java突袭关键类描述-Java原生支持jpg,png,bmp,wbmp,gif-javax.imageio.ImageIo1、自动封装多种ImageReader和ImageWriter,读写图像文件2、read读取图片,write写图片-Java.awt.image.BufferedImage.图像在内存中的表示类1、getHeight获取高度2、getWidth获取宽度-图像文件读写/截取/合并生成二维码import java.awt.*;import java.awt.image

2020-09-17 21:11:10 669

原创 Java-JSON解析

JSON-JavaScript Object Notation,js对象表示法-是一种轻量级的数据交换格式-类似XML,更小更快,更易解析-尽管使用JavaScript语言,但是独立于编程语言JSONObject-名称/值对1、JSON对象:{“name”:“Jo”,“email”:“a@b. com”}2、数据在键值对中3、数据逗号分隔4、花括号保存对象JSONArray-方括号保存数组[{“name”:“Jo”,“email”:“a@b. com”},{“name”:“Jo”,

2020-09-14 22:12:31 47

原创 Java-XML解析

XML解析方法1、树结构-DOM:Document Object Model文档对象模型,擅长(小规模)读写2、流结构-SAX:simple API for XML流机制解释器(推模式)擅长读-Stax:the Streaming API for XML流机制解释器(拉模式)擅长读DOM是W3C处理XML的标准API-直观易用-处理方式是将XML整个作为类似树结构的方式读入内存中以便操作及解析,方便修改-解析大数据量的XML文件,会遇到内存泄漏及程序崩溃的风险...

2020-09-14 20:37:01 54

原创 java高级文件处理XML

1、XML(extensible Markup Languag)2、可扩展标记语言:意义+数据3、标签可自行定义,具有自我描述4、纯文本表示,跨 系统/平台/语言XMl语法1、任何起始标签都必须有一个结束标签2、简化写法,中间没有值就可以写成3、大小写敏感4、每一个文件都要有一个根元素,最外层的元素5、标签必须按合适的顺序进行嵌套,不可错位6、所有的特性必须有值,且在值的周围加上引号7、需要转移字符,如"<"需要用&lt代替8、注释:<!–注释内容-- >

2020-09-07 21:39:30 67

原创 Java高级字符串处理

1、正则表达式2、其他字符串操作-集合和字符串操作-字符串转义-变量名字格式化-从字符串到输入流

2020-09-07 20:51:26 244

原创 Java国际化编程

国际化编程1、Internationalization,缩写为i18n2、多语言文本的软件-一套软件,多个语言-根据语言设定,可以切换显示文本Locale类1、Locale(zh_CN,en_US)-语言,zh,cn-国家CN,US2、Locale方法-getAvailableLocals()返回所有的可用Locale-getDefault()返回默认的Locale语言文件-存储文件必须是ASCII文件-如果是ASCII以外的文字,必须用Unicode的表示\uxxxxx-可以

2020-09-03 22:16:57 109

原创 Java字符编码

1、字符编码-字符:0,a,我,の-计算机只用0和1-ASCII码:美国信息交换标准代码,奠定计算机编码基础用一个字节来存储常用符号-Unicode字符集:不断扩充,存储所有字符-编码方案-UTf-8:兼容ASCII,变长(1-4个字节存储字符),经济,方便传输-ANSI编码Windows上非Unicode的默认编码记事本默认采用ANSI保存ANSI编码文件不能兼容使用Java的字符编码1、源文件代码:采用UTF-82、程序内部采用UTF-16编码存储所有字符3、和问价文本文件

2020-09-03 21:02:49 97

原创 Java单元测试和JUnit

测试-在规定的条件先对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。-软件测试分类单元vs集成测试白盒vs黑盒测试自动vs手动测试回归测试压力测试-单元测试(unit testing):对软件中最小可测试单元进行检查和验证,通常是一个函数/方法-单元测试是已知代码结构进行的测试,属于白盒测试-集成测试是将多个单元相互作用,形成一个整体,对整体协调性进行测试-一般从构成系统的最小单元开始,持续推进到单元之间的接口知道集成为一个完成的软件系统为止-白

2020-09-02 22:14:18 112

原创 java Maven基础概念和实战

1、Maven开发流程-新建Maven项目-在中央仓库查找第三方jar的依赖文本、-拷贝依赖文本至项目的pom.xml-执行Maven build,编译构建整个项目Maven是一个构建工具,自动下载中心文库的jar文件,存在本地进行管理,编译,测试,运行和打包发布Java项目-XML文件-包含了项目信息,依赖信息,构建信息-构建信息(artifact):groupId组织,artifactId产品名称,version版本-Maven仓库和管理各种构件1、本地仓库(本地用户的.m2文件夹)

2020-09-01 22:08:56 139

原创 Java二进制文件读写

-二进制文件1、狭义上说,采用字节编码,非字符编码的文件2、广义上说,一切文件都是二进制文件3、用记事本无法打开-二进制读写1、输出数据到文件中2、从文件中读取数据FileOutputStream:节点类,负责写字节BufferedOutputStream:装饰类,负责写字节数据到缓冲区DataOutputStream:转化类,负责数据类型到字节转化import java.io.*;public class Person2{public static void main(String

2020-08-31 20:33:11 828

原创 Java文本文件读写

-文件类型一般文本文件,如txt一般二进制文件,如数据文件dat,照片文件带特殊格式的文本文件,如xml带特殊格式二进制文件,如doc ppt-文件是数据的一个容器-文件可以存放大量的数据-文件很大,注定java智能以流的形式依次处理-写文件FileOutputStream:往文件写字节OutputStreamWriter:字节忽然字符转化BufferWriter:写缓冲区类,加速写操作三者构建关系FileOutputStream(OutputStreamWriter(Buffer

2020-08-30 21:42:29 112

原创 Java io 包概述

IO包-java读取文件只能以数据流的形式进行读写-节点类:直接对文件进行读写-包装类:转化类:字节,字符,书籍类型的转化类装饰类:装饰节点类字节:byte,8bit,最基础的存储单位字符:a,我,1000;数据类型:整数小数,字符串文件是以字节保存因此程序将变量保存到文件需要转化节点类:直接操作文件类inputstream:数据局从文件读取到java里outputstream:数据从java输出到文件里转换类:字符到字节之间的转化InputStreamReader:文件读取时字节

2020-08-29 20:28:55 161

原创 Java文件处理

文件概述-文件系统是OS(操作系统)管理的-文件系统和Java进程是平行的,是两套系统-文件系统是由文件夹和文件递归组合而成-文件迷离分隔符-文件包括文件里面的内容和文件的基本属性-文件基本属性(名称,大小,扩展名,修改时间)Java文件类File-Java.io.file 是文件和目录的重要类-File类与操作系统无关-File不涉及具体的文件内容,只涉及属性...

2020-08-29 19:02:15 173

原创 Java数据结构工具类

JCF工具类-不存储数据,而是在数据容器上实现高效操作(排序,搜索)-Arrays类-Collections类Arrays类:处理对象是数组-排序:对数组排序,sort/parallelSort-查找:从数组中查找一个元素,binarySearch-批量拷贝:从源数组批量复制元素到目标数组,copyOf-批量赋值:对数组进行批量赋值,fill-等价性比较:判定两个数组内容是否相同,equalsimport java.util.Arrays;import java.util.Random

2020-08-26 22:14:21 163

原创 Java数据结构映射Map

Map映射-数学定义:两个集合之间的元素对应关系-一个输入对应一个输出-{key, Value}键值对,K-V对Java中Map-Hashtable(同步,慢,数据量小)-HashMap(不支持同步,快,数据量大)-Properties(同步,文件形式,数据量小)Hashtable-K-V对-同步,多线程安全,无序的,适合小数据量-主要方法:clear,contains/containsValue,containsKey,get,put,remove,sizeHashtable&lt

2020-08-24 20:49:27 166

原创 java集合set

集合set-确定性:对任意对象都能判定其是否属于某一个集合-互异性:集合内每个元素都是不相同的,注意是内容互异,地址不同内容相同也是互异-无序性:集合内顺序无关集合接口Set-HashSet:基于散列函数的集合,无序,不支持同步,基于HashMap,可容纳null元素-TreeSet:基于树结构的集合,可排序的,不支持同步-LinkedHashSet:基于散列函数和双向列表的集合,可排序,不支持同步,可容纳null元素,通过一个双向链表维护插入顺序HashSet——————————————

2020-08-20 21:27:48 90

原创 Java数据结构-列表List

List-有序的Collection-允许重复元素List主要实现-ArrayList(非同步)-LinkedList(非同步)-Vector(同步)ArrayList-以数组实现的列表,不支持同步-利用索引的位置可以快速定位访问-不适合指定位置的插入和删除动作-适合变动不大,主要用于查询的数据-和Java数组相比,其容量是可动态调整的-ArrayList在元素填满容器是会自动扩充容器大小的50%——————————————————————————————————/**@

2020-08-18 22:25:20 369

原创 java数据结构-JCF

JCF-容器:存放数据的空间结构-容器框架:为表示和操作容器而规定的一种标准体系结构对外的接口:容器所能存放的抽象数据类型接口的实现:可复用的数据结构算法:对数据的查找和排序-容器框架的优点:提高数据的存取效率,避免重复劳动-JCF集合框架 Java Collection Framework功能强大易于学习接口是实现分离,多种设计模式设计更加灵活泛型设计JCF的集合接口是Collection-add,contains, remove,size-iterator(迭代器)JCF的

2020-08-16 21:38:20 145

原创 Java数据结构-数组

数组1、数组是一个可以存放多个数据的容器-数组是同一种类型-所有的数据是线性规则排列-可通过位置索引来快速定位访问数据-需要明确容器的长度2、java数组定义和初始化int a[] //a没有new操作,实际是null,也无内存位置int[] b //同上int[] c = new int[2]//c有两个元素都是零c[0] = 10,c[1] = 20 //逐个初始化int d[] = new int[]{1,2,3} //d有三个元素int e[] = {1,2.3}//同上3

2020-08-16 20:49:22 66

原创 java类库(二)

格式化相关类1、java.text 包java.text.Format 的子类-NumberFormat:数字格式化,抽象类,DecimalFormat:例如将1234567格式化输出为1.234,567-MessageFormat:字符串格式化,文本格式化-DateFormat:日期时间格式化,抽象类,SimpleDateFormat2、java,time.format-DateTimeFormatter数字格式化DecimalFormat df1,df2;//整数部分为0,#认为整数

2020-08-13 22:06:49 53

原创 java类库

类库概述利用JavaDoc技术,将这些注释抽取出来,组织形成以HTML为表现形式的API(Application Programming Interfa 应用程序接口)文档数字相关类1、整数:short16,int32,long642、浮点数:Float32单精度,Double32双精度3.、大数类:BigInteger(大整数)支持无限大的整数运算,BigDecimal(大浮点数类)4、随机类:Random5、工具类:Mathimport java.math.BigInteger;pu

2020-08-12 21:49:37 95

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除