java基础
文章平均质量分 72
lidongxiu0714
https://github.com/hpuzzuldx/
展开
-
Java集合-ArrayList源码分析及注意事项
这篇文章给大家带来ArrayList的学习,如果错误希望不吝指出,感谢!平台 jdk1.7,ubuntu 14.021 ArrayList介绍ArrayList是一个数组队列,容量可以动态变化,比java中的数组使用更加方便。ArrayList继承&实现结构图(查看ArrayList): 如图所示ArrayList直接继承自AbstractList,间接实现了L...原创 2017-03-17 11:12:12 · 3211 阅读 · 1 评论 -
java基础之反射
工作中有活干会抱怨,如若没活干呢?1 RTTI和Class运行时类型识别(RTTI, Run-Time Type Identification),RTTI是能在运行时能够自动识别每个编译时已知的类型。java多态就是依赖RTTI实现的。不太懂,简单解释就是子类继承父类,函数参数传入父类类型,如果传入的是子类,运行过程中就可以强制转成子类而不会报错。java中利用Class对象描述类的相关信...原创 2018-10-12 18:35:39 · 2834 阅读 · 0 评论 -
抽象类和接口区别
抽象类:一个类被abstract关键字修饰就是抽象类。定义很简短,可能会有很多朋友质疑,《java编程思想》中说含有抽象方法的类就是抽象类,我试了下只要用abstract修饰的都是抽象类,就算里面不含有抽象方法,语法层面也是正确的。下面所有关于抽象类的总结都是基于抽象类含有抽象方法。下面说一下抽象类的特点:(1)抽象类由于含有抽象方法(未实现)所以无法实例化,需要被继承(2)继...原创 2018-09-28 17:54:30 · 2721 阅读 · 0 评论 -
java基础之多态性
面向对象语言的三大特性:封装、继承、多态。下面简单讲解java这三大对象的概念:封装:java中通过定义类,把属性,方法封装进类中,通过类只有希望用户访问的功能用户才能调用。继承:java中通过子类继承父类,子类可以继承父类功能。多态:java中父类指向子类,通过动态绑定父类实例可以调用子类重写父类的功能。刚上大学自学C++时讲述面向对象特征时就会列举这三个概念,java语言也不例...原创 2018-10-08 10:53:21 · 2807 阅读 · 0 评论 -
java基本类型和包装类型
java是面向对象的语言为什么还要有基本类型,只有包装类型完全面向对象不行吗?java语言可以只有基本类型吗,为什么还有要包装类型?java中的基本类型和包装类型: 基本类型 包装器类型 boolean Boolean char Character int Integer byte Byte short Short...原创 2018-10-08 11:20:21 · 3320 阅读 · 0 评论 -
JVM学习之运行时数据区
深入理解jvm看过很多遍,每次遇到问题总是要去翻书,今天开始把知识点记录在博文中,网上的JVM教程多如牛毛,我在此处只做记录用。以下总结内容来自-----《深入理解Java虚拟机_JVM高级特性与最佳实践》java能够实现跨平台特性依靠java虚拟机和字节码文件,JVM利用垃圾回收算法实现内存的自动回收,简化了程序中内存的管理,使程序员摆脱了内存管理的束缚,但为了更好了编写高效程序,我们依然要...原创 2018-10-08 15:15:49 · 2927 阅读 · 0 评论 -
JVM学习之对象内存布局,对象头
本篇内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》,感谢作者。创建对象之后需要使用对象,java中除了对对象属性方法的调用以外还有加锁实现同步等其他操作,这里的锁加在了哪里,如何记录锁,如何对锁进行分类(有对象锁,class锁),垃圾回收机制中有关于GC的标记,知道当前对象分代的年龄,这些都需要我们去探寻对象具体的内存布局。1 对象的内存布局HotSpot虚拟机中对象存储......原创 2018-10-08 15:54:29 · 4877 阅读 · 1 评论 -
JVM学习之java线程安全&锁优化技术
以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》感谢作者。1 线程安全的概念 线程安全的概念在书中作者讨论了很多,但都是比较抽象的定义,我所理解的线程安全(主要是对共享数据的操作,保证代码操作的正确性,就是无论在单线程还是多线程操作下,代码得到的结果都是正确的)。2 java语言中的线程安全2.1不可变一个不可变的对象(类似final)一...原创 2018-10-09 10:45:25 · 2936 阅读 · 0 评论 -
java基础之泛型
1 泛型的概念&为什么需要泛型泛型泛化类型就是参数化类型,使原本固定的类型参数化,把类型的确定推迟到使用时才确定。为什么需要泛型:泛型的作用有两个:一是起到约束的作用,定义泛型之后传入其他类型参数编译期就会报错,不会等到使用时发生类型转换错误(ClassCastException)二是定义一次,多种类型都可以使用。泛型中使用较多的是集合。public stat...原创 2018-10-09 14:05:33 · 2754 阅读 · 0 评论 -
Collections.synchronizedCollection 同步方法 & 装饰模式
14年刚开始学习java时从简单的语法开始学习,当时还没有接触到synchronized和lock等同步方法,用的较多的就是集合Collections.synchronizedCollection进行同步的方案。上面的synchronizedXXX函数接收特定的Collection,将转换成包装类型的SynchronizedXXX类型。//SynchronizedList继承自Syn...原创 2018-10-09 15:30:10 · 7335 阅读 · 0 评论 -
设计模式学习之装饰模式
装饰模式(Decorator)又被称为包装模式,是继承的一种替代方案,继承对类的扩展是编译时就确定的,装饰模式可以对客户端透明的方式扩展对象功能,扩展是动态的比继承更具灵活性。 举个例子就拿程序员平时爱喝的咖啡作为例子吧,很多人爱喝咖啡,有人喜欢加糖的,有人喜欢加奶的,有人喜欢加菊花的,也有人喜欢加芥末的。现在有个咖啡店如果利用继承来实现需要有个咖啡基类,然后继承后生成加糖的子类,...原创 2018-10-09 16:45:37 · 377 阅读 · 0 评论 -
JVM学习之垃圾收集算法
以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》,感谢作者!昨天下班后地铁上和以前的同学交谈,才知道永远不尝试新东西永远不会有新思路,希望写完基础系列之后自己能有所进步,然后分析更多有用的东西。1垃圾收集算法分类 垃圾收集算法是如何收集对象,也就是如何回收堆及其他被jvm管理的可回收的内存的算法,和书中一样这里只按照书本记录垃圾收集算法的思路。垃...原创 2018-10-10 10:07:41 · 2633 阅读 · 0 评论 -
JVM学习之java线程实现&调度和状态转换
以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》感谢作者!1 谨慎使用java 多线程 如何提升效率: 使用java时推荐利用多线程处理一些操作绝大多数情况下确实能提高效率,提高效率的原理在哪里呢,为什么说绝大多说情况呢。 在CPU单核时代,我们知道某一时刻工作的线程只能是一条,那多线程为什么还能提高效率呢,因为类似IO这种阻塞操作很多...原创 2018-10-10 18:25:16 · 3059 阅读 · 0 评论 -
DialogFragment的两种使用方式
简单介绍DialogFragment的两种使用方式。AlertDialog 的使用有诸多限制,view事件固定,我们可以自定义view来解决,但缺少生命周期的管理,特别是旋转屏幕等导致界面重绘的操作,可能带来bug。DialogFragment可以很好的确保它能正确处理生命周期事件1 内部使用Dialog展示重写onCreateDialog其他就和Dialog设置方式相同,可以设置view...原创 2018-10-29 11:17:02 · 5851 阅读 · 0 评论 -
Android中AlertDialog的简单使用
android中弹框很多种,alert框,dialog,AlertDialog,popupwindow,DialogFragment,toast,dialog样式的activity等等,今天讲解AlertDialog的简单使用。1 AlertDialog.Builder 设置相关参数图标,title,message,按钮,是否点击消失等等。 public void showDialog(){...原创 2018-10-29 14:26:21 · 4033 阅读 · 0 评论 -
Android app版本升级的一个简单实现
1升级原理build.gradle 中 versionCode 1 , versionName “1.0.0” 是升级的关键,versionCode是个int,versionName是个String,其中versionCode每次要升级版本都需要+1,VersionName是给用户看的,让用户知道当前版本。升级原理:从服务器获取升级信息,包括versionCode,versionN...原创 2018-10-29 15:07:59 · 7861 阅读 · 3 评论 -
java基础之replace,replaceAll
以下代码结果都是显示在Console框中,所以\n会被解析成换行,\n只显示\n。1替换中特殊符号处理开发中经常遇到语言中的特殊符号,有时要存入数据库,有时需要解析json中的特殊符号,有时需要显示特殊符号,android中的很多控件支持文本中\n换行,此时就会涉及到\n中的处理。首先要想把\n存储数据库需要进行转义,其实是对\进行转义,此时从数据库中取出数据就是\n,android中此时直...原创 2018-10-26 18:59:50 · 12865 阅读 · 2 评论 -
java file.deleteOnExit() 解析
File.delete() 直接删除文件File.deleteOnExit() 在退出时删除: public void deleteOnExit() { SecurityManager security = System.getSecurityManager(); if (security != null) { security.chec...原创 2018-11-19 15:47:16 · 3376 阅读 · 0 评论 -
java基础之注解
学习的过程是不断深入的过程,但有时也需要对基础知识重新深入的学习一遍。java注解Annotation1 注解的概念《java编程思想》中注解的定义:注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。元数据:元始的意思,元数据就是描述数据的数据,注解的可以称为描述源码的数据。不太好理解,我自己的理解是注解类似注释,相同点...原创 2018-10-12 11:34:46 · 2896 阅读 · 0 评论 -
java普通for循环和增强for循环中做集合增删会不会出错?
在遍及集合过程中对集合进行删除操作最好不要做,如果非要做可以利用迭代器,并发集合,或者同步代码。 单线程模式下直接使用迭代器提供的remove方法就行或者首先记录下标遍历完后进行删除,多线程模式下建议使用同步或并发结合。1 面试遇到的问题和迭代器没关系考察的是普通的for循环和foreach循环下面先说出观点: 普通for循环遍历集合过程中进行...原创 2018-09-27 11:01:10 · 5432 阅读 · 0 评论 -
java中函数参数传值还是传地址
今天和大家探讨个简单的小问题大笑Java中函数参数是传值还是传地址 刚接触C语言时有一道题困惑了我好久,就是交换两个数的值,本来以为相当简单,只要把要交换的a,b传进去,在函数里面利用一个中间变量就可以完成参数的交换,但如何修改程序都不行,大家不要笑,曾记否刚开始学习是对于a=b和形参实参我就迷惑了好久,好久-^^-。很明显下面的程序无法完成交换。#include<std...原创 2017-03-19 23:01:19 · 10191 阅读 · 0 评论 -
自动拆箱&自动装箱以及String 和基本数据类型封装类生成的对象是否相等
自动拆箱(unboxing)&自动装箱(boxing)@author 李东秀|| qq:1028659927本文主要为自己理解所做的学习笔记,如有不对的地方,望各位看官不吝指出,代码运行环境:Ubuntu 14.04,jdk1.7版本 在jdk 1.5之前,如果你想要定义一个value为100的Integer对象,则需要如下定义: Int原创 2017-03-12 13:14:53 · 6857 阅读 · 2 评论 -
java集合框架介绍
java集合框架:1.Java结合框架的总体结构说明:集合框架是为表示和操作集合而制定的统一的标准,主要包括三大部分:对外的接口,接口的是实现和对集合的运算。简单地说,编程过程中会涉及对一类数据的处理,这类数据用统一的数据结构表示,为能统一的存放、规范的操作就定了存放、操作的结构规范,类似数组。其实在Java2之前sun就提供了集合操作,更准确的叫法应该是容器,比如Vector,Stac...原创 2017-03-14 19:37:59 · 3791 阅读 · 0 评论 -
Java 集合SortedSet&SortedMap讲解
把每天重复的工作做好,把每次遇到的困难解决。这次对java集合框架学习中的两个特殊的接口进行介绍:SortedSet和SortedMap,这两个接口提供排序操作,实现他们的子类都具有接口中定义的功能。Set和Map本身不具备排序功能,提供了SortedMap和SortedSet接口之后可以在提供排序方案的同时,增加更多的获取集合特定位置元素的方法。类似:结合的第一个元素,最后一个元素,位于...原创 2017-03-15 19:24:01 · 22199 阅读 · 3 评论 -
Java集合之NavigableMap与NavigableSet接口
author:lidx 本文接着上篇介绍SortedMap和SortedSet接口,介绍他们的扩展接口NavigableMap与NavigableSet接口,提供了针对给定搜索目标返回最接近匹配项的导航方法。SortedMap和SortedSet接口两个接口jdk1.2就已经提供,扩展的NavigableMap与NavigableSet接口jdk1.6才开始支持。1....原创 2017-03-15 19:57:23 · 25872 阅读 · 3 评论 -
Android属性动画和视图动画的区别
动画入门和进阶文章列表:[Animation动画概述和执行原理][Android动画之补间动画TweenAnimation][Android动画之逐帧动画FrameAnimation][Android动画之插值器简介和系统默认插值器][Android动画之插值器Interpolator自定义][Android动画之视图动画的缺点和属性动画的引入][Android动画之ValueAnimator...原创 2017-04-16 11:36:53 · 5613 阅读 · 0 评论 -
android 初中级面试问题(未整理)
java访问权限(默认,public ,private,protected),访问权限配合继承说明继承,能否继承,能否重写,什么是隐藏,配合static,final,private,字段是否能重写,函数是否能重写,隐藏,构造函数是不能被继承的,如果父类是有参构造函数,子类的构造函数第一句必须调用父类的构造函数,然后才能写自己的逻辑。多态概念,多态和访问权限,多态和static,字段,函数,...原创 2018-08-01 11:49:16 · 3178 阅读 · 0 评论 -
java不用系统函数String转int
public class Demo13 { public static void main(String[] args) throws Exception { String s1 = "-092376"; String s2 = "-a92376"; String s3 = "92376"; String s4 = "923a76"; System.out.println...原创 2018-09-07 13:15:12 · 3150 阅读 · 0 评论 -
java访问修饰符面试相关
一道面试题:java访问修饰符分类?default private public protected 四种四种访问修饰符可以访问,不可以访问情况分析?访问控制分为四种级别: (1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类均可以访问; (2)protected: 用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承...原创 2018-09-25 15:04:57 · 3635 阅读 · 0 评论 -
java继承中的重写和隐藏
继承可以让子类获取父类非private以外的属性方法,这个过程中会发生重写,隐藏。多态的实现就是靠继承和类的向上转型,向下转型实现的。继承部分涉及到访问修饰符请看java访问修饰符,final private方法不能被继承,构造方法不能被继承,但是如果父类含有有参构造函数,子类必须用super调用。父类中的static方法可以被继承,但是不能重写。父类中的属性只能被隐藏不能被重写,子类重...原创 2018-09-25 15:36:42 · 3131 阅读 · 0 评论 -
java内部类为什么可以访问外部类属性方法
java内部类面试题:java内部类分类:成员内部类,局部内部类,静态内部类,匿名内部类静态内部类不能访问外部类的属性方法,所以android开发过程中可以优化handler其他内部类可以访问外部类,是因为持有外部类的引用。成员内部类说明:成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,默认情况下访问的是成员内部类的方法。访问外部类方法:外部类.this...原创 2018-09-25 16:21:18 · 13163 阅读 · 0 评论 -
StringBuilder StringBuffer 如何清空
StringBuilder StringBuffer面试题一般会问两者的区别和String的区别。StringBuffer线程安全的,StringBuild线程不安全的,String的区别是String每次改变都会生成一个新的String对象效率低,StringBuffer和StringBuild则不会生成新的对象。原理是:内部继承AbstractStringBuilder,利用数组进...原创 2018-09-25 16:35:40 · 10682 阅读 · 0 评论 -
HashMap实现原理和扩容及高版本优化
HashMap的实现原理面试简单解答补充面试题:为什么hashcode和equals一般同时重写。hashmap如何判断出现了碰撞,然后存储在链表中。hash算法。这里不剖析源码只简单讲解:1原理简单解析数组结构HashMap内部结构为数组加链表方式,这里可以知道HashMap解决冲突的方法是链地址法,Node<K,V>[] table,Node节点里包...原创 2018-09-26 10:55:36 · 3124 阅读 · 0 评论 -
java集合之LinkedHashMap解析
LinkedHashMap 继承自HashMap,主要结构还是HashMap,添加了双向链表来保证插入顺序或者访问顺序。著名的LRUCache就是借助了LinkedHashMap的保持访问顺序的特性实现的。 //LinkedHashMap中保存的节点,比hashMap中的Node添加了before,after,node中还有next, //添加的两个节点的指针,组成了双向链表...原创 2018-09-26 14:58:51 · 2765 阅读 · 0 评论 -
如何判断一个对象是否可回收,GC回收对象的过程方式,finilized函数
面试问题:判断一个对象是否可用(存活,可回收),GC回收对象的过程方式,finilized函数了解吗,调用了finilized函数的对象一定会被回收吗,可以主动调用finilized函数吗?判断一个对象是否可用:根搜索算法(可达性分析),引用计数法(循环引用,js使用)JVM使用的根搜索算法(引自深入理解JVM):一个对象到GC Roots没有任何引用链相连,则该对象不可用,这...原创 2018-09-26 16:58:07 · 5955 阅读 · 0 评论 -
JVM学习之java内存模型
JVM学习之java内存模型以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》感谢作者!!java虚拟机规范定义了一种java内存模型(JMM)来屏蔽不同硬件和操作系统的差异,达到跨平台运行效果,内存模型的定义一个宗旨就是并发内存访问操作不会产生歧义。类似C和C++等主流语言直接使用物理硬件和操作系统的内存模型,因此会由于不同平台内存模型的差异导致程序在一个平台上开发并...原创 2018-10-11 11:01:30 · 2736 阅读 · 0 评论 -
java基础之Enum枚举
1 enum的简单使用枚举是jdk1.5添加的新特性,枚举enum可以将一组具名的值得有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用。上面的说明来自&lt;java编程思想&gt;,我看完了之后得到两个有用信息,把集合表示成一种新类型,新类型可以作为常规的类似普通类进行使用。编程过程中会用到很多很多的常量,普通的定义方式就是通过定义静态变量的方式(我现在有时依然定义成静态...原创 2018-10-11 16:35:17 · 2815 阅读 · 0 评论 -
编译时注解学习二之 注解处理器初探AbstractProcessor
1注解处理器介绍使用注解可以方便开发,因为编译期注解处理器会根据注解自动帮使用者完成很多重复性操作。什么叫编译期注解呢,编译期注解是只在编译期有效的注解,注解处理器根据注解会帮我们生成操作所需的工具类,完成相应操作。类似的框架有黄油刀,EventBus3等。注解处理器Annotation Processor会在编译项目时获取相应的注解,APT(Annotation Process Tool),...原创 2019-07-21 11:25:55 · 3782 阅读 · 0 评论