1.1.1 修炼第一层境界:剑指四方,试问天下与争锋
修炼第一层境界的程序员,对Java开发技术尽数掌握,开发工具掌握得也较为娴熟。可以将第二层次程序员交给的任务完成得很出色,可以按要求独立完成类、接口和算法的开发。注重技巧,对具体的编程语言非常熟悉。
能力之所及,皆无不用其极。认为所有开发知识,越是看起来深奥的越值得去研究,希望在自己开发的所有项目中,能用上的技术全用上,目的只有一个,就是尽可能多地获得实践机会。总想四处试刀,看看手里的刀到底快不快。满口都在谈什么框架是最优秀的、C#和Java的优劣,满脑子想着如何将一个程序编写得更复杂。热衷于探讨技术问题,甚至有可能因为一个开发观点而和别人争论得面红耳赤。
在编码中,常可以看到他们会这样写程序代码。
if (a>0)
a++;
else
b++;
他们非常想证明自己掌握技术的娴熟程度,没错,他知道这个知识,在这里可以省略大括号。
这类程序员大有“剑指四方,试问天下与争锋”的气势,工作具有活力,常常因为一个技术细节加班到深夜,大多属于拼命三郎型。如果项目不能让他们学到他们想要学的东西,他们会放弃这些项目,去投靠别的 ......
使用下面简单的Java程序测试命令行参数格式。
public class Test {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i].length() + ":" + args[i]);
}
}
}
编译后打开cmd命令提示符输入如下命令并查看结果:
java Test a aa b" "bb "c cc" d"""dd """" """" " """ "
1:a
2:aa
4:b bb
4:c cc
4:d"dd
3:" "
3: "
测试得出参数解析过程可描述如下:
命令行参数分为“参数分隔符”和“参数内容”
“参数分隔符”用空白字符表示
“参数内容”一般用非空白字符表示
若要将空白字符作为“参数内容”,必须使用双引号(")进行空白字符含义转换
空白字符初始含义为“参数分隔符”
遇到双引号后,空白字符的含义被转换为“参数内容字符”
再遇到一个双引号,空白字符又被转换回“参数分隔符”
若要将双引号作为“参数内容”,必须使用3 ......
在java.util 包下面有一个类 Properties,该类主要用于读取以项目的配置文件(以.properties结尾的文件和xml文件)。
Properties的构造函数有两个,一个不带参数,一个使用一个Properties对象作为参数。
使用Properties读取.properties文件
test.properties文件如下:
#测试环境配置:平台路径配置
jstrd_home=D:/TMS2006/webapp/tms2006/WEB-INF/
dbPort = localhost
databaseName = mydb
dbUserName = root
dbPassword = root
# 以下为数据库表信息
dbTable = mytable
# 以下为服务器信息
ip = 192.168.0.9
读取test.properties的方法如下:
impor java.io.*;
import java.util.*;
public class ReadProperties
{
public static void main(String[] args) {
File pFile = new File("e:\\test.properties"); // properties文件放在e盘下(windows)
FileInputStream pInStream=null;
try {
&n ......
引用于:http://blog.csdn.net/hhzxj2008/archive/2010/01/10/5171444.aspx
public static boolean validatePersonalId(String personalId) {
if ((personalId == null) || ((personalId.length() != 15) &&
(personalId.length() != 18))) {
return false;
}
int personalIdLength = personalId.length();
String regex = "[1-8]{1}[0-9]{" + (personalIdLength-2) + "}[0-9X]";
Pattern pattern = Pattern.compile(regex);
if (!pattern.matcher(personalId).matches()) {
return false;
}
// 将老身份证转换为新身份证
if (personalIdLength == 15) {
StringBuffer stringBuffer = new StringBuffer(personalId);
stringBuffer.insert(6, "19");
personalId = stringBuffer.toString();
}
// 规则
byte[] poss = { 2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, ......
这是一个没有验证行政区代码的,所以这个不算完全,但是我们在做实际应用时可以加上,这里我没加。
源码如下仅供参考.
package ibees.validator;
import java.util.regex.Pattern;
/**
* 常用的验证,source charset utf-8
*
* @author hhzxj2008
* */
public class CommonValidator {
public static boolean validatePersonalId(String personalId) {
if ((personalId == null) || ((personalId.length() != 15) &&
(personalId.length() != 18))) {
return false;
}
int personalIdLength = personalId.length();
String regex = "[1-8]{1}[0-9]{" + (personalIdLength-2) + "}[0-9X]";
Pattern pattern = Pattern.compile(regex);
if (!pattern.matcher(personalId).matches()) {
return false;
}
// 将老身份证转换为新身份证
if (personalIdLength == 15) {
StringBuffer stringBuffer = new StringBuffer(personalId);
stringBuffer.insert(6, "19");
personalId = stringBuffer.toString();
}
// 规则
byte[] poss = { 2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7 };
......
一. 数组
. 正确的定义: int num[]; num= new int[5] //只有用new关键字真正创建数组时才可以给定它的大小
错误的定义: int num[5];
. 常见的数组错误为 : ArrayIndexOutOfBoundsException (数组越界错误)
. 数组的维度用 .length; 字符串长度用 .length();
. 正确的初始化: int[] num={1,2,3}; 又或者: int num[]= new int[]{1,2,3}
错误的初始化: int[] num=new int[3]{1,2,3};
. 不能改变Java数组的大小.
二. 类
. Java只允许单继承,所以增加了接口特性.
. 所有Java类都是Object类的后代,如果一个类没有extend关键字,这个类将是基类Ojbect派生的.
. 一个文件只能有一个外部类可以声明为public, 如果你在一个文件中定义多于一个public外部类,将会发生编译错误
. Java严格区分大小写.
. 一个外部类只允许声明为public, abstact , final.
. System.out.print 是static方法, 不需要new创建.
. Static方法只能访问Static变量
. 一个方法变量将"屏蔽&quo ......