- 博客(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关注的人