
JavaSE
文章平均质量分 65
阿毛阿
新手上路
展开
-
映射
import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ResourceBundle;import javax.naming.ldap.Rdn;import com.sun原创 2017-12-11 21:22:22 · 161 阅读 · 0 评论 -
null
一、null代表不确定的对象Java中null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。Java中变量的使用都遵循一个原则:先定义并且初始化后才可以使用。有时候,我们定义一个引用类型变量,在刚开始的时候,无法给出一个确定的值,但程序可能会在try语句块中初始化值。这时,可以先给变量指定一个null值,问题就解决了。转载 2017-12-13 19:10:34 · 272 阅读 · 0 评论 -
Class类
在Java中,每个类都有一个相应的Class类对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中会产生一个Class对象,用于表示这个类的类型信息。获取Class实例的三种方式:1. 调用对象的getClass()方法获取该对象的Class实例;2. 使用Class类的静态方法forName("类名")获取该类的Class实例;转载 2017-12-13 19:00:10 · 133 阅读 · 0 评论 -
代理模式
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------转载 2017-12-13 14:46:12 · 163 阅读 · 0 评论 -
面向接口编程
什么是面向接口编程?如果s转载 2017-12-13 14:02:57 · 127 阅读 · 0 评论 -
浅拷贝|深拷贝
一、浅拷贝什么是浅拷贝?Object类是Java语言所有类的祖先类,所有类皆继承于他。Object类提供了clone方法,为此所有的Java类都可以支持该方法。但是,该方法应用在特定场景下可能是个坑。在拷贝过程中其对象内部的基本类型与String类型的值会被直接拷贝,但是对于数组、对象引用只是拷贝地址,即还是指向原生对象的数组或对象引用,原生对象与拷贝对象这两个对象共享了这些数转载 2017-12-13 13:09:53 · 133 阅读 · 0 评论 -
finally
一、使用finally避免内存泄漏由于Java支持垃圾回收机制,为此,如果函数正常结束或异常而被迫退出,该函数所创建的所有对象会被自动回收,但是对于Socket或File资源必须要执行清理操作,以便资源回收。如果不对这些资源进行回收,那么就会出现内存泄漏。public void reclaimResource() throws IOException{ ServerSocket s转载 2017-12-13 12:56:07 · 272 阅读 · 0 评论 -
String
String s1 = "abcd";"abcd"本身就是一个对象,虚拟机会将它存储在静态存储区。转载 2017-12-08 11:02:56 · 194 阅读 · 0 评论 -
方法改造
1.继承class Cat { public void eat() { System.out.println("爱吃鱼"); }}class LuckCat extends Cat { public void eat() { System.out.println("爱吃菜"); }}2.装饰--接口interface Cat { void eat() ; v转载 2017-12-07 10:11:40 · 140 阅读 · 0 评论 -
回调机制
需要方法a在调用方法b时将逻辑传入,此时,需要使用回调机制。所谓回调就是方法a和方法b约定一个接口,在这个接口中定义一个方法,这个方法的名字通常叫做handler方法。a方法在调用b时,传入此接口的一个实现,利用handler方法将逻辑传入,方法b在执行过程中需要执行传入的逻辑时,调用接口实现的handle方法即可。此时a调用b时,b回来调用a传入的逻辑,所以这个过程叫转载 2017-12-07 14:13:38 · 228 阅读 · 2 评论 -
单例模式的其他实现形式
用静态内部类实现的单例模式public class Singleton { private static LazyHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton() {}; p转载 2017-12-12 09:28:30 · 152 阅读 · 0 评论 -
集合
一、Collection接口1、添加 boolean add(E e) boolean addAll(Collection c)2、删除 void clear() boolean remove(E e) boolean removeAll(Collection c)3、获取长度转载 2017-12-26 17:41:35 · 157 阅读 · 0 评论 -
泛型Generic
泛型Generic:为了运行时期不出现类型异常。可以在定义容器时,规定对象类型。是应用在编译时期的一项安全机制。 1、擦除:生成.class文件时,把泛型去掉了。2、泛型类:在类定义时就明确参数,由该类的使用者来传递具体的类型。 class Util { private E e;}3、泛型方法:转载 2017-12-27 09:08:14 · 162 阅读 · 0 评论 -
Map
Map:双列集合,一次存一对,键值对。要保证键的唯一性。1、共性功能: (1)添加 V put(key,value) 该方法返回上一个此位置的值 void putAll(Map map) (2)删除 void clear() V remove(key) (3)判断 boolean containsKey(obje转载 2017-12-27 09:26:06 · 255 阅读 · 2 评论 -
注解
1、Annotation 注解 :给程序看的提示信息叫做注解@Override:限定重写父类方法@Deprecated:过时@Suppress Warnings:抑制编译器警告2、自定义注解: (1)声明注解 使用@interface关键字来定义注解,在这个类中可以声明注解的属性。public @int转载 2018-01-03 10:11:10 · 268 阅读 · 0 评论 -
堆、栈、常量池
Java语言主要将内部存储划分为以下几个区域:1. 寄存器:最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制。2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员转载 2017-12-13 19:42:33 · 345 阅读 · 0 评论 -
clone
克隆函数的用法:调用clone()方法的对象的类必须实现Cloneable接口。在进行使用时,通常需要先自定义clone()方法,Object提供了一个默认的对象拷贝实现,在自定义时使用super.clone()来调用Object类的clone()方法。该方法并非十全十美,它只是提供了一个浅拷贝的方法,即该方法并不会把对象中的所有属性全部真正的clone一份,有一部分clone转载 2017-12-13 13:29:24 · 265 阅读 · 0 评论 -
映射的运用
假设有一个项目,是这样处理的:1.项目经理A首先写了一个接口,并规定了需要实现的函数(可看作是一个模板,分配给员工去实现这些函数);public interface FileData { public abstract void readUser(); void writeUser();}2.程序员B分配到的任务是写这个接口的实现类来实现这些函数;public clas原创 2017-12-11 20:59:44 · 293 阅读 · 0 评论 -
事件监听
如果想给一个View加一个 事件监听 :实现如果View发生 事件 ,则执行相应 业务操作 的效果。如点击一个Button对象,Button变色:1.首先需要一个实现了 ActionListener接口 的类(此类只有一个actionListener(ActionEvent e)方法 ), 重写actionListener()方法,在方法内部加上所要转载 2017-12-15 11:04:54 · 196 阅读 · 0 评论 -
super|this
this:this关键字只能用于方法的方法体内,表示对“调用方法的那个对象”的引用。当一个对象创建后,Java虚拟机(JVM)就会给这 个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。 super:super关键字和this作用类似,将被隐藏的父类的成员变量和成员方法变为转载 2017-12-13 19:50:36 · 144 阅读 · 0 评论 -
ConcurrentHashMap
首先我们知道HashMap不是线程安全的。在并发插入元素的时候,有可能出现带环链表,让下一次get(key),而key不存在,并且恰好Hash()出的位置是带环链表的位置时,会让程序出现死循环。想要避免HashMap的线程安全问题有很多办法,比如改用HashTable或者Collections.sysnchronizedMap。但是两者有一个共同的问题:性能。无论读操作还是写操作,它们都会给整转载 2017-12-13 09:47:10 · 484 阅读 · 0 评论 -
volatile关键字
一、首先来讲一下Java内存模型(JMM)Java内存模型:Java虚拟机定义的一种抽象规范,为了屏蔽不同硬件和操作系统的内存访问差异, 让Java程序在不同平台下都能达到一致的内存访问效果。注意:因为直接操作主内存太慢,所以JVM不得不利用性能较高的工作内存。这里可以类比一下CPU、高速缓存和内存之间的关转载 2017-12-12 11:19:34 · 114 阅读 · 0 评论 -
Java多线程编程知识点
一、进程与线程进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基 础。 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体; 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实转载 2017-12-12 15:13:26 · 260 阅读 · 0 评论 -
Java内存泄漏
Java内存回收方式Java判断对象是否可以回收使用的而是可达性分析算法。在主流的商用程序语言中(Java和C#),都是使用可达性分析算法判断对象是否存活的。这个算法的基本思路就是通过一系列名为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此转载 2017-12-13 10:39:08 · 97 阅读 · 0 评论 -
HashMap高并发
首先讲一下HashMap的Resize机制:1.Hashmap在插入元素过多的时候需要进行Resize,Resize的条件是HashMap.Size >= Capacity * LoadFactor。Resize:HashMap的容量是有限的。当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射位置发生冲突的几率会逐渐提高。这时候,Has转载 2017-12-13 09:22:11 · 959 阅读 · 0 评论 -
单例模式
单例模式第一版public class Singleton { private Singleton(){}; private static Singleton instance = null; public static Singleton getInstance(){ if(instance == null){转载 2017-12-12 09:08:52 · 229 阅读 · 0 评论 -
内部类
内部类种类大致如下:*非静态内部类(成员内部类)*静态内部类(嵌套内部类)*局部内部类(定义在方法内或者作用域内的类,好似局部变量,所以不能有访问控制符和static等修饰)*匿名内部类(没有名字,仅使用一次,new个对象即扔掉类的定义)-------------------------------------------------------------------转载 2017-12-13 11:48:34 · 121 阅读 · 0 评论 -
防止异常丢失
一、自定义异常类public class CustomException extends Exception{ private List list; public CunstomException(Listlist){ this.list = list; } public List getExceptions(){转载 2017-12-08 11:45:51 · 152 阅读 · 0 评论 -
父类引用调用子类对象
创建对象时,会为每个对象开辟一块 动态存储区 ---用来存放对象的属性在"生成"类时,会为每个类开辟一块 静态存储区 ---用来存放该类的方法对象从自己的动态存储区调用属性,从静态存储区调用方法。对象调用方法的方式---“映射”:方法名----->对应的类的静态存储区---->方法子类对象调用父类继承来的方法(未重写),从父类的静态存储区调用父类的方法;原创 2017-12-07 09:30:03 · 2233 阅读 · 0 评论 -
反射
一、反射1、什么是反射? 动态的获取类以及类中的成员,并可以调用该类成员。2、应用场景: 提高了程序的可扩展性。3、反射中最重要的一点:要先获取到那个类。4、如何获取类呢? 无论new什么对象,都需要先获取字节码文件。Class类是Java对字节码文件的描述。5、描述字节码文件的类:Class转载 2017-12-31 19:11:03 · 170 阅读 · 0 评论 -
异常链
一、自定义异常类public class CustomExceptions extends Exception { //空构造函数 public CustomException(){ super(); } //定义异常信息 public CustomException(Strin转载 2017-12-08 12:00:54 · 148 阅读 · 0 评论 -
正则表达式
正则表达式字符 x 字符 x \\ 反斜线字符 \0n 带有八进制值 0 的字符 n (0 \0nn 带有八进制值 0 的字符 nn (0 \0mnn 带有八进制值 0 的字符 mnn(0 \xhh 带有十六进制值 0x 的字符 hh \uhhhh 带有十六进制值 0x 的字符 hhhh \t 制表符 ('\u0009') \n 新行(换行)符转载 2017-12-28 11:23:34 · 179 阅读 · 0 评论