Java SE
文章平均质量分 80
介绍java基础知识
白夜行515
世界上有两样东西不能直视:一是太阳,二是人心!
展开
-
【java基础知识】命名规则
一个简单的java应用程序public class FirstSample { public static void main(String[] args) { System.out.println("Hello,World"); }}**一、命名规约:**1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: _name原创 2017-04-08 11:30:35 · 1407 阅读 · 0 评论 -
【Java基础知识】多线程简介
1.概念(1)进程: 一个执行中的程序,每一个进程执行都有一个执行的顺序或叫执行单元。(2)线程:是进程中的一个独立的控制单元,线程控制着进程的执行或说一个程序执行多个任务,每一个任务称为一个线程,一个进程中至少有一个线程。2.创建线程的方式(1)实现Runnable接口(常用)例:public class TicketWindow implements Runnable { @Ov原创 2017-04-13 23:33:11 · 394 阅读 · 0 评论 -
【Java深入】HashSet源码剖析
一、HashSet概述:HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素,是非线程安全的。由于HashSet是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMa原创 2017-05-14 14:04:20 · 412 阅读 · 0 评论 -
【Java深入】String.intern()详解
1.引入String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。String类型的常量池方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern 方法会从字符串原创 2017-07-14 17:02:50 · 1075 阅读 · 1 评论 -
【Java基础知识】数据类型与运算符
一、数据类型1.定义:在java中,一共有8种基本数据类型,4种整型,2种浮点型,一种布尔型,一种表示字符单元的字符型(1)整型:int(4字节) short(2字节) long(8字节) byte(1字节) (2)浮点类型: float(4字节) double(8字节) (3)char类型: 用于表示单个字符,通常用来表示字符常量 (4)boolean型:有两个值原创 2017-04-08 15:55:40 · 525 阅读 · 0 评论 -
【Java深入】创建对象的5种方式
1.java中创建对象的五种方式用new语句创建对象,这是最常见的创建对象的方法。运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。调用对象的clone()方法。通过I/O流(包括反序列化),注:前两种会调用构造函数,而后两种不会调用构造函数。2.使用new关键字最常见也是最简单的创建对象的原创 2017-07-31 17:42:44 · 475 阅读 · 0 评论 -
【Java基础知识】抽象类与接口
一、抽象类1.定义:用abstract关键字修饰,允许包含未实现方法的类被称为抽象类。2.使用场景:如果拥有一些方法,并且想要其中一部分默认实现!3.定义格式:[<修饰符>] abstract class <类名> { [<属性定义>] [<构造方法定义>] [abstract][<方法声明>]}注: (1)抽象类不能实例化,既不能创建对象,只能作为父类用于被继承; (原创 2017-04-11 13:59:45 · 320 阅读 · 0 评论 -
【Java深入】ArrayList源码剖析(一)
一、ArrayList概述1.底层实现:ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。2.扩容:每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构原创 2017-05-15 15:45:01 · 414 阅读 · 0 评论 -
【Java深入】LinkedList源码剖析
一、LinkedList概述1.底层实现LinkedList底层是基于双向链表实现的,JDK8和JDK7是这样,但在JDK6之前LinkedList的底层却是基于循环链表实现的。2.线程安全性LinkedList不是线程安全的,如果在多线程中使用,需要在外部作同步处理。3.与ArrayList的异同(1)LinkedList插入和删除操作更加高效,但随机访问速度慢;(2)LinkedList可以作为原创 2017-06-12 09:06:53 · 511 阅读 · 0 评论 -
【Java深入】HashMap的实现原理与源码剖析(一)
一、HashMap的实现原理1.引入毫无疑问,有很多人都用过HashMap,例如HashMap可以接受null键值和值,而HashTable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等。2.深入例1:HashMap的get()方法的工作原理?答:“HashMap是基于hashing的原理,使用put(key, value)存储对象到Ha原创 2017-05-14 08:18:16 · 728 阅读 · 1 评论 -
【Java深入】HashMap源码剖析(二)
重要方法源码(JDK8)剖析1.put方法(在映射中关联指定值与指定键)public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }注:HashMap的put方法是通过putVal方法来插入元素的final V putVal(int hash, K key, V valu原创 2017-05-14 11:37:08 · 931 阅读 · 0 评论 -
【Java深入】ArrayList源码剖析(二)
类的方法(续)(16)add方法 add(E )方法 : 添加新值到 list 末尾 public boolean add(E e) { // 确定ArrayList的容量大小(modCount++) ensureCapacityInternal(size + 1); // 添加 e 到 ArrayList 中,然后 size 自增 1原创 2017-05-16 17:05:26 · 504 阅读 · 0 评论 -
【java基础知识】this 与 static 关键字
一、this关键字 1.定义:java中为了解决变量的命名冲突和不确定性问题,引入了this关键字,this代表当前类的一个实例,它经常出现在方法和构造器方法中。2.使用场景: (1)返回调用当前方法的引用; (2)在构造器中调用当前类中的其他构造方法; (3)当方法参数和成员变量名相同时,用于区分参数名和成员变量名。3.使用规则: (1)this可以调用一个构造器,但不能调用两个; (原创 2017-04-10 23:09:24 · 794 阅读 · 0 评论 -
【Java基础知识】集合概述
1.简单的集合分类2.List(1)ArrayList:一种可以动态增长和缩减的索引序列,基于动态数组的数据结构,优点:随机访问速度快(2)LinkedList: 一种可以在任意位置高效的插入和删除的有序序列,基于链表的数据结构。优点:新增和删除速度快(3)ArrayList与Vector的区别*相同点:都是Java的集合类,可以存放Java对象。*不同点: Vector是同步的,线程安全的,而A原创 2017-04-13 20:11:13 · 537 阅读 · 0 评论 -
【Java基础知识】面向对象三大特性之多态
1.定义:一个引用类型在多种情况下的多种状态 即:对象的多种形态(继承是多态实现的基础)2.引用多态(1)父类的引用可以指向本类的对象 (2)父类的引用可以指向子类的对象,但不能调用子类独有的成员。3.方法多态(1) 创建本类对象时,调用的方法为本类的方法; (2)创建子类对象时,调用的方法为子类重写的方法或者继承的方法。4.备注(1)对象的初始化就是对象的引用指向本类或者指向子类。如果指向本原创 2017-04-11 15:29:31 · 572 阅读 · 0 评论 -
【java基础知识】值传递与引用传递
1.值传递: 就是在方法调用的时候,实参将自己的一份拷贝赋给形参,在方法内,对该参数值的修改不影响原来实参。2.引用传递 在方法调用的时候,实参将自己的地址传递的形参,此时方法内对该参数值的改变,就是对该实参的实际操作。下面举例说明例1:基本数据类型public class Test1 { public static void main(String[] args) {原创 2017-04-08 18:35:23 · 387 阅读 · 0 评论 -
【java基础知识】面向对象的三大特性之封装
1.面向对象与面向过程的区别 (1)面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;(2)面向对象:把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。(3)分类: C 面向过程; C++ 面向过程+面向对象 ; Java 面向对象2.什么是类、对象、属原创 2017-04-08 19:35:11 · 494 阅读 · 0 评论 -
【java基础知识】面向对象三大特性之继承
1.复用类(1)组合:把一个类当做对象放到另一个类里面去使用 (2)继承:基于已存在的类构造一个新类。 *已存在的类称为父类、基类或超类; *新类称为子类、派生类、或孩子类。 (3)继承与组合的关系 *继承表现为一般——特殊的关系,子类是一个特殊的父类,是is-a的关系。父类具有所有子类的一般特性。 *组合表现为整体——部分关系,即has-a关系。在组合中,通过将“部分”单独抽取出来,形原创 2017-04-11 09:46:25 · 395 阅读 · 0 评论 -
【java基础知识】重载与重写的区别
1.重载(1)定义:在一个类中具有多个方法名相同而参数列表不同的方法(2)规则: *方法名必须相同 *参数列表必须不同 *可以有不同返回值的类型 *可以有不同的访问修饰符; *可以抛出不同的异常; *重载方法可以通过this关键字相互调用例:public class Animal { String name; int id; public void getName(原创 2017-04-11 10:38:21 · 345 阅读 · 0 评论 -
【Java基础知识】内部类详解
1.定义: 将一个类的定义放在另一个类的定义内部,与之对应包含内部类的类被称为外部类2.内部类的作用:(1)内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类; (2)内部类的方法可以直接访问外部类的所有数据,包括私有的数据; (3)内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便; (4)每个内部类都能独立的继承一个(接口)实...原创 2017-04-11 16:52:51 · 496 阅读 · 0 评论 -
【Java基础知识】异常详解
1.概念: 当出现程序无法控制的外部环境问题,Java就会用异常对象来描述。2.异常的分类(1)未受检异常:派生于Error类或RuntimeException类的所有异常,*Error异常 一般很少见,也很难通过程序解决,他可能源于程序的bug,但更可能源于环境问题, 例:内存耗尽*RuntimeException(运行时异常) 指程序存在bug 例:数组越界、0被除、错误的类型转换。访原创 2017-04-12 16:46:27 · 518 阅读 · 0 评论 -
【Java基础知识】IO流 详解
1.概念(1)io流用来处理设备之间的数据传输; (2)Java对数据的操作的操作是通过流的方式; (3)Java用于操作流的对象都在IO包; (4)io流按操作数据分为两种:字节流和字符流; (5)io流按流向分为:输入流、输出流Java流类图结构: 2.字节流(1)定义: 用于读取二进制文件及任何类型文件(2)InputStream类型InputStream流图结构: *Byt原创 2017-04-13 21:14:37 · 630 阅读 · 0 评论 -
【java基础知识】字符串的比较
1.字符串的定义 字符串是一种使用频率最高的数据类型,为了加强程序的运行速度,java设计了两种不同的方法来生成字符串对象,一种是调用String类的构造函数,一种是使用双引号。例:String str1 = "Dream it possible";String str2 = new String ("we don't talk anymore");注:Java为String类型提供了缓冲池机制原创 2017-04-08 16:55:23 · 465 阅读 · 0 评论 -
【Java基础知识】泛型详解
1.泛型的概念:泛型是Java SE 1.5的新特性,泛型的本质参数化类型,即所操作的数据类型被指定为一个参数。2.使用泛型的优点:(1)安全简单,提高代码重用率,在编译的时候检查类型安全,并且所有的强制类型转化都是自动和隐式的;(2)类型安全,向后兼容,层次清晰,性能较高。3.元组类库(出处:《Thinking Java》)(1)定义:元组指将一对对象直接打包存储于其中的一个单一对象,这个容器对象原创 2017-04-13 17:53:32 · 394 阅读 · 0 评论 -
【Java基础】反射详解
1.定义(1)指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义,(2)反射使代码能够得到装载到JVM中的类的内部信息,允许执行程序时才得到需要类的内部信息,而不是在编写代码的时候就必须要知道所需类的内部信息,这使反射成为构建灵活的应用的主要工具。2..功能(1)运行时判断任意一个对象所属的类。 (2)运行时构造任意一个类原创 2017-04-30 15:26:34 · 348 阅读 · 0 评论 -
【Java深入】深拷贝与浅拷贝详解
1.拷贝的引入(1)引用拷贝创建一个指向对象的引用变量的拷贝。例1:Teacher teacher = new Teacher("Taylor",26);Teacher otherteacher = teacher;System.out.println(teacher);System.out.println(otherteacher);输出结果:blog.Teacher@355da254bl原创 2017-05-13 11:12:43 · 27634 阅读 · 25 评论 -
【Java深入】序列化详解
1、定义Serialization(序列化)为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来,即将对象以一连串的字节描述;反序列化deserialization是一种将这些字节重建成一个对象的过程。2、需要实现序列化的几种情况 (1)想把内存中的对象保存到一个文件中或者数据库中时候;(2)想用套接字在网络上传送对象的时候;(3)想通过RMI传输对象的时候;3、实现序列化的方式与反序原创 2017-05-13 14:40:53 · 2688 阅读 · 1 评论 -
【Java深入】ConcurrentHashMap源码剖析
一、ConcurrentHashMap概述1.底层实现ConcurrentHashMap与HashMap类似,基于数组+(链表/红黑树),但是为了实现并发,链表/红黑树增加了很多辅助的类,例如TreeBin,Traverser等对象内部类。2.为什么使用ConcurrentHashMap在多线程的情况下,使用HashMap可能会导致死循环,因为HashMap是非线程安全的,而使用线程安全的HashT原创 2017-06-12 13:32:24 · 503 阅读 · 0 评论