自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

重心开始,重新开始

小小的我,大大的世界

原创 Java中什么是序列化?

序列化,又称为“串化”,可以形象的把它理解为把Java对象内存中的数据采编成一串二进制的数据,然后把这些数据存放在可以可以持久化的数据设备上,如磁盘。当需要还原这些数据的时候,在通过反序列化的过程,把对象又重新还原到内存中。   java.io.Serializable接口是可以进行序列化的类的标志性接口,该接口本身没有任何需要实现的抽象方法,它仅仅是用来告诉JVM该类的对象可以进行反序列化的

2016-08-16 22:02:08 2043

原创 Java中如何使用随机存取文件RandomAcessFile类?

InputStream和OutputStream都只是单方面的读和写文件的内容,如果有随机的读取和写入文件内容的需要那该怎么办?Java为我们提供了一个RandomAcessFile类,它就是专门用来随机存取文件的内容的。  RandomAcessFile操作文件内容的时候,就好像操作一块内存区域一样。把字节用下标数字来进行定位,通过调用RandomAcessFile的API方法,把指针的

2016-08-16 21:56:48 2293

原创 Java中集合泛型带来了什么好处?

首先,了解一下Java关于泛型的概念。泛型,在C++中被称为模板,就是一种抽象的编程方式。当我们定义类和方法的时候,可以用一种通用的方式进行定义,而不必写出具体的类,这些未知的东西会在真正使用的时候在确定。  对于集合类来说,它们可以存放各种类型的元素。如果在存放之前,就能确定元素的类型,那么就可以更加直观,也让代码更加简洁。示例代码如下:public class Test4 { pu

2016-08-16 21:50:09 5821

原创 Java 中HashMap和HashTable的区别?

对于Map接口来说,它有俩种比较重要的实现类HashMap和HashTable,它们保存元素的时候,都是无序的。但是,它们也有一定的区别,适用于不同的情况。  HashTable相对于HashMap更早提出,应用也非常广泛,HashMap后来提出是为了代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能我们觉得HashTable很好用,为什么不用呢?这里

2016-08-16 21:46:19 709 2

原创 Java中Vector与ArrayList的区别?

Vector与ArrayList都是List接口的实现类,它们都代表链表形式的数据结构。但是,它们的实现和使用场景却有所区别。  它们二者的实现非常相似,都是用一个对象数组来存储元素的。但是,Vector的大多数成员方法都会加上synchronized关键字,也就是说Vector线程是安全的。由于Vector操作成员的方法必须保证同步,因此它的执行效率没有ArrayList高。所以,一般情

2016-08-16 21:38:48 561

原创 Java中迭代器是什么?

可迭代是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍。迭代的过程需要依赖一个迭代器对象,那么什么是迭代器呢?   迭代器(Iterator)模式,又叫做游标模式,它的含义是,提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。   注意:Java的集合陆昂家的集合类,有的时候也称为容器。从定义上看,迭代器是为容器而生,它本质上就是一种遍历

2016-08-16 21:31:31 13272

原创 Java 什么是集合?

集合,顾名思义,就是用来存储数据的对象,只不过在Java中,这些数据就是其他对象,它是一种数据结构的体现,也是对数组在功能上的扩展。java.util包下的集合框架主要由几个接口和实现类组成,大致组成如下图:列表(List):有序存放,允许重复,可以存放不同类型的对象集合(Set):无序存放,不允许重复,可存放不同类型的对象SortedSet:排好序列的Set映射(Ma

2016-08-16 21:00:35 617

原创 Java Socket是什么?

Socket又称套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求。  在Java中,Socket和ServerSocket类库位于java.net包中,ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序俩端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网路连接来说,套接字是平等的,并没有差别,不能因为在服务器或在客

2016-08-16 20:52:50 963

原创 Java 中二维数组的长度是否固定?

数组的本质是一种Java类,它的这种特性就导致它的多位数组就比较有特点,可以无限的扩展维度,并且每个维度元素的长度也可以参差不齐。java的二维数组其实这样的:先创建一个一维数组,然后该数组的元素在引用另外一个一维数组。在使用二维数组的时候,通过俩个中括号[]来访问每一层维度的引用,直到访问到最终的数据。示例代码如下:public class Test3 { public static

2016-08-15 21:52:11 4265

原创 Java 如何拷贝数组的数据?

我们在操作Java数组的时候,其实是通过一个引用来操作数组的,如果使用简单的=操作符进行赋值的话,只是复制了引用,并没有把数组的数据复制一份。  我们在拷贝数组时,最容易犯的一种错误就是使用赋值运算符=来复制数组,然后对新数组的操作的操作也影响到原数组的数据,那是因为它们根本指向的是同一内存空间。代码如下:public class Test3 { public static voi

2016-08-15 21:49:43 1783

原创 Java 数组中new Object[5]语句是否创建了5个对象?

Java 数组的本质是一个Java类,它是通过new语句来实例化,但是这个new语句却不会实例化数组中的对象,我们对它的理解有些偏差。   对于基本类型的数组,在new语句创建数组实例时,会为该数组分配指定长度的内存空间,并把数组的每个元素的初始化为0。那么,引用类型的数组又是如何来创建和初始化这些内存空间的?其实,引用数据类型的数组也会分配指定长度的内存空间,只不过这些内存空间是用来保存

2016-08-15 20:28:32 13368

原创 Java 如何理解数组在Java中作为一个类?

Java数组的使用语法与C和C++的比较类似,但是它的本质是一个Java类,只是这个类比较特殊,所以很容易被人误解。   大家知道,Java的数据类型可以分为俩种:基本数据类型和引用数据类型。那么数组属于哪种呢?很显然,数组不会是基本数据类型,因为基本类型就只有那8中,那他应该就属于引用数据类型了,也就是说每一个数组实例都是一个对象,这些对象同属于一个类。首先,看一看如何使用一个Java数

2016-08-15 20:10:57 2082

原创 Java 字符串对象池的作用是什么?

从Java5.0开始,Java虚拟机在启动的时候回实例化9个对象池。这9个对象池分别用来存储8中基本类型的包装类对象和String对象,主要是为了效率问题。大家应该知道,创建String对象有俩种办法,代码如下:String str1="hello";String str2=new String("hello");   这俩种创建String对象的方法有什么区别吗?区别就在于第一种

2016-08-15 20:05:21 1707

原创 Java中字符串字面量是否自动生成一个String对象?

在开发过程中,经常会需要直接写出一个字符串变量,也就是双引号包括的字符数据,这样一种字面量写法的字符串,是否已经创建了一个String对象呢?如果没有,那么数据存放在哪里呢?如果有,并没有new语句啊,是怎么创建的呢?看下面代码:String str1=“abc”;//创建abc字符串对象String atr2=new String("abc");//用new语句,创建abc字符串对象

2016-08-15 20:03:29 2740 1

原创 Git版本控制工具的浅谈(一)Git的安装及创建版本库

一、初识Git:Git是目前世界上最先进的分布式版本控制系统(没有之一)。它的开发者就是大名鼎鼎的Linux操作系统的作者Linus Torvalds。Git被开发出来的初衷是为了更好的管理Linux内核,而现在却广泛应用于各种项目中。Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括

2016-08-13 13:50:06 1731

原创 Java 类加载的浅谈

先理解这几句话~(1) 类型为Dog的一个对象首次创建时,或者Dog类的static方法/static字段首次访问时,Java解释器必须找到Dog.class(在事先设好的类路径里搜索)。(2) 找到Dog.class后(它会创建一个Class对象,这将在后面学到),它的所有static初始化模块都会运行。因此,static初始化仅发生一次——在Class对象首次载入的时候。(3) 创

2016-08-09 23:36:17 683

原创 Java中如何使用转义转义字符?

一些特殊的字符不能用一个特定的数字,例如,换行符,制表符,双引号。为了表示这些特殊的字符,需要引入转义字符的概念。所有的计算机语言都无法回避转义字符的概念,它们都统一的用了反斜线来表示转义。系统在解析这些字符的时候,一旦遇到“\”符号,就会把它后边紧跟的字符一起分析,看他们组合成了另外哪一些字符。以下为一些常见的转义字符:\a 响铃\b 退格\r 表示接受键盘输入,相当于按下回车。

2016-08-09 23:17:21 7843

原创 Java char能否存储汉字?

Java的char型字采用的是Unicode编码,在这些编码中就包含有简体中文和繁体中文所需要的字符。因此,char是可以用来表示汉字的,代码如下:public class ChineesTest{   public static void main(String[]args){      char c='中';//定义一个‘中’字符      int i=c;    //把c变量

2016-08-09 21:25:49 740

原创 Java中boolean和它的包装类的区别在哪里?

boolean是基础数据类型,而Boolean是一个类,这是它们最本质的区别。Java之所以为每一个基础数据类型都提供一个相应包装类的目的,在于将Java的所以东西都抽象成对象,可以更方便的控制和使用。区别如下:1.boolean是基础数据类型,而Boolean是一个类2.boolean一般存在于桟空间中,而Boolean对象存在堆空间中3.boolean有true和false俩种

2016-08-09 21:23:42 7032

原创 Java中的实型与整型的相互转换

因为实型比整型要多出小数部分,从整型转为实型时不会有精度丢失,但是由实型转为整型时则会丢失小数部分的数据。显式转换,也就是强制类型转换,例如下面的代码:int i=123;double d=(double)i;int k=(int)d;在以上代码中,首先将int型的变量转换为double型,在赋值给变量d,然后又把double型的变量d转换为int型并赋值给int型的变量k。因

2016-08-09 21:18:28 2966

原创 Java中int和Integer有什么区别?

int是8种基础数据类型的一种,它的字节长度为4,用于表示现实中的正负整型数字。由于它属于基础数据类型,它的创建不会在堆内存中开辟空间,一般是保存在桟内存中的,它可以用算术运算符进行加,减,乘,除等操作。在参数传递的时候,直接传递它的值。说明:所有的整型字面默认为int型。Integer是int的包装类,在java.lang包下,它不属于基础数据类型,而是一个类。它的含义也就是表示一个整型

2016-08-09 21:14:06 3512

原创 Java中说明private,protected,public和default的区别

除了default以外,其他都是Java语言的关键字。default代表的是对类成员没有进行修饰的情况。它本身也代表了一种访问控制符。对于它们4中访问控制符来说,它们都可以修饰类的成员(包括静态和非静态成员),这些修饰也就控制了成员能被其他地方访问的限制情况。   对于范围概念来说,Java指的范围包括类内部,所在包下,子父类之间和外部包4种情况。如果一个成员需要被外部包所访问,则必须使用pu

2016-08-09 21:03:21 13426

原创 Java中equas和==的区别是什么?

看下列代码: String aa="123"; String bb="123"; String cc=new String("123"); System.out.println(aa==bb); System.out.println(aa==cc); System.out.println(aa.equals(cc));结果分别为true,false,tr

2016-08-09 21:00:53 5940 1

原创 Java的引用和C++的指针有什么区别?

Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对内存数据的操作,就好像风筝的线轴一样,通过线轴总是能够找到风筝,但是它们在实现,原理作用等方面却有区别。(1)类型:引用其值为地址的数据元素,Java封装了的地址,可以转换成字符串查看,长度也可以不必担心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。(2)所占内存:引用声明时没有实体,不占

2016-08-09 20:56:04 671

原创 Java包含哪些基本数据类型及包装类?

Java一共有8种基本数据类型,分别是byte,int,short,long,float,double,boolean和char。它们所对应的包装类均在java.lang包中,分别是Short,Integer,Long,Float,Double,Boolean,Character。当有的地方必须要使用对象或引用数据类型的时候,例如集合类(List,Set等),基本数据类型就不能使用了,因为

2016-08-09 20:52:57 780

原创 Java的变量分哪俩种大的数据类型?

先来分析一下:  Java一共有8种基本数据类型,分别是byte,int,short,long,float,double,boolean和char,它们存储的都是数据量比较小的数据,只需要1个或少量几个字节就可以了。因此,这些数据类型的变量的二进制值就直接保存着它们的值。而引用数据类型指的是除开基本数据类型以外的数据类型,它主要用来指向某个对象,有一点像C/C++指针,但是没有指针灵活。对

2016-08-09 20:42:29 1270

原创 Java程序为什么无须delete语句进行内存回收?

垃圾回收机制是Java相对于C++的一种巨大改进,它避免了因为程序员忘记释放内存而造成内存溢出的错误。所以在Java程序中,根本不需要使用delete语句,JVM会自动的去检查哪些内存应该回收了,在后台就自动回收了,为程序员省了不少的事情。   大家知道,Java除了那8种基本类型以外,其他都是对象类型(又称为引用类型)的数据。JVM会把程序创建的对象存放在堆空间中,那什么是堆空间呢?其实,堆

2016-08-08 21:49:44 1789

原创 Java中什么是JVM及其工作原理?

JVM是Java程序运行的平台,它就像一台虚拟出来的计算机一样,负责执行Java编译好的字节码文件。JVM具有非常严格的实现规范,大多数操作系统都可以安装JVM,为Java语言的跨平台性起到了关键的作用。   JVM(Java虚拟机)是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象的硬件,堆栈,寄存器等,还具有相应的指令系统。   说明:   JVM有很

2016-08-08 21:11:34 2403

原创 Java和C++在编译和运行上有什么区别?

众所周知,任何一门计算机高级语言都会最终编程机器码(也就是二进制)以后,才会被计算机所识别。其中,与机器码最为接近的就是汇编了,而Java和C++都会直接或间接的变成汇编之后,然后在运行。   对于像c,c++这类高级计算机语言来说,它们的编译器(例如:Unix的CC命令,Windows的CL命令)都是直接把源码直接编译成计算机可以认识的机器码,如exe,dll之类的文件,然后直接运行即可。

2016-08-08 21:09:41 1798 1

原创 如何为Java程序动态的指定类的搜索路径?

大家知道,在默认情况下,Java程序在编译和运行的时候,会通过JRE下的rt.jar文件和CLASSPATH环境变量所指定的路径进行类的搜索和加载,但是如果有时需要动态为Java程序指定类加载路径,那该怎么办?有的时候,为了动态的为Java程序指定类加载路径,开发者会写出一些批处理文件来进行Java程序的编译或允许,如Windows的bat文件和Linux下的sh文件。此时,就有一个问题了,这

2016-08-08 21:05:05 2511

原创 Java中环境变量CLASSPATH的作用是什么?

CLASSPATH环境变量是用来指定Java程序搜索类的路径的,对于Java应用程序来说,该变量的意义是非常重要的。   CLASSPATH环境变量是在编译Java源码和运行程序时使用的,也就是为Java程序所依赖的接口,类等指定一个搜索路径。  其写法与Path变量类似,每个路径用分号进行分开,如果是一个jar文件,则直接写明该文件的绝对路径,如下所示:.;c:\jar\lo

2016-08-08 21:01:44 6425 2

原创 Java中如何利用JDK编译和运行应用程序?

JDK是Sun公司提供给Java程序员的开发工具包,除了提供必要的运行环境以外,最主要的感觉就是编译和运行,也就是javac和java命令,如何使用这俩个命令呢?   JDK安装好以后,就可以使用javac和java命令工具了,它们均在安装目录>的bin文件夹下,所以,还需要把这个目录的路径配置到Path环境变量中,大致步骤如下:1.打开环境变量设置对话框2.新建JAVA_HOME环境

2016-08-08 20:52:56 6604

原创 Java中JDK和JRE的区别是什么?它们的作用分别是什么?

JDK和JRE是Java开发和运行工具,其中JDK包含了JRE,但是JRE是可以独立安装的~它们在Java开发和运行的时候起到不同的作用~  关于JDK和JRE,大家一定会记得,在安装JDK的时候需要分为俩个步骤:安装JDK和JRE,大家一般会一起安装,也建议大家分开装,因为这样更能帮助大家弄清它们的区别  JRE是Java Runtime Environment的缩写,是Java

2016-08-07 17:50:15 61871 8

原创 JavaScript概述

JavaScript是用来实现交互的。首先,JavaScript是纯文本的,用任何的的纯文本编辑器都能够编辑它(记事本,NotePad++,Editplus)。同时,它是网页的一部分,随着一个html页面的请求,JavaScript脚本也随之下载到了用户的计算机本地,在用户计算机渲染运行的。JavaScript是能够从网站上扒下来的。注意:JavaScript不是Java!

2016-08-06 22:13:53 462

原创 Java 设计模式之访问者模式的详解(行为模式)

访问者(Visitor)模式:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。访问者模式的结构图如下:通过上图可以看到它有如下角色:抽象访问者(Visitor)角色:定义接口,声明一个或多个访问操作。具体访问者(ConcreteVisitor)角色:实现抽象访问者所声明的接口,也就是抽象访问者所声明的各个访问操

2016-08-06 17:48:33 364

原创 Java 设计模式之状态模式的详解(行为模式)

状态(state)模式:状态模式的意图是,允许一个对象在其内部状改变时改变它的行为。看起来就像是改变了它的类一样。主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。状态模式的结构如下图:从图中可以看出状态模式有以下角色:1、抽象状态(State)角色:定义一个接口,用以封装环境对象的一个

2016-08-06 17:12:01 655

原创 Java 设计模式之备忘录模式的详解(行为模式)

备忘录(Memento)模式:又叫做快照模式(Snapshot Pattern)或Token模式,属于行为模式。在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式有如下结构图:备忘录模式涉及角色如下:发起人(Originator):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并

2016-08-06 16:54:12 308

原创 Java 设计模式之命令模式的详解(行为模式)

命令(Command)模式:又称Action模式或者Transaction模式。它属于对象的行为模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和撤销功能。GoF命令模式结构图如下:命令模式是有以下角色:抽象命令(Command)角色:声明执行操作的接口。具体命令(Conc

2016-08-06 16:22:01 367

原创 Java设计模式之责任链模式的详解(行为模式)

责任链(Chain of Responsibility)模式:责任链模式是对象的行为模式。使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系。将这些对象连成一条链,沿着这条链传递该请求,直到有一个对象处理它为止。责任链模式强调的是每一个对象及其对下家的引用来组成一条链,利用这种方式将发送者和接收者解耦,类图如下:通过上图可以看出责任链模式有两个角色:抽象处理

2016-08-06 14:18:56 365

原创 Java 设计模式之观察者模式的详解(行为模式)

观察者(Observer)模式:是对象的行为模式,又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听(Source/Listener)模式或者从属(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者

2016-08-06 13:41:37 369

提示
确定要删除当前文章?
取消 删除