Java基础
文章平均质量分 64
ly_dsjing
这个作者很懒,什么都没留下…
展开
-
serialVersionUID 的说明
实现 java.io.Serializable 这个接口是为了 序列化,seriaVersionUID 用来表明实现序列化类的 不同版本间的 兼容性。如果修改了此类,要修改此值,否则采用以前用老版本的类 序列化的类 恢复时 会出错。serialVersionUID 的 作用:序列化时,为了保持版本的兼容性,即在版本升级时,反序列化,扔保持对象的唯一性可以随便写一个,在 Eclipse中,它替你生成一个,有两种生成方式:一个是默认的 1L,比如:private static final long s原创 2021-03-01 10:23:01 · 728 阅读 · 0 评论 -
return 0和return 1和return -1的区别
文章目录1 返回值 int类型 的函数返回2 布尔类型返回转载1 返回值 int类型 的函数返回return语句用来结束循环,或返回一个函数的值return 0:一般用在主函数结束时,按照程序开发的一般惯例,表示成功完成本函数return -1::表示返回一个代数值,一般用在子函数结尾。按照程序开发的一般惯例,表示该函数失败以上两个是约定俗成,系统提供的函数绝大部分定义为 int类型 返回值 的 都是这样的。返回值是返回给系统用的,给系统看得。一般做 调试 的时候也会用的,当出现错误的时候转载 2020-07-15 13:53:49 · 3360 阅读 · 0 评论 -
接口回调
文章目录1 理解2 具体解析3 具体实例3.1 Boss通知员工做事情,员工完成任务之后告诉Boss完成情况。3.2 A让室友帮忙做作业 --- 使用匿名内部类实现1 理解编程分为两类:系统编程(库/函数),应用编程(应用/函数)。一般,库函数会提供 API(接口),拿过来直接用就好,但是有时候为了更加灵活的编程,有些库函数会要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的,后又被调用的函数,称为回调函数旅馆提供 叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话原创 2020-06-09 12:34:28 · 220 阅读 · 0 评论 -
Java static final的用法和意义
static finalstatic作用于成员变量,用来表示,在内存中只保存一份副本,即在内存中只有一个,静态变量被所有对象所共享,但是它可以被重新赋值fianl修饰类,类不能被继承,修饰方法,不可以被覆盖,修饰的变量,为常量,不能被修改final如果修饰的成员变量是基本类型,则表示这个变量的值不能改变如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的public static final 和 public fina原创 2020-06-02 00:17:12 · 395 阅读 · 0 评论 -
Java变量类型
在 Java中,变量在使用前,必须先声明Java语言支持的变量类型有:类变量(静态变量),实例变量,局部变量,引用变量类变量(静态变量):独立于方法之外的变量,用 static修饰实例变量:独立于方法之外的变量,不过没有static修饰局部变量:类的方法中的变量引用变量:数组类型,类类型,接口public class Variable{ static int allClicks = 0; // 类变量 String str = "hello world"; // 实例变量原创 2020-06-01 17:15:43 · 109 阅读 · 0 评论 -
String深入理解
1 String对象存放位置1) 直接指定内容的String对象存放在字符串常量池中String s1 = "Hello";String s2 = "Hello";System.out.println(s1 == s2); // trues2直接指向s1的内存地址,两者公用同一个字符串,都在常量池中2) 只有使用引号包含文本方式创建的String对象之间使用"+"链接产生的新对象才会被加入到字符串池中,其他的要在堆中创建即只有常量用"+"连接才放入字符串池中String s7 = "H原创 2020-06-01 14:27:19 · 225 阅读 · 0 评论 -
Java String,StringBuffer与StringBuilder
111原创 2020-05-29 16:09:46 · 154 阅读 · 0 评论 -
Java常量池
文章目录1 什么是常量2 常量池3 常量池的优点4 常量池分类详解4.1 字符串常量池4.2 class常量池4.3 运行时常量池1 什么是常量用 final 修饰的成员变量表示常量,值一旦给定就无法改变。final 修饰的变量有3种:静态变量,实例变量和局部变量,分别表示 3种类型的常量。2 常量池常量池即 常量共享的一种方案。5种包装类(Byte,Short,Integer,Character,Long),都实现了常量池技术。内存中缓存了 -128 ~ 127 范围内的数据,其中 Byte类原创 2020-05-29 15:03:11 · 172 阅读 · 0 评论 -
Java强引用,软引用,弱引用与虚引用
目录1 概述2 强引用(StrongReference)3 软引用(SoftReference)4 弱引用(WeakReference)5 虚引用参考资料深入理解1 概述引用类型被回收时间用途生存时间强引用从来不会对象的一般状态JVM停止运行时软引用内存不足时对象缓存内存不足时弱引用JVM垃圾回收时对象缓存GC运行后虚引用未知未知未知2 强引用(StrongReference)开发中,定义的引用一般都是强引用,这是最普遍的使用原创 2020-05-28 17:25:50 · 201 阅读 · 0 评论 -
JavaGC机制详解
文章目录1 概述2 总结3 堆内存的划分4 GC算法4.1 标记清除算法4.2 复制算法4.3 标记整理算法参考文档1 参考文档2 参考文档31 概述在 Java中,对象实例都是在堆上创建。方法区,又叫静态成员区,所有的 **1 类(class),2 静态变量(static变量),3 静态方法,4 常量,5 成员方法**都存储在方法区方法区和栈区,被所有线程共享,是不安全的GC机制由 JVM 提供,用来清理需要清除的对象,回收堆内存GC由垃圾回收器守护线程执行从内存回收一个对象之前,原创 2020-05-27 17:12:35 · 717 阅读 · 0 评论 -
JVM结构及GC机制
GC主要用于管理 JVM 的 堆区,所以先介绍一下 JVM的内存分配JVM主要包括:程序计数器,Java虚拟机栈区,本地方法栈,堆区,方法区1 程序计数器( Program Counter Register)程序计数器是一块小的内存空间,它是当前线程执行字节码的行号指示器,字节码解释工作器就是通过改变这个计数器的值,来选取下一条需要执行的指令。它是线程私有的内存,也是唯一 一个 没有 OOM异常的区域。2 Java虚拟机栈区( Java Virtual Machine Stacks)是通常原创 2020-05-27 14:56:39 · 404 阅读 · 0 评论 -
Java Integer与int
文章目录1 Integer1.1 Integer概述1.2 Integer类的构造方法1.3 Integer类的常用方法1.4 Integer的缓存1.5 [警惕 Integer.MAX_VALUE 造成的死循环](https://blog.csdn.net/qq_33611068/article/details/77369050)2 Integer与 int 的区别JAVA是面向对象的语言,在JAVA中,一切皆对象,因此,JAVA中有很多对象间的转换方式,对象(类)封装了自己的常用方法,但是 八大基本类原创 2020-05-26 11:15:24 · 204 阅读 · 0 评论 -
int a = 1存放的位置
参考资料1参考资料2方法内定义的基本数据类型放在帧栈里,而且栈里面的数据是线程独有的,不共享 — 《深入理解 JVM》所以,局部成员变量 int a =1; 1存放在栈内存,那么 成员变量 int a=1; 存放在哪儿?Java虚拟机栈是线程私有的,生命周期跟线程相同,每个方法调用的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每个方法调用的过程,就代表了一个栈帧在虚拟机栈中入栈到出栈的过程,当进入一个方法时,这个方法在栈中需要分配多大的内存都是完全原创 2020-05-25 17:05:52 · 3069 阅读 · 4 评论 -
Java中的 ==与 equals
文章目录1 概述1.1 ==1 概述== 比较的是 所指向的对象的地址equals 比较的是 所指向的对象的内容注:equals方法不能作用于基本数据类型的变量用 == 比较基本数据类型的变量,比较的是它们的值equals是基类 Object 中的方法,它也是用 == 来实现的,所以使用中的其他类,基本上都对 equals进行了重写,让其比较的是内容总结:因为比较引用所指向的对象的地址不常用(一般意义不大),在开发中&ensp 如果比较基本类型变量的值是否相同,用 ==,原创 2020-05-25 14:14:34 · 167 阅读 · 0 评论 -
Java多态的理解
Java多态在开发中的使用Java中,多态实现机制,靠的是,父类或接口定义的引用变量,可以指向其子类或其具体的实现类实现多态的必要条件:继承,重写,父类引用指向子类对象\color{#871F78}{实现多态的必要条件:继承,重写,父类引用指向子类对象}实现多态的必要条件:继承,重写,父类引用指向子类对象继承:子类继承父类 extends重写:子类重写父类的某个(所有方法),实现子类特有的功能父类引用指向子类对象 Person p = new Child();多态性是对象多种表现形式的体现原创 2020-05-20 17:32:28 · 167 阅读 · 0 评论 -
Java 基础 --- 匿名内部类
1 匿名内部类定义方式2 注意事项3 使用的形参 必须为 final4 实际应用4.1 抽象方法应用4.2 使用在接口上4.3 在多线程中的应用1 匿名内部类定义方式new A() { // A 表示对象名 …. // 内部类体 } ; 分号代表 创建匿名内部类的 引用表达式的 标识使用前提:...原创 2018-09-06 17:29:49 · 387 阅读 · 0 评论 -
Java 基础 --- 内部类
1 为什么会出现内部类(作用)2 成员内部类3 局部内部类4 匿名内部类5 静态内部类1 为什么会出现内部类(作用)为什么会出现内部类class Outer{ private int num = 3;}class Inner{ void show(){ System.out.println("show ...原创 2018-09-06 15:30:32 · 130 阅读 · 0 评论 -
Java多态性理解,好处及精典实例
转自:https://blog.csdn.net/jian_yun_rui/article/details/52937791核心:1 多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编译时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时...转载 2018-09-04 17:27:41 · 306 阅读 · 0 评论 -
Java 面向对象 三大特征3 --- 多态
1 什么是多态2 多态存在的前提3 多态成员访问特点4 多态的弊端5 转型和类型判断 instanceof 6 多态的举例说明调用方法时,会 调用子类的实现, 这一点最关键,也是多态的核心和精髓,是多态设计的目的。多态后,不能使用子类特有的属性和方法对于多态,只有成员方法是动态绑定的,看子类 , 其他都看父类1 什么是多态父类的引用...原创 2018-09-04 17:05:06 · 274 阅读 · 0 评论 -
Java 基础 --- 接口
1 为什么会有接口(作用)2 接口的定义3 接口的特性4 接口与抽象类的区别1 为什么会有接口(作用)定义一个规则,只要类(对象)符合这个规则,就可以使用,规则在 Java中,就是 接口 接口就是,把公用的功能抽取出来,谁需要这个功能,谁来实现implements它举例: /*不只是狗具有导盲功能,其他动物也有。如果定义为抽象类,那只能单继...原创 2018-09-04 14:32:56 · 240 阅读 · 0 评论 -
Java 基础 --- 接口与抽象类
1 为什么要有抽象类2 有了抽象类,为什么还需要接口3 有了接口,为什么还要抽象类1 为什么要有抽象类一般类里定义的方法,子类也可以覆盖,为什么要定义抽象类呢?首先,一个类如果被定义成抽象类,那说明,每个子类都有自己独特的实例化方法,父类定义的方法没有任何作用。没有任何作用还要定义,就不符合代码设计的 简洁性的思想,应该抽取的更简洁一点其次,最重要的...原创 2018-09-04 11:42:32 · 206 阅读 · 0 评论 -
Java 关键字 --- final, super, transient
为什么要用 final 修饰变量 在程序中,如果一个数据是固定的,那么直接使用这个数据就可以了。但是,这样阅读性差,所以给该数据起个名称。 写法规范:常量所有字母都大写,多个单词,中间用 _ 连接用法和注意事项 1 fianl 是一个修饰符,可以修饰类,方法,变量 2 final 修饰的类,不可以被继承 3 final 修饰的方法,不可以被覆盖 4 final ...原创 2018-09-03 12:59:44 · 195 阅读 · 0 评论 -
面向对象 三大特性1 --- 封装
1 封装定义优点原则封装 继承 多态面向对象思想,有 3大特性,封装,继承,多态 个人认为,这 3大特性,是整个 面向对象思想的核心和精髓,深刻理解和掌握这 3大思想,是好好掌握 Java语言的关键。1 封装定义隐藏对象的属性 和 实现细节,仅对外提供 公共访问方式 属性,几乎都隐藏,保证安全 对外提供 公...原创 2018-09-03 11:53:01 · 244 阅读 · 0 评论 -
Java 关键字 --- static
1 为什么会出现 static (作用)2 static 的特点3 static 使用场景和注意事项static — 数据共享1 为什么会出现 static (作用)static — 数据共享public class Person { private String name; private int age; static S...原创 2018-08-31 09:51:12 · 207 阅读 · 0 评论 -
Java 关键字 --- this
1 this出现的原因2 this的作用1:区分参数变量和实例变量3 this的作用2:在构造函数中调用其他构造函数4 应用this 代表本类对象的 引用 (地址)区分 参数变量 和 实例变量在构造函数中 调用 其他构造函数1 this出现的原因当方法中参数的变量名和实例变量的变量名 相同时,则需要使用 this.变量名 来表示实例变量。class...原创 2018-08-29 14:27:28 · 159 阅读 · 0 评论 -
java中的字符,字节和编码
...转载 2018-09-10 10:24:56 · 714 阅读 · 0 评论 -
Java 基础知识点 --- 符号
1 分号 ;1.1 分号的作用1.2 错误使用 分号 ; 导致的代码异常问题1.3 Java 大括号{} 后面,什么时候需要 分号 ;2 点操作符(.)3 括号 — 小括号(),中括号[],大括号{}4 逗号操作符(,)1 分号 ;1.1 分号的作用在 Java 中,分号代表一个语句的结束 所以,即使分号前面没有任何内容,那么一个分...原创 2018-09-06 11:30:20 · 2586 阅读 · 0 评论 -
Java 基础知识点
1 JAVA 类,对象,成员2 位(b),字节(B),字符,编码方式1 JAVA 类,对象,成员类:对象的模板 对象:类的实例 成员:属性和方法的集合 — 成员变量,成员函数2 位(b),字节(B),字符,编码方式位(bit):也叫 比特位,是计算机最小的存储单位。以 0 或 1 来表示比特位的值。越多的 比特位数,可以表现越复杂的图像信息。...原创 2018-09-05 14:35:01 · 218 阅读 · 0 评论 -
Java 基础 --- 抽象类
1 概述2 特点3 细节1 概述对方法,不断的向上抽取,只抽取方法的声明,不抽取方法的具体内容。 既然功能定义不了内容,就直接 分号 ; 结束,不用大括号 * void method();* 这种函数,没有具体内容,用 abstract 标识 * abstract void method(); 抽象函数所在的类,也必须标记为抽象的2 特点...原创 2018-09-03 17:20:42 · 169 阅读 · 0 评论 -
对象的初始化顺序 & 对象在内存的具体初始化过程
规律: 1 先父类,后子类 2 先静态成员,后非静态成员,最后是默认构造函数 3 先执行父类的默认构造函数,再执行子类的非静态对象顺序: 1 父类的静态成员 2 子类的静态成员 3 父类的非静态成员 4 父类的默认构造函数被调用 5 子类的非静态对象(变量) 6 子类构造函数对象在内存的具体初始化过程/*一个对象的实例化过程:A a = ne...原创 2018-09-03 16:01:28 · 407 阅读 · 0 评论 -
面向对象 三大特征2 --- 继承
1 概述2 单继承与多重继承3 子父类中成员特点3.1 成员变量a 区分b 子父类成员变量的内存图解3.2 成员函数覆盖3.3 构造函数封装 继承 多态面向对象思想,有 3大特性,封装,继承,多态 个人认为,这 3大特性,是整个 面向对象思想的核心和精髓,深刻理解和掌握这 3大思想,是好好掌握 Java语言的关键1 概述父...原创 2018-09-03 15:37:31 · 167 阅读 · 0 评论 -
Java 基础 --- 关于主函数 main() 的 一点解析
主函数的特殊之处: 1 格式是固定的 2 被 jvm 所识别和调用解析: public : 因为权限必须是最大的 static : 不需要对象的,直接用主函数所属类名调用即可 void : 主函数没有具体的返回值 main : 函数名,不是关键字,只是一个 jvm 识别的固定的名字 String[] args : 这是主函数的参数列表,是一个数组类型的参数,而且...原创 2018-08-31 10:14:55 · 2085 阅读 · 0 评论 -
Java 基础 --- 构造函数
1 概述1 概述1-1 为什么会出现构造函数(作用)给对象进行初始化 对象不初始化,没办法使用,构造函数的作用就是给对象进行初始化1-2 构造函数的特点...原创 2018-08-29 10:56:46 · 328 阅读 · 0 评论 -
面向对象1--- 思想和基本概念
1 基本思想2 类(Class) 与 对象(Object) 之间的关系3 对象的内存体现1 基本思想面向对象与面向过程的特点 面向过程,强调的是过程(动作),比如,把水果存进冰箱,面向过程的思想是这样的: 打开冰箱 存储水果 关闭冰箱面向对象,强调的是对象(实体),是对象本身具备什么样的功能,比如,把水果存进冰箱,面向对象的思想是这样的:...原创 2018-08-28 15:09:40 · 328 阅读 · 0 评论 -
Java if else不加花括号{}的用法
文章目录1 只有一对 if else 时,后面不加{},就近原则,只控制第一句2 多个 if else时,if else按照就近匹配的原则进行匹配,这时候,不加{},很容易出错3 总结今天看代码,发现有的 if else语句后面没有花括号 {}final void lock(){ if(compareAndSetState(0,1)) setExclusiveOwnerThread(Thread.currentThread()); else acquire原创 2020-06-18 11:18:46 · 10260 阅读 · 0 评论 -
Java关键字 volatile
volatile 的 作用:1 保证了变量的 可见性 :被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象2 当操作该volatile变量时,所有前序对该变量的操作都已完成(如不存在已变更,但未写回主存的情况),所有后续对该变量的操作,都未开始3 volatile只能保证变量的可见性,不能保证对volatile变量操作的原子性参考文章...原创 2020-06-17 15:30:06 · 127 阅读 · 0 评论 -
Java原子性操作及应用
文章目录1 原子性2 原子性操作3 Java原子性操作的理解(赋值和自增自减)3.1 赋值操作是否是原子性 --- 不是3.2 自增自减操作是否是原子性 --- 不是1 原子性原子性:一个操作,或者多个操作,要么全部执行并且执行的过程中 不会被任何因素打断,要么就 都不执行2 原子性操作和原子性是一个意思,不需要 synchronized。指不会被线程调度机制打断的操作,这种操作,一旦开始,就一直运行到结束,中间不会有任何 context switch原子操作可以是一个步骤,也可以是多个操作原创 2020-06-17 15:21:39 · 275 阅读 · 0 评论 -
Java关键字 --- final
final 可以用来修饰 类,方法,变量(成员变量和局部变量)1 修饰类表明这个类不能被继承,final 类中的所有成员方法都会被隐式的指定为 final方法在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类2 修饰方法可以把该方法锁住,被 final 修饰的方法,在子类中不能被覆盖类的 private方法,会隐式得被指定为 final方法3 修饰变量final 变量,如果是基本数据类型的变量,则其数值,一旦初始化原创 2020-06-16 14:30:36 · 120 阅读 · 0 评论 -
Java的值传递与引用传递
文章目录1 概述2 值传递3 引用传递3.1 一般的引用传递3.2 方法参数为包装类型的引用传递3.3 引用传递在方法中改变引用地址的情况参考文章1 概述Java的实参和形参之间的数据传递分为:值传递与引用传递,只需牢牢记住一点:这两种类型都是将外面的参数变量拷贝一份到局部变量中,基本类型为值拷贝,引用类型就是将引用地址拷贝一份。值拷贝:形参得到的是拷贝的值,形参怎么变,都不会影响实参引用地址拷贝:拷贝的是引用地址,形参和实参指向的是同一个引用地址,形参的改变会影响实参。只要在方法中,形参没有原创 2020-06-16 11:43:26 · 148 阅读 · 0 评论 -
Java 内部类实例
为什么需要 Java内部类1 每个内部类都能独立的继承一个接口的实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。内部类使得多继承的解决方案变得完整2 方便将存在一定逻辑关系的类组织在一起,又可以对外界隐藏3 方便编写事件驱动程序4 方便编写线程代码1 根据注释填写 1 2 3 处的代码public class Test { public static void main(String[] args) { // 初始化 Bean1原创 2020-06-15 14:33:20 · 223 阅读 · 0 评论