- 博客(34)
- 资源 (25)
- 收藏
- 关注
原创 25、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果
最近没事看了下Java的一些经典面试题,前面的都还挺简单,一路看下去毫无阻力,但是看到第25题就被难住了,第25题是这样的:25、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 +
2013-01-30 20:45:16 4838
原创 获取当前运行Java的进程标识符(PID)
在CUI中敲入JPS命令即可。比如:C:\Users>jps7152 Jps4440C:\Users>
2013-01-28 21:43:25 1956
原创 ++count具不具有原子性
++count不具有原子性。它其实代表三个操作,即 取得当前值,当前值加1,把新值写回。因此,该语句不是线程安全的。
2013-01-23 22:27:56 1231
原创 软件设计三大原则
1. 面向接口编程,而不是面向实现编程2. 组合优先于继承3. 将经常变化的部分从不变的部分中分离出来1. Identify the aspects of your application that vary and separate them from what stays the same2. favor composition over inheritance
2013-01-22 15:07:18 2898 1
原创 一个简单的生产者/消费者例子
import java.util.ArrayList;import java.util.List;class Plate { private List apples = new ArrayList(); public synchronized void putApple(Object apple) { if(apples.size() > 0) { try { wa
2013-01-22 12:39:20 2089
原创 Java 同步方法(块)步骤
一个线程执行临界区代码过程如下:1 获得同步锁2 清空工作内存3 从主存拷贝变量副本到工作内存4 对这些变量计算5 将变量从工作内存写回到主存6 释放锁可见,synchronized既保证了多线程的并发有序性,又保证了多线程的内存可见性。
2013-01-22 12:23:02 995
原创 java设计模式之模板方法模式
模板方法就是一个方法(通常为final,不允许子类进行覆盖),该方法包含了一个算法的各个步骤(每个步骤相当于一个方法),在模版方法内调用的方法中有抽象的(待子类覆盖),也有实例的。另外在模版方法所属类中可以包含一个钩子方法(hook),该方法可以控制模版方法中的逻辑,该方法提供默认的实现。子类不是必须实现它。下面给出一个具体的例子。Beverage.java:package o
2013-01-21 22:28:11 2453 2
原创 受检异常和非受检异常
RuntimeException和它的子类以及Error和它的子类都是非受检异常。 因此,对于一个方法抛出RuntimeException和它的子类或者Error和它的子类。调用它无需进行异常处理,编译器能通过。 除此之外的其它异常类都需要进行异常处理,即添加try-catch(-finally)语句块进行捕捉和处理。
2013-01-20 20:09:58 4976 1
原创 抵御反射机制调用单例类私有构造器
Java 单例模式一般有两种实现: 1.暴露静态final字段Java代码 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis(){;;;} public v
2013-01-17 19:24:36 3415 1
原创 遇到多个构造器参数考虑用构建器(Builder)
如果一个对象带有多个参数,程序员一般采用重叠构造器模式。但是该方法的缺点是,如果参数很长,客户端代码不仅很难编写,同时可读性也很差。第二种替代方案:Java Beans。类中提供一个无参构造方法和对属性的mutator方法。该方法的缺点是容易线程安全问题。第三种方案就是Builder模式。该方案既保证了重叠构造器模式的安全性,又保证像JavaBeans模式那样好的可读性。考虑一个例子,
2013-01-16 14:27:13 1642 1
原创 Java 返回零长度数组或集合,而不是返回null
下面的方法并不少见:private final list cheesesInStock = ...;public Cheese[] getCheeses() {if (cheesesInStock.size() == 0)return null;...}这样在客户端调用中必须对处理null的情形。Cheese[] cheeses = shop
2013-01-14 19:08:50 10719 4
原创 Java的数组
我们知道,在Java中,数组也是一种对象,所以,数组应该也存储在堆区中。既然数组是一种对象,那么它也应该有相应的方法和属性,通过IDE的帮助,我们可以得到以下方法:根据猜测,数组应该直接继承Object类,并且复写了clone方法(测试过,应该是浅复制)。但是没有复写finalize方法(所以一共也就只有10种方法)属性只有一个,即length,表明该数组的元素大小。
2013-01-13 14:29:37 900
原创 Java && 和 &,以及 || 和 | 的区别(&和|也能进行逻辑运算)
注意,| 和 & 不只能进行位运算,还能进行逻辑运算哦!!!(^也能进行逻辑运算,只不过没有^^这种运算符)/** * Test & && 区别 (包括 | ||) */public class Test { public static void main(String args[]) { /* 逻辑运算符 */ boolean a = true & false;
2013-01-13 01:40:21 1712
原创 覆盖方法遵循原则
子类中覆盖父类的对应方法必须遵循下面的规则:参数不可变(译者注:包括参数类型和个数)。返回类型不可变,除了协变返回类型或其子类型(covariant (subtype) returns)。异常子类中可以抛出更少的异常,但绝对不能抛出父类中没有定义的已检查异常。访问权限比父类中对应方法更宽松。
2013-01-12 23:48:52 1422
原创 Java之不变String
public static void main(String[ ] args) { String s = new String("aaa"); }该语句创建了几个String对象?我想这是一个经常出现在面试题中的问题。我们先不回答它,比较比较它们的引用先。 public static void main(String[ ] args) { St
2013-01-12 19:03:12 1160
原创 Java 原始类型大小
1字节=8位boolean 1字节byte 1字节char 2字节short 2字节int 4字节float 4字节 double 8字节long 8字节
2013-01-11 23:53:29 1155
原创 abstract interface & interface
我们知道接口的修饰符只能为public和abstract(内部接口除外)public可以理解,但是abstract有点疑惑,于是Google了一下,得出该句:Every interface is implicitly abstract.This modifier is obsolete and should not be used in new programs.每个接口隐含着抽象。
2013-01-11 22:53:08 1048
原创 Java main方法思考
我们知道,main方法的签名是:public static void main(String args[]);如果我们不这样定义,那么JVM是找不到程序的入口的。但是我们能做些什么修改,而让JVM能够找到它呢?经过一番努力,我也只找到两处。第一:参数名可以随意,只要是String数组即可。public static void main(String a[]);
2013-01-11 22:33:57 718
原创 java内部类之见解
很悲伤,在ITEye发表的一篇文章被喷的狗血淋头,也许出没于ITEye里的都是一些牛逼人物,在他们看来,也许我写的文章简直狗屁不如,但是有谁能保证刚开始踏入IT的自己马上能够写下出一些非常惊世骇俗的文章呢?没错,我的技术确实很烂,烂到家了。但是有一点我想要强调,那就是我喜欢Java,真的很喜欢。我不相信一夜之间就能称为Java高手,我只希望能够一步一个脚印,慢慢成长,我相信用不了多久,只要我能坚持
2013-01-11 21:50:39 1133
原创 Java中的 分号 ;
在java语言规范中,分号代表一个语句的结束。所以,即使分号前面没有任何内容,那么一个分号其实也代表一个语句(空语句)。因此,分号可以出现在许多地方:比如:package test;;;;;;;;;;;;public class Book {;;;; private int a = 1;;;;;; public static void main(String[]
2013-01-11 20:38:19 9869
原创 探索 Java 关键字 final
1.final修饰class。代表限制继承,即该类为最终类,不可以被继承,位于继承结构的最底端,相当于叶。其所有方法默认为final。2.final修饰方法,代表该方法不可以被覆盖(Override)。3.final修饰变量。代表该变量只能被赋值一次。如果final 和 static 同时修饰变量,那么该变量必须在定义的同时进行赋值。如果final不和static 组合,那么在定义
2013-01-11 13:01:35 1430
原创 Java如何复制对象
假如说你想复制一个简单变量。很简单: int apples = 5; int pears = apples;不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。但是如果你复制的是一个对象,情况就有些复杂了。假设说我是一个beginner,我会这样写:c
2013-01-10 21:29:38 75868 16
原创 Java中的短路效应
对于逻辑运算符&& 和 ||,学过discrete Math的同学都知道,一个是与,一个是或。在Java中它们存在短路效应。对于a && b,只有当a和b同时为true时,整个表达式才为true,在java中,首先运算表达式a,如果a为true,则继续运算表达式b,如果表达式a为false,那么整个表达式也肯定为false,所以表达式b不会被运算。对于a || b,至少有一个为tr
2013-01-10 18:19:29 5082
原创 Java static 关键字
1.变量:变量可分为实例变量和静态变量:区别:1. 静态变量是属于类的,实例变量是属于对象的。2. 类和对象均可修改静态变量;只有对象可以修改实例变量。3. 每个实例变量都会给出相应的存储空间。静态变量存储空间只有一份。2.方法方法可分为实例方法和静态方法:区别:1. 实例方法可以访问静态变量,静态方法不能访问实例变量。2. 实例方法可以访问静态方法,静
2013-01-10 16:50:23 1282
原创 实例测试Mysql使用索引带来的效率提升
创建数据库:CREATE DATABASE `sql_learn_db`;创建一个表:Create Table: CREATE TABLE `persons` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `LastName` varchar(255) DEFAULT NULL, `FirstName` varchar(255) D
2013-01-09 19:25:55 1610
原创 Java的switch-case语句
java的switch-case语句格式如下: switch(参数) { case 常量表达式1: break; case 常量表达式2: break; ... default: break; }注意的地方:switch接受的参数类型有10种,分别是基本类型的byte,short,int,char,以及引用类型的String(只有JavaSE 7
2013-01-09 15:26:08 56084 1
原创 Java SOPs 重定向
System.out.println();上面这条用臭了的语句,负责将指定的信息打印到标准输出(屏幕)。一般我们都能在控制台上看到打印信息。如果我们想将一些信息持久化,比如存储在文件中,怎么办呢?(每次重新运行程序,控制台的信息就不见了)一种解决办法就是重定向输出。public static void setOut(PrintStream out);System类的se
2013-01-08 15:49:36 1107
原创 Android和iPhone截屏快捷键
截屏快捷键(Power + Home)其实在手机上截屏非常容易。只要同时按住关机键(Power)和主页键(Home)一会儿,系统就会将当前屏幕作为图片存储在手机相册里。已经在HTC Explorer和iPhone 4S测试过。这个快捷键适用于最新版本的Android和所有iOS设备。
2013-01-08 15:08:07 1956
原创 Java 调用 C程序 之HelloWorld
在开始之前,请先下载一个C编译器(tcc)并将其添加到系统路径中。下载地址: http://mirror.veriportal.com/savannah//tinycc/tcc-0.9.25-win32-bin.zip 1. 编写Java源程序并编译: Java代码 public class Ja
2013-01-07 23:09:19 1205
原创 Java 版本 特征 和 历史
Java 版本 特征 和 历史Java Version SE 7Code named Dolphin and released on July 28, 2011.New features in Java SE 7Strings in switch StatementType Inference for Generic Instance CreationMulti
2013-01-07 19:26:01 908
原创 Java 遍历 Map 对象
如何在Java中遍历Map对象?如果阅读过API开发文档,应该可以找到这三个关键方法。Set keySet(); /* 返回Key的集合 */Collection values); /* 返回value的集合 */Set> entrySet(); /* 返回键值对的集合 */Entry是Map接口的内部接口,一个Entry对象代表了一个键值对。
2013-01-07 13:41:59 1209
原创 Java发展里程碑
从1996年初Java发行的第一个版本Java 1.0 到 今年(2013)将要发行的最新版本Java 1.8,Java一共走了将近17个年头。我认为稍微了解下Java的里程碑是有好处的。以下是摘自>的截图:从图上可以看出(没有标出1.7版本的),5.0版本增加了许多特性。另外类与接口的数量的变化非常明显。内部类是在Java 1.1版本出现。断言是在1.4版本出现。
2013-01-06 23:07:53 1655
原创 Java 之 assert (断言)
我们知道C/C++语言中有断言的功能(assert)。在Java SE 1.4版本以后也增加了断言的特性。断言是为了方便调试程序,并不是发布程序的组成部分。理解这一点是很关键的。默认情况下,JVM是关闭断言的。因此如果想使用断言调试程序,需要手动打开断言功能。在命令行模式下运行Java程序时可增加参数-enableassertions或者-ea打开断言。可通过-disableasserti
2013-01-05 14:02:26 21038 3
原创 Install tomcat in Ubuntu
I'm sorry I have to blog in English,for I haven't install Chinese input method in Ubuntu. Using Linux is a little different from Windows. For one thing, you cannot copy or move files and direct
2013-01-02 23:01:54 2305
iOS汉字首字母获取
2015-06-29
Swift documentation
2014-06-05
基于SSH晒晒图网站
2013-01-18
android_service_电话录音
2012-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人