
Java基础
姑娘加油
加油
展开
-
对象克隆
对象克隆 :clone先观察以下代码class A{ private int k; public int getK() { return k; } public void setK(int k) { this.k = k; } public A(int k){ this.k = k; } }public class Test16 { public static v...原创 2018-05-24 19:13:23 · 201 阅读 · 0 评论 -
Java泛型
Java泛型泛型 <T> : T :即是一个类型占位符 在编译的时候检查在泛型之前多态算是一种泛式机制,例如可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类的任何子类作为参数,这样方法更具有通用性。(以一个通用栈为例子)class ObjectStack{ private Object[] elem;//Object类型的 private int top; pub...原创 2018-06-01 00:13:19 · 1450 阅读 · 0 评论 -
Java集合1——集合框架
集合框架图 可以看得出Java集合框架由Collection和Map两个根接口组成的 Collection接口: Set:元素无序、不可重复的集合 ---类似高中的“集合” 实现类:HashSet TreeSet List:元素有序,可...原创 2018-07-20 09:13:33 · 281 阅读 · 1 评论 -
Java集合2——List实现类之ArrayList详解
ArrayList简介以下源码为jdk1.7.8.0ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。public class ArrayList<E> extends Ab...原创 2018-07-20 11:17:31 · 350 阅读 · 2 评论 -
Java集合3——List实现类之LinkedList实现
LinkedList简介以下源码是 jdk1.7.8.0LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口,能对它进行队列操作。 LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。 LinkedList 实现了Cl...原创 2018-07-20 17:05:41 · 277 阅读 · 0 评论 -
Java集合4——list实现类之Vector
Vector简介以下源码都是jdk1.7.8.0Vector 是古老的实现类,继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。 Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。 在各种list中,最好把ArrayList作为缺省选择。当插入、删除频繁...原创 2018-07-20 17:30:21 · 366 阅读 · 0 评论 -
Java集合5——Map的实现类HashMap
以下源码基于jdk1.7.8.0在学HashMap之前我们应该先了解一种数据结构——哈希表数据结构->哈希表:哈希表是一种根据关键码去寻找值的数据映射结构, 该结构通过把关键码映射的位置去寻找存放值的地方.一般的线性表中,树中,记录在结构中的相对位置是随机的,即和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和关键字的比较...原创 2018-07-21 11:44:19 · 341 阅读 · 0 评论 -
HashMap的三种遍历方式
HashMap的三种遍历方式通过键值对进行遍历/** * 通过键值对来遍历 */ Iterator<Map.Entry<String, String>> iterator = hashmap.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<String, Strin...原创 2018-07-21 12:15:34 · 4583 阅读 · 0 评论 -
Java集合6——HashMap和HashTable的区别
HashMap与HashTable的不同HashTable简介和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以...原创 2018-07-21 21:42:28 · 601 阅读 · 0 评论 -
Java集合7——LinkedHashMap实现
LinkedHashMap简介我们可以看到LinkedHashMap是继承于HashMap,实现了Map接口概括的说,LinkedHashMap 是一个于数组加双向链表,它是线程不安全的的,允许key和value都为null 它继承自HashMap,实现了Map<K,V>接口。其内部还维护了一个双向链表,在每次插入数据,或者访问、修改数据时,会增加节点、或调整链表的节点顺...原创 2018-07-22 11:49:07 · 890 阅读 · 0 评论 -
Java集合8——Set接口实现类HashSet
HashSet简介它继承AbstractSet,实现了Set接口,Cloneable,java.io.Serializable HashSet是一个没有重复元素的集合 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用null1,成员变量 static final long serialVersionUID = -5024744406713321676...原创 2018-07-22 12:50:26 · 318 阅读 · 0 评论 -
Java集合9——PriorityQueue实现类
PriorityQueue简介优先级队列继承AbstractQueue,实现了java.ioSerializable。1,成员变量 // 默认容量 private static final int DEFAULT_INITIAL_CAPACITY = 11; /** * 数组存储,数组存储的是堆内元素 */ private tran...原创 2018-07-22 21:12:05 · 319 阅读 · 0 评论 -
JavaIO——IO概述
Java Io原理IO流用来处理设备之间的数据传输,Java程序中,对于数据的输入/输出操作 都是以“流”的方式进行的。java.io包下提供了各种“流”类的接口,用以获取不同种类的数据,并...原创 2018-08-23 10:36:55 · 25168 阅读 · 5 评论 -
Java接口
接口,在JAVA中是一个抽象类型,(是对行为的一种抽象)是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。创建一个接口(接口中不能有普通方法)interface A{ public int age = 10;//数据成员默认是static final public void fun1();//方法默认是抽象方法 abstract 不能...原创 2018-05-24 16:18:38 · 298 阅读 · 0 评论 -
抽象类
抽象类概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分,用abstract关键字修饰。首先我们来创建一个抽象类abstract class Animal1{//创建一个抽象类 abstract public void cry();//抽象方法 不做具体实现 ...原创 2018-05-24 15:40:23 · 189 阅读 · 0 评论 -
Java String 引用类型
String 引用类型1,String类型是引用类型。1. String s = "aaa"; 这段代码,JVM创建了一个变量引用S,在堆中创建了一个对象aaa,将aaa放进常量池中,s指向aaa.2,“==”和equals的区别 1. ==可以用来比较基本类型和引用类型,判断内容和内存地址2. equals只能用来比较引用类型,它只判断内容。该函数存在于老祖宗类 java.lang.Obje...原创 2018-04-09 09:58:50 · 6489 阅读 · 2 评论 -
Java运算符
Java运算符 一,”[ ]” ”.” “( )”1. int[] array={1,2,3,4};//中括号作用为声明一个数组 2. array[0]=2;//中括号为属性获取 获取下标里面的内容 1. //"."为方法调用 2. System.out.println(); 1. byte b=20; 2. char ch=(char)b;//强转 //还有很多功能 ...原创 2018-04-09 10:04:32 · 167 阅读 · 0 评论 -
Java的三种 简单排序
1,冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。Java实现代码private static void bubbleSort(int[] array) { //冒泡排序 /* * 稳定: 没有跳跃的比较,所以比较稳定 * 时间复杂度:o(...原创 2018-04-17 20:13:22 · 3226 阅读 · 0 评论 -
java i=i++和j=i++的区别
i=i++;j=i++的区别i=i++-----------在java中 这个语句的前后顺序应该是这样的(tmp=i;i++;tmp==i)java的编译器在遇到i++和i- -的时候会重新为变量运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存释放掉,下面首先看一下如果是j=i++的情况: i的原始值存放在后开辟的内存中,最后这个值将赋值给j,这样j=i++...原创 2018-04-27 13:52:00 · 24052 阅读 · 7 评论 -
java类和对象
类:实体的一个抽象和模板一,类的组成成分1,属性(成员变量)2,方法(成员方法,函数)3,构造器 (作用:创建类的对象,初始化对象的成员变量)4,代码块 (作用 :)通过class{ }来创建一个类我们创建了Person这个类,这个类有着自己的属性 ,也就是Person的标志---->name age sex... 然后它还有自己的方法 ------> eat() ...原创 2018-04-20 15:27:39 · 250 阅读 · 0 评论 -
内部类
1,静态内部类<静态内部类也就相当于静态方法..............>class OuterClass{ private int a = 10; private int b = 20; private static int c = 30; private static final int d = 40; public OuterClass(){ System.ou...原创 2018-04-20 16:34:00 · 211 阅读 · 0 评论 -
Kmp算法
KMP算法:KMP算法是由Knuth,Morris,Pratt三位学者研究出的模式匹配算法,大大的避免了重复遍历的情况。算法目的:确定主串中所含子串第一次出现的位置。 在这之前呢,有一个BF算法 (~暴力匹配~)。>_<BF算法设计思想:1,将主串的第pos个字符和模式的第1个字符比较, 2,若相等,继续逐个比较后续字符;3,若不等,从主串的下一字符(...原创 2018-05-12 21:42:06 · 376 阅读 · 0 评论 -
Java中对对象进行排序
1,首先创建一个类class Person3{ private String name; private int age; private double score; public Person3(String name, int age, double score) { super(); this.name = name; this.age = age; this.s...原创 2018-05-25 00:10:56 · 27159 阅读 · 7 评论 -
面向对象的特征
OOP语言(面向对象语言)特征:继承 封装 多态 继承:代码的复用 人——学生1,派生类继承了基类的除了构造函数的其他数据成员class Base1{//基类,父类 public int ma;//数据成员 static{ System.out.println("base.static innt!!!!"); } { System.out.println("base.in...原创 2018-05-21 18:42:37 · 203 阅读 · 1 评论 -
java二维数组
Java 二维数组总结1,二分查找法 int mid=(low+high)/2;这种方法可能会使int 定义的越界所以我们将它写成int mid=(low+high)>>>1">>>" 最高位补0,所以叫无符号右移无符号右移相当于除法2,创建二维数组 -------------------------------- 所以改变array2[...原创 2018-05-22 15:33:26 · 3327 阅读 · 0 评论 -
Java一维数组及常见操作
1,如何排序数组并搜索某个元素,找到返回下标 调用java中的Arrays.sort()方法进行排序 使用冒泡排序进行排序 2,如何排序数组并插入某个元素 3,如何确定二维数组的上限 所以,可以通过第三个输出语句来确定二维数组的上限a.length 是代表二维数组的行数a[0].length是代表二维数组的列数a代表的是整个二维数组的首地址 4,如何反转数组...原创 2018-05-22 15:41:27 · 7746 阅读 · 1 评论 -
String,StringBuffer和StringBuild
String StringBuffer StringBuilder1<,StringString str1 = "hello";str1 = str1+" world";System.out.println(str1);//str1额外生成一个对象对这段代码进行反汇编 可以看出用invokevirtual调用了StringBuilder的构造函数创建了一个StringBuild...原创 2018-05-27 18:04:26 · 496 阅读 · 0 评论 -
Java反射
反射在Java中,每一个类产生一个.class文件,产生一个class对象。反射就是我们拿到这个class对象,通过反射来获取类的信息。(注:Class对象:任何一个 类都有一个class隐含的静态成员变量class,这个class就指向JVM中的那个类的class。)1,三种获取class对象的方法Student s1 = new Student();//1.s1.getClass() ...原创 2018-05-27 23:31:49 · 161 阅读 · 0 评论 -
类加载器
每个Java文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载。那如何区分class文件每个class文件前四个字节都存放这一个“魔数”(这是一个唯一的标志)类加载器一共有三种 ...原创 2018-05-29 00:03:02 · 165 阅读 · 0 评论 -
java的装箱和拆箱
java的装箱和拆箱 Java的数据类型分为三大类,布尔型,字符型和数值型。其中,数值型又分为整形和浮点型。byte b=18;//1个字节char ch='a';//2个字节 16位 所以默认值为‘\u0000’一个0四位 char ch1='男';//2个字节 float f=1...原创 2018-04-01 13:36:19 · 8311 阅读 · 12 评论