自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 面向对象的陷阱——构造器的陷阱

2、构造器的陷阱       构造器是Java每个类都会提供的一个“特殊方法”。构造器负责对Java对象执行初始化操作,不管是定义实例变量时指定的初始值,还是在非静态初始化块中所执行的操作,实际上都会被提取到构造器中来执行。2、1 构造器返回类型       构造器不能声明返回值类型,也不能使用void声明构造器没有返回值。当为构造器声明添加任何返回值类型声明,或者添加void声明该构

2017-04-28 16:35:04 451

原创 CentOS7最小安装之后安装xfce桌面

1、 桌面环境桌面环境更是繁多,功能齐全华丽奢侈的有KDE,GNOME,简单快捷的有fvwm2,xfce等。对于工程师来说,KDE,GNOME过于笨重,fvwm则过于简单。这里选择xfce4,也是参考了linux基金会网站上做的30位Linux内核开发者桌面环境的调查。安装步骤:2、1 执行CentOS7 最小安装执行# yum install epel-release安装

2017-04-26 20:48:11 6551 2

原创 面向对象的陷阱——instanceof运算符的陷阱

1、instanceof运算符的陷阱       instanceof是一个非常简单的运算符。instanceof运算符的前一个操作数通常是一个引用类型的变量,后一个操作数通常是一个类(也可以是接口,可以把接口理解成一种特殊的类),它用于判断前面的对象是否是后面的类或其子类、实现类的实例。如果是,则返回true;否则,返回false。       根据Java语言规范,使用instance

2017-04-26 17:31:07 667

原创 Java流程控制的陷阱——for循环和foreach循环的陷阱

5、for循环的陷阱5、1 分号的问题public class SemicolonRight { public static void main(String[] args) { for ( int j = 1 , i = 0 ; i < 5 && j < 20 ; i++ , j *=2 ) { System.out.println(i + "-->" + j); }

2017-04-26 11:27:04 1110

原创 Java流程控制的陷阱——if语句和循环体的陷阱

3、if语句的陷阱3、1 else隐含的条件       else字面意义是“否则”,隐含的条件是前面条件都不符合,也就是else有一个隐含的条件,else if的条件是if显示条件和else隐式条件的交集。public class IfErrorTest { public static void main(String[] args) { int age = 45;

2017-04-26 10:20:43 626

原创 Java流程控制的陷阱——switch语句和标签陷阱

1、switch语句陷阱       switch语句是Java提供的一种重要的分支语句,它用于判断某个表达式的值,根据不同的值执行不同的分支语句。需要指出的是,Java的switch语句限制很多,而且还有非常容易出错的陷阱,使用时要非常的小心。1、1 default分支       switch语句之后可以包含一个default分支。default分支并不是无条件执行的分支,执行

2017-04-26 09:21:18 1058

原创 Java表达式的陷阱——多线程的陷阱

6、多线程的陷阱       Java语言提供了非常优秀的多线程支持,使得开发者能以简单的代码来创建、启动多线程,而且Java语言内置了多线程支持极好地简化了多线程编程。虽然如此,Java多线程编程中依然存在一些容易混淆的陷阱。6、1 不要调用run()方法       从Java5开始,Java提供了三种方式来创建、启动多线程。继承Thread类创建线程类,重写run()

2017-04-25 09:22:49 722

原创 Java表达式的陷阱——正则表达式的陷阱

5、正则表达式的陷阱public class StringSplit { public static void main(String[] args) { String str = "java.is.funny.hello.world"; String[] strArr = str.split("."); for ( String s : strArr ) { System

2017-04-24 21:29:23 525

原创 Java表达式的陷阱——泛型引起的错误

4、泛型引起的错误        泛型是Java5新增的知识点,它允许在使用Java类、调用方法时传入一个类型参数,这样就可以让Java类、调用方法动态地改变类型。4、1 原始类型变量的赋值       在严格的泛型程序中,使用带泛型声明的类时应该总是为止指定类型实参,但为了与之前版本Java代码保持一致,Java也允许使用带泛型声明的类时不指定类型参数。如果使用带泛型声明的类时没有传

2017-04-24 19:23:41 2893

原创 Java表达式的陷阱——输入法、注释字符和转义字符的陷阱

3、输入法、注释字符和转义字符的陷阱3、1 输入法导致的陷阱         对于Java语言而言,它使用空格、Tab制表符(半角状态)作为分隔符,因此一个Java程序中通常需要包含大量空格。但如果不小心把输入法切换到全角状态,那么输入的空格都会变成全角状态,编译该程序时将会提示"非法字符:\12288"的错误。注意:Java程序中通常不能包含全角字符,但Java程序的字符串和注释中完

2017-04-24 10:44:31 808

原创 Java表达式的陷阱——表达式类型的陷阱

2、表达式类型的陷阱       Java是一门强类型语言,不仅每个变量具有指定的数据类型,它的表达式也具有指定的数据类型。因此,使用表达式一定要注意它的数据类型。提示:强类型语言,通常具有以下两个基本特征。所有的变量必须先声明,然后才能使用,声明变量时必须指定该变量的数据类型。一旦某个变量的数据类型确定下来,那么这个变量将永远只能接受该类型的值,不能接受其他类型的值。2、

2017-04-23 16:44:29 521

原创 Java表达式的陷阱——关于字符串的陷阱

1、关于字符串的陷阱       字符串是Java程序中使用最广泛的一种对象,虽然它具有简单易用的特征,但是实际使用字符串时也会有一些潜在的陷阱,这些陷阱往往会给实际开发带来潜在的困扰。1、1 JVM对字符串的处理 String str = new String("Java对象");       对于上面常见的Java语句,常见的问题是,上面语句创建了几个字符串?答案是:上面的

2017-04-22 23:48:43 527

原创 Java的内存回收——内存管理小技巧

4、内存管理小技巧4、1 尽量使用直接量       当需要使用字符串,还有Byte、Short、Integer、Long、Float、Double、Boolean、Character包装类的实例时,程序不应该采用new的方式来创建对象,而应该直接采用直接量来创建它们。       例如,程序需要"hello"字符串,应该采用如下代码: String str = "hell

2017-04-21 12:14:31 1071

原创 Java的内存回收——垃圾回收机制

3、垃圾回收机制       垃圾回收机制主要完成以下两件事情。跟踪并监控每个Java对象,当某个对象处于不可达状态时,回收该对象所占用的内存空间。清理内存分配、回收过程中产生的内存碎片。       垃圾回收机制需要完成的这两方面工作工作量都不小,所以垃圾回收算法就成为了限制Java程序运行效率的重要因素。实现高效JVM的一个重要方面就是提供高效的垃圾回收机制,高效的垃圾回收

2017-04-20 18:39:29 457

原创 Java的内存回收——Java的内存泄漏

2、Java的内存泄漏       什么是内存泄漏呢?程序运行过程中会不断分配内存空间,那些不再使用的内存空间应该即时被回收,从而保证系统可以再次使用这些内存空间,如果存在无用的内存没有被回收回来,那就是内存泄漏。       对于Java程序来说,所有不可达的对象都由垃圾回收机制负责回收,因此程序员不需要考虑这部分的内存泄漏。但如果程序中有一些Java对象,它们处于可达状态,但程序以后永

2017-04-20 16:29:48 399

原创 Java的内存回收——Java引用的种类

1、Java引用的种类       Java是面向对象的编程语言,一个Java程序往往需要创建大量的Java类,然后对各Java类创建大量的Java对象,再调用这些Java对象的属性和方法来操作它们。       程序员需要通过关键字new创建Java对象,既可以视作为Java对象申请内存空间,JVM会在堆内存中为每个对象分配空间;当一个Java对象失去引用时,JVM的垃圾回收机制会自动清

2017-04-19 10:38:53 548

原创 常见Java集合实现细节——Iterator迭代器

4、Iterator迭代器       Iterator是一个迭代器接口,专门用于迭代器各种Collection集合,包括Set集合和List集合。4、1 Iterator实现类与迭代器模式import java.util.ArrayDeque;import java.util.ArrayList;import java.util.EnumSet;import java.

2017-04-19 08:55:44 921

转载 IP地址,子网掩码、默认网关,DNS服务器

IP地址,子网掩码、默认网关,DNS服务器是什么意思? IP地址,子网掩码、默认网关,DNS服务器是什么意思?                            (一)  问题解析001.   问:  IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇怪,我的计算机没设DNS,竟然能上

2017-04-17 19:23:50 527

原创 常见Java集合实现细节——ArrayList和LinkedList

3、ArrayList和LinkedList       在List集合的实现类中,主要有三个实现类:ArrayList、Vector、LinkedList。其中Vector还有一个Stack子类,这个Stack子类仅在Vector父类的基础之上增加了五个方法,这五个方法使得Vector扩展成为Stack。

2017-04-16 23:55:43 706

原创 Hadoop平台的搭建

Centos7搭建Hadoop平台(最简单Hadoop平台)1、 所需软件1)VMware虚拟机(使用的是VMware Workstation 10)2)Centos(使用的是Centos7)3)jdk(使用jdk-7u51-linux-x64.gz)4)Xshell(使用Xshell5,用于在window下远程连接虚拟机中的centos)5)WinSCP(用于window与虚拟机中的c

2017-04-14 12:08:42 448

原创 常见Java集合实现细节——List集合与Map集合

2、 List集合与Map集合2、1 Map的values()方法       Map集合是一个关联数组,它包含两组值:一组是所有key组成的集合,因为Map集合的key不允许重复,而且Map不会保存key加入的顺序,因此这些key可以组成一个Set集合;另外一组是value组成的集合,因为Map集合value完全可以重复,而且Map可以根据key来获取对应的value,所以这些value

2017-04-13 10:31:01 4848

原创 常见Java集合实现细节——Set集合与Map集合

1、Set集合与Map集合        Set集合代表着元素无序、不可重复的集合,Map集合则表示由key-value对组成的集合,Map集合类似于关联数组。从表面上来看,它们之间的相似性很小,但是实际上Map集合和Set集合之间有很大的关系,可以说是,Map集合是Set集合的扩展。1、1 Set与Map之间的关系        仔细观察Map集合

2017-04-11 10:22:03 1123

原创 对象及内存管理——final修饰符

4、final修饰符final可以修饰变量,被final修饰的变量被赋值之后,不能重新赋值final可以修饰方法,被final修饰的方法不能被重写final可以修饰类,被final修饰的类不能派生子类4、1 final修饰变量       被final修饰的实例变量必须显示指定初始值,而且只能在如下三个位置指定初始值。定义final实例变量时指定初始值。非静

2017-04-09 19:24:40 458

原创 对象及内存管理——父类与子类实例的内存控制

3、父类与子类实例的内存控制       继承是面向对象的三大特征之一,也是Java语言的重要特性,而父子继承关系是Java编程中需要重点注意的地方。3、1 继承成员变量和继承方法的区别class Base { int count = 2; public void display() { System.out.println(this.count); }

2017-04-08 23:05:12 682

原创 对象及内存管理——父类构造器

2、 父类构造器       当创建任何Java对象时,程序总会先依次调用每个父类的非静态初始化块、构造器(总是从Object类开始)执行初始化,然后才调用本类的非静态初始化块、构造器执行初始化过程。2、1 隐式调用与显示调用       当调用某个类的构造器来创建Java对象时,系统总会先调用父类的费静态初始化块进行初始化。这个调用时隐式执行,而且父类的静态初始化块总是会被执

2017-04-07 11:16:14 395

原创 对象及内存管理——实例变量与类变量

引言       Java内存管理分为:内存分配和内存回收。内存分配指的是创建Java对象时Java虚拟机为该对象在堆内存中所分配的内存空间;内存回收指的是当Java对象失去引用时,Java虚拟机会认为该对象为垃圾并自动清理该对象,最后回收该对象所占用的内存空间。1、实例变量与类变量        Java中局部变量可以分为以下三类形参:在方法签名中定义的局部变量,由调用方

2017-04-06 10:45:09 510

原创 数组及其内存管理——使用数组

2、使用数组当数组引用变量指向一个有效的数组对象后,程序就可以使用数组引用变量访问对象。Java不允许直接访问堆内存中的数据,因此只能通过数组引用变量来访问数组。2、1 数组元素即变量当程序需要多个类型相同的变量时,就可以考虑数组来保存这些数据。无论是哪种类型的数组,其数组元素其实相当于一个普通变量。当通过索引来使用数组元素时,将该数组元素当成普通变量使用即可。import jav

2017-04-05 21:45:10 601

原创 数组及其内存管理——数组初始化

1、 数组初始化如果程序需要多个类型相同的变量时,就可以考虑定义一个数组。Java语言的数组变量时引用类型的变量,因此具有Java引用变量的特性。1、1 Java数组静态特性Java语言是典型的静态语言,因此Java数组是静态的,即当数组被初始化之后,其所占的内存空间、数组长度均是不可变的。Java程序中的数组必须经过初始化后才能够使用,所谓初始化,即创建实际的数组对象,也就是在内存中

2017-04-05 11:31:11 618

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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