
java基础
文章平均质量分 63
中都
风习袅袅,盈水展千华,飞檐亭角清铃响;犹记当初,你回眸莞尔,一笑倾城百日香。!
展开
-
常见的Lambda表达式
【代码】常见的Lambda表达式。原创 2023-06-04 14:56:50 · 238 阅读 · 0 评论 -
JSON参数对应
这样就把收到的 _id 关联的值放到 id 这个字段了;原创 2023-02-10 17:38:46 · 163 阅读 · 0 评论 -
JNA学习
一、JNI提到JNA 就不得不提一下JNI(Java Native Interface),有过不同语言间通信开发经历的一般都知道,它允许java和其他语言代码(尤其是C/C++)进行交互,只要遵守约定即可。首先看下JNA调用C/C++过程,注意写程序时自下而上,调用时自上而下:可见步骤之多,调用.dll/.so共享库之痛苦的过程。若已有编译好的.dll/.so文件—>需先用是C语言另外写一个.dll/.so共享库,使用SUN规定的数据结构代替C语言的数据结构,调用已有的dll/so中公布的函数原创 2021-08-18 15:56:00 · 3362 阅读 · 1 评论 -
基本数据类型及其包装类
数据类型:基本数据类型之间的类型转换:各基本数据类型的包装类及其默认值:一个字符八个byte位,有的说法是java并没有指定Boolean型占几个字符,但大部分默认一个字符;基本数据类型 大小/字符 封装类 默认值 可表示数据范围 byte 1 Byte 0 -128~127 ...原创 2018-07-01 19:06:19 · 468 阅读 · 0 评论 -
对象排序(Comparable和Comparator的用法和区别)
当对自己定义的数据结构需要进行指定排序的时候,java中给了我们两个接口Comparable和Comparator:Comparable是为了对某个类的集合进行排序,所以此时一般都是这个需要排序的类本身去实现Comparable接口。换句话说,如果某个类实现了Comparable接口,那么这个类的数组或者说List就可以进行排序,很多时候我们无法对类进行修改,或者说此类修改的成本太高,但是又...原创 2018-10-24 15:24:46 · 628 阅读 · 0 评论 -
抽象类和接口
抽象类是对一种事物的抽象,抽象类是类的抽象,是子类的通用特性明白包含了属性和行为,接口是对行为的抽象,定义行为,并不关系谁去实现;抽象类是一种模板,接口是一种契约;对象=状态+行为,抽象类决定状态,接口决定行为;继承是一个 “是不是”的关系,而 接口 实现则是 “有没有”的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系;几个常用的接口:1、Cloneable接口。原创 2018-05-19 15:56:34 · 411 阅读 · 1 评论 -
设计模式——建造者模式和装饰器模式
目录1、建造者模式:2、装饰器模式:1、建造者模式:定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示;说明:一步一步构造一个由多个部分组成的复杂对象;复杂对象示意图:(就像车是由轮胎、方向盘、发动机等等部分组成的)建造者模式结构图:①Builder(抽象建造者):创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方法,一类方...原创 2019-03-17 11:45:31 · 929 阅读 · 0 评论 -
Scanner类
Scanner类既是一个用于扫描输入文本的实用程序,也是使用正则表达式来分析基本类型和字符串的简单文本扫描器。除了能使用正则表达式之外,Scanner类还可以任意的对字符串和基本类型的数据进行分析。方法名作用Scanner(File x)构造一个新的Scanner对象,从指定文件获取内容Scanner(InputStream x)构造一个新的Scanner对象,从指...原创 2018-07-10 03:07:15 · 561 阅读 · 0 评论 -
创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式用new语句创建对象,这是最常见的创建对象的方法。通过工厂方法返回对象,如:String str = String.valueOf(23); 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName(...原创 2018-08-28 10:16:52 · 24601 阅读 · 1 评论 -
内存泄漏以及jmap命令的用法
查看内存泄漏命令:命令作用jps查看java进程号jmp -histo:live 进程号 > 存放路径将进程打印到文本中start 路径名打开文本,查看实例个数过程如下:这是用到的代码(也就是我放到TestDemo1.java中的代码):/** * 栈 */class MyStack { private V[] elem; ...原创 2018-08-04 14:31:17 · 11562 阅读 · 0 评论 -
设计模式——工厂模式
工厂模式可细分为三种:模式名称定义简单说明简单工厂模式根据传入的参数即可返回所需的对象,而不需要知道具体类的类名根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法工厂方法模式定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式使一个类的实例化延迟到其子类将某一类对象的创建过程封装在单独的类中,通过引...原创 2019-06-03 21:28:40 · 723 阅读 · 0 评论 -
数组
目录:1、数组的声明及数组的特点2、数组的初始化3、访问数组元素4、获取数组的长度5、foreach语句6、匿名数组7、打印菱形1、数组的声明及数组的特点数组是相同类型数据的集合,下面是声明数组的格式:格式1:一维数组:数据类型 数组名[];数组名 = new 数组类型[数组长度];二维数组:数据类型[][] 数组名;数据类型 数组名[][];数据类型[] 数组名[] ;...原创 2018-04-29 14:16:38 · 1220 阅读 · 1 评论 -
数组的四种拷贝方式
拷贝数组方式深拷贝/浅拷贝是否产生新的对象备注速度for循环拷贝浅拷贝否拷贝速度最慢4clone拷贝数组浅拷贝会产生新的对象(Object类型的对象)2System.arraycopy浅拷贝否本地方法(native修饰,c/c++代码实现,调用执行速度非常快)1Arrays.copyOf浅拷贝返回一个数组(拷贝什么类型返回什么...原创 2018-04-29 16:25:04 · 1779 阅读 · 0 评论 -
哈希表、哈希函数、哈希冲突与解决
目录哈希函数的构建:哈希表:通过关键码来映射到值的一个数据结构;哈希函数:键与值映射的一个映射关系;哈希函数的构建:常用方法:1、直接寻址法:f(x) = kx+b (k、b都是常数) ,一旦确定了哈希函数,那么添加、获取元素都需要通过这个哈希函数;2、除留余数法:f(x) = x%k (k是常数,k <= m (m为存储位置长度)) ;其他几种方法:方法名说明...原创 2018-08-07 20:13:59 · 956 阅读 · 0 评论 -
值传递和引用传递
目录1、值传递2、引用传递1、值传递值传递的参数都是基本数据类型(如int、long和char等),在值传递里,所以的参数传递都采用值传递的方式,就是传递参数到方法时,方法获得的只是一个副本,所以方法不会改变参数变量的值,只是使用该参数变量的值(如果想要改变实际参数的值,可以把实际参数变为引用类型,变成引用传递就好了)2、引用传递引用传递指参数传递的是引用数据类型,则方法获得的是这个对象的...原创 2018-06-18 18:41:43 · 1151 阅读 · 2 评论 -
设计模式——适配器模式和观察者模式
目录1、适配器模式:2、观察者模式:1、适配器模式:定义:将一个类的接口转换为客户希望的另一个类的接口,适配器模式使得原本由于接口不兼容的那些类可以一起工作;简单说明:它主要是实现接口转换;是原本不兼容的事物能够协同工作,而无须修改现有事物的内部结构;这个模式也很简单,笔记本上的那个拖在外面的黑盒子就是个适配器,一般你在中国能用,在日本也能用,虽然两个国家的的电源电压不同,中国是 220V...原创 2019-04-25 15:52:30 · 1176 阅读 · 1 评论 -
String类解析
目录首先我们看看String类的源代码:各种不同写法字符串的地址:String类的常用方法:首先我们看看String类的源代码:各种不同写法字符串的地址:public static void main(String[] args) { String str1 = "hello"; String str2 = new String("hello"); ...原创 2018-05-10 14:41:29 · 475 阅读 · 0 评论 -
String、StringBuilder和StringBuffer的区别
String、StringBuilder和StringBuffer的区别:类名是/否是可变类是/否是线程安全效率使用环境String不可变类(final修饰的类)否最低单线程、操作的数据量比较少StringBuffer可变类是 (方法由synchronized修饰)比String效率高多线程、操作的数据量比较多StringBuilder可...原创 2018-05-10 23:15:51 · 562 阅读 · 0 评论 -
异常处理
目录Java异常处理机制:自定义异常类:Java异常处理机制:Java语言中,专门用来处理异常的方式有两种:一种是使用try……catch……finally语句处理异常,另一种是利用throws关键字将异常抛出,1、throws声明异常[访问控制阀] 返回类型 方法名称(参数列表) throws 异常类1[,异常类2,……] { …… }如果一个方法A要去调用用Thro...原创 2018-07-01 18:22:54 · 342 阅读 · 0 评论 -
定点数和浮点数的运算
文章目录1、补码加减法2、算法流程3、逻辑实现4、溢出判断5、移位操作6、舍入方法7、定点乘法运算8、定点除法运算9、浮点数相关计算1、补码加减法原码、反码、补码的转换:1、先把数值转换成对应的二进制数;(进制转换);2、再将数值转换成对应的补码形式存储;①如果数值是正数,原码、反码、补码相同;②如果是负数,先将其转换为反码(符号位(即最高位)不变,其他位取反的结果),最后转为补码(反...原创 2018-10-16 15:22:35 · 5044 阅读 · 2 评论 -
设计模式——单例模式
单例模式(构造函数私有,提供一个全局的访问点): 单例类只能产生一个实例 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 场景:一个类可以定义无数个对象,但是只能有一个实例单例模式结构图:线程安全-->是否有竞态条件(临界区代码)对临界区代码段进行原子操作-->加锁(互斥锁、自旋锁、读写锁等)/...原创 2018-10-30 20:50:05 · 673 阅读 · 0 评论 -
泛型基本概念
6、在静态方法中,类不能使用泛型类型的参数,因为静态方法不依赖于对象,如果不依赖于对象,就不知道这个T是什么类型,那编译的时候就没法(静态方法中T:会通过实参的类型推演出泛型类型;这样的话指定擦除到Comparable就停止了,否则的话,擦除到Object,但Object并没有实现Comparable接口,于是便不能比较了;1、可以对类型进行自动检查 =====> 检查并不是替换(编译期间进行检查,放入元素的时候检查)5、一定要加泛型类型的参数,否则就是Object了,又回去了。通配符的上界、下界;原创 2018-06-02 14:58:43 · 478 阅读 · 1 评论 -
用idea如何导入自己写的jar包
package study;/** * 单链表 * @author lzq * * @param &amp;amp;amp;amp;lt;T&amp;amp;amp;amp;gt; */class Node&amp;amp;amp;amp;lt;T&amp;amp;amp;amp;gt; {//链表类 class Entry {//节点类 T data; Entry原创 2018-06-01 13:46:49 · 5457 阅读 · 0 评论 -
Class类和反射
前面学习的是Java处理的基本机制,是先把Java的源文件通过Java编译器编译后生成字节码文件(.class),然后通过ClassLoader机制将这些字节码文件加载到内存中,最后生成相应的实例并执行。那么要如何加载进内存中的数据?例如,如何通过一个实例化的对象获取该对象所在类的信息?实例化Class对象的三种方法1.使用Object类的getClass()方法获取类信息在Jav...原创 2018-06-01 03:42:08 · 476 阅读 · 0 评论 -
各代码执行顺序
Java中,使用{}括起来的代码称为代码块,根据其声明和位置不同,可分为普通代码块、构造快、静态块、和同步代码块:1、普通代码块:直接在一个方法或语句中出现的{}就称为普通代码块,普通代码块和一般的语句执行顺序由它们在代码中的出现次序决定,先出现先执行。2、实例代码块:直接在类中定义(直接是一个{})没有加static关键字的代码块,也叫构造块,构造快在创建对象时会被调用,每次创建对象时都...原创 2018-06-02 21:28:09 · 2217 阅读 · 0 评论 -
继承和多态(动态绑定)
继承继承是两个类之间的一种关系。当一个类B继承了一个已存在的类A后,类B就拥有了类A的所有的非private的以及父类的构造函数以外的所有属性和方法,但同时,类B中还可以根据需要添加新的属性和方法;继承不是子类简单的复制和粘贴父类的属性和方法,子类并不局限于父类提供的属性和方法,还可以定义自身的属性和方法,还可以重写从父类继承来的方法;在java中一个子类只能拥有一个父类,但一个父类可...原创 2018-05-21 18:04:09 · 1782 阅读 · 0 评论 -
类加载机制
从类------->对象分三步:1、加载2、链接(验证、准备、解析)链接的三个步骤:1、验证阶段用于确保类或接口的二进制表示结构上是正确的;2、准备阶段是为类或接口的静态字段分配空间,并用默认值初始化这些字段,这个阶段不会执行虚拟机任何代码;3、解析是根据运行时常量池的符号引用来动态决定具体值的过程;3、初始化(顺序为:静态块、实例块、构造函数)要想要加载一个类,首先...原创 2018-05-25 03:58:34 · 984 阅读 · 3 评论 -
内部类
目录:1、静态内部类2、实例内部类3、局部内部类4、匿名内部类1、静态内部类可以看做static成员;静态内部类的对象要拿外部类名·静态内部类名创建;在静态内部类创建一个外部类对象以访问外部类的非静态数据成员;静态内部类不拥有外部类对象。(就是你不能直接用this去表示外部类对象;你自己在静态内部类创建了一个外部类对象,然后用this去访问外部类的数据,这个this指向的是你自己创建的...原创 2018-04-29 21:43:22 · 322 阅读 · 0 评论 -
类和对象
目录:1、了解2、类和对象1、了解java语言的三大特性:平台无关性、安全性、网络移动性面向对象的特征:封装、继承、多态先了解基本数据成员在子类中的访问权限:访问修饰符同包子类同包非子类不同包子类不同包非子类public(公共的)√√√√protected (受保护的)√√√×默认(就是不写访问修饰符的时候)√√××...原创 2018-04-29 19:24:42 · 293 阅读 · 0 评论 -
数组的方法和属性
目录:数组的深入使用1、命令行参数2、数组操作类数组的深入使用1、命令行参数public static void main(String[] args) 中有一个 String[] args 参数,该参数是一个字符串数组,在 java 命令行后面带上参数 ,java 虚拟机就直接把它存放到了 main()方法中的 String 数组里,该字符串数组是用来保存运行 main()函数时输入的参...原创 2018-04-29 15:29:05 · 2461 阅读 · 0 评论 -
枚举类型
枚举使用enum关键字,(枚举的实例是常量,因此按照命名规范它们都得大写,如果有多个单词用下划线将他们隔开),枚举属于一种类,它有自己的方法,枚举类型可以作为swatch语句的参数(JDK1.5以后支持的),枚举不可以产生实例对象(所有自定义的枚举都是继承Enum(一个抽象类),构造函数默认为私有的);swatch语句的参数只能是byte、short、char、int类型以及他们的包装类和Str...原创 2019-12-04 17:24:22 · 875 阅读 · 0 评论 -
变量和常量
文章目录概念在JVM中存储的位置匿名内部类访问的局部变量为什么需要加final概念变量就是可以被改变的量,在运行的时候才能知道它的值;常量是被final修饰的不可改变的量,常量命名必须大写(java命名规范),在编译的时候就可以确定它的值。为了方便知道他们在内存中的位置,首先看看JVM的内存模型:变量放在哪与它是否被final修饰无关,只与它的位置或是否被static修饰有关。在...原创 2018-10-11 04:27:37 · 421 阅读 · 0 评论 -
四种强度不同的引用
目录四种引用:1、强引用:2、软引用:3、弱引用:4、虚引用:四种引用:1、强引用:如何产生:一般new出来的都是介绍:一个对象如果只有强引用,那么垃圾回收器绝不会回收它;(即使内存空间不足,JVM宁愿抛出内存不足的异常都不会回收该对象);如何回收:将该对象的引用置为null;2、软引用:如何产生:java通过SoftReference处理它;介绍:如果内存充足的情况下,垃圾回收器...原创 2018-10-18 02:59:37 · 521 阅读 · 1 评论 -
++i和i++的区别
计算时,简单点,前置++后置++的不同点在于,i++是在程序执行完毕后进行自增,而++i是在程序开始执行前进行自增;public static void main(String[] args) { int i = 1; System.out.println(i+++i++); //3 System.out.println(&quot;i=&quot;+i)...原创 2018-10-12 12:37:45 · 848 阅读 · 0 评论 -
逻辑运算符和位运算符详解
逻辑运算符运算符用法含义说明优先级!!x逻辑非当操作数是false返回true;当操作数是true时返回false1&amp;x &amp; y逻辑与两个操作数均为true时,结果才为true,否则为false2^x ^ y逻辑异或两个操作数不相同,即一个为true,一个为false时,结果才为true,否则为false3lx...原创 2018-10-11 20:37:55 · 1642 阅读 · 1 评论 -
clone()方法有什么作用
Java在处理基本数据类型(例如int、char、double等)时,都是采用值传递(传递的是输入参数的副本)的方式执行,除此之外的其它类型(对象啊,String类型等)都是按引用传递(传递的是对象的一个引用)的方式执行。对象除了在函数调用时是引用传递,在使用“=”也是采用引用传递class Obj { private int i = 0; public int getI() { ret...原创 2018-09-25 13:36:08 · 4628 阅读 · 2 评论