2007-10-19

java鄙见

JAVA配置环境变量
在下载并安装完JDK之后,如果系统已安装Oracle,请务必将系统PATH里Oracle的c:\Oracle\jre\1.3.1\bin去掉,否则启动JAVA报错
新建以下变量名和值:
变量名:JAVA_HOME
变量值:D:\JDK;

变量名:path
变量值:%JAVA_HOME%\bin;

变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

字符窜比较
String 是个对象,要对比两个不同的String对象的值是否相同要用到 equals() 这个方法. 而== 比较的是内存地址的值(我自己的感觉)
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2); //false
System.out.println(str1.equals(str2)); //true

Java使用三个修饰符关键字:
public 任何人都是可用
private 在自己的类和该类型的内部方法之外谁都不能碰
protected 它与private作用相当,只是多了让继承类可以访问

数据成员可以分静态变量、非静态变量两种.
静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.

非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员始终驻留在内容中..


JAVA整型数
byte largestByte = Byte.MAX_VALUE;
short largestShort = Short.MAX_VALUE;
int largestInteger = Integer.MAX_VALUE;
JAVA实型数
float largestFloat = Float.MAX_VALUE;
double largestDouble = Double.MAX_VALUE;
字符型和布尔型等等
char aChar = 'S';
boolean aBoolean = true;

各个数据类型的最大值
The largest byte value is 127
The largest short value is 32767
The largest integer value is 2147483647
The largest long value is 9223372036854775807
The largest float value is 3.40282e+38
The largest double value is 1.79769e+308


各种数据类型之间的转换
1. 由各种数据类型转换成 String
String 类别中已经提供了将基本资料型态转换成 String 的 static 方法
也就是 String.valueOf() 这个参数多载的方法
有下列几种
String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串
String.valueOf(char c) : 将 char 变量 c 转换成字符串
String.valueOf(char[] data) : 将 char 数组 data 转换成字符串
String.valueOf(char[] data, int offset, int count) :
将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串
String.valueOf(double d) : 将 double 变量 d 转换成字符串
String.valueOf(float f) : 将 float 变量 f 转换成字符串
String.valueOf(int i) : 将 int 变量 i 转换成字符串
String.valueOf(long l) : 将 long 变量 l 转换成字符串
String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString()
用法如:
int i = 10;
String str = String.valueOf(i);
这时候 str 就会是 "10"
2. 由 String 转换成 数字类型
要将 String 转换成其他类型 大多需要使用各基本资料型态的包装类别
比如说 String 转换成 byte
可以使用 Byte.parseByte(String s)
这一类的方法如果无法将 s 分析 则会丢出 NumberFormatException
byte :
Byte.parseByte(String s) : 将 s 转换成 byte
Byte.parseByte(String s, int radix) : 以 radix 为基底 将 s 转换为 byte
比如说 Byte.parseByte("11", 16) 会得到 17
double :
Double.parseDouble(String s) : 将 s 转换成 double
float :
Double.parseFloat(String s) : 将 s 转换成 float
int :
Integer.parseInt(String s) : 将 s 转换成 int
long :
Long.parseLong(String s) : 将 s 转换成 long

异常处理语句
try {
语句(参数)
} catch (异常错误类型 名字) {
语句(参数)
} finally {
语句(参数)
}

分支语句
break语句
未标志形式的break语句被用来终止内部的switch、for、while或者do-while。而标志形式的break语句终止一个外部的语句,它是通过在break语句中使用一个标志来实现的
continue语句
public static void main(String[] args) {
String searchMe = "Look for a substring in me";
String substring = "sub";
boolean foundIt = false;
int max = searchMe.length() - substring.length();
test:
for (int i = 0; i <= max; i++) {
  int n = substring.length();
  int j = i;
  int k = 0;
  while (n-- != 0) {
  if (searchMe.charAt(j++) != substring.charAt(k++)) {
  continue test;
  }
  }
  foundIt = true;
  break test;
}
System.out.println(foundIt ? "Found it" : "Didn't find it");
}

return语句
你可以使用return 来退出当前的方法。控制流程返回到调用方法的下一个语句。这个return语句有两种形式:一种是返回一个数值,另外一种没有返回数值。为了返回一个数值,简单地,可以将数值放置在return关键字后面即可。

while语句
  你可以使用while语句当条件保持为true的时候,持续执行语句块。While语句的通常语法为:
while (expression) {
statement
}
  首先,while语句执行表达式,它将返回一个boolean数(true或者false)。如果表达式返回true,while语句执行相应的语句。While语句继续测试表达式并执行块代码直到表达式返回false。

do-while语句
  JAVA编程语言提供了另外一个语句,它跟while语句和相似,即do-while语句。Do-while的语法为:
do {
statement(s)
} while (expression);
  不象while语句,do-while语句是先执行循环中的语句后再计算表达式的,所以do-while语句就至少执行一次语句。

for语句
  for语句提供了一个简便的方法来进行循环。For语句的语法如下:
for (初始条件;终止条件;增量) {
语句
}
  初始条件是初始化循环的表达式,它在循环开始的时候就被执行一次。而终止条件决定什么时候终止循环。这个表达式在每次循环的过程都被计算。当表达式计算结果为false的时候,这个循环结束。最后,增量是循环一次增加多少(即步长)的表达式。所有的这些都是可选的。实际上,为了实现无限制的循环,这三个表达式都可以省略。
for ( ; ; ) { // 无限制的循环
...
}

if-else语句
  如果if部分为false,则执行else块。另外一种else语句的格式是else if,它根据执行另外的表达式执行语句。一个if语句可以跟着任意个else if语句,但只能有一个else语句。
if (表达式) {
语句(参数)
}

switch语句
使用switch语句可以根据一个整型表达式有条件地执行语句。
int month = 8;
. . .
switch (month) {
case 1: System.out.println("January"); break;
case 2: System.out.println("February"); break;
case 3: System.out.println("March"); break;
case 4: System.out.println("April"); break;
case 5: System.out.println("May"); break;
case 6: System.out.println("June"); break;
case 7: System.out.println("July"); break;
case 8: System.out.println("August"); break;
case 9: System.out.println("September"); break;
case 10: System.out.println("October"); break;
case 11: System.out.println("November"); break;
case 12: System.out.println("December"); break;
default: System.out.println("Hey, that's not a valid month!"); break;
}

JAVA获取上M的HTTP数据流时的正确读取法
ServletInputStream inStream = request.getInputStream(); //取HTTP请求流
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[8192]; //buff用于存放循环读取的临时数据
int rc = 0;
while ((rc = inStream.read(buff, 0, 1024)) > 0) {
  swapStream.write(buff, 0, rc);
}
byte[] in_b = swapStream.toByteArray(); //in_b为转换之后的结果
Payload = new String(in_b); //将接受到的数据转换成String

为减少数据库读取和防止并发,由JAVA应用直接生成表主键
GenGUID GenGUID = new GenGUID();
String XMLDATAId = GenGUID.GetGUID();

在Oracle数据库中插入CLOB字段的JAVA代码实例
conn.setAutoCommit(false);
/* 插入一个空的CLOB对象 */
String sql = "insert into TB_CLOB (SID,CLOBDATA) values( '"
+ CLOBDATAId + "',EMPTY_CLOB())";
opst=(oracle.jdbc.driver.OraclePreparedStatement)conn.prepareStatement(sql);
opst.executeUpdate();
opst.clearParameters();
/* 查询此CLOB对象并锁定 */
sql = "select CLOBDATA from TB_CLOB where " + " SID='"
+ CLOBDATAId + "' FOR update";
// System.out.println("start select^^^^^" + sql);
opst=(oracle.jdbc.driver.OraclePreparedStatement)conn.prepareStatement(sql);
ors=(oracle.jdbc.OracleResultSet)opst.executeQuery();
while (ors.next()) {
/* 取出此CLOB对象 */
// System.out.println("start getout clob^^^^^");
oracle.sql.CLOB clob = (oracle.sql.CLOB) ors.getClob("CLOBDATA");
/* 向CLOB对象中写入数据 */
// System.out.println("start writer clob^^^^^");
clob.putString(1, input);
PreparedStatement stmt2 = conn
.prepareStatement("update TB_CLOB set CLOBDATA = ? where"
+ " SID='" + CLOBDATAId + "'");
stmt2.setClob(1, clob);
stmt2.executeUpdate();
}
conn.commit();


取得Oracle数据库返回数据类型是XMLDATA的JAVA代码实例
Connection conn = ORACLEConnect.getConnection();
//Call function(不是PROC)
String SQLTEXT = "{? = call nspGetXMLDATA()}";
OracleCallableStatement stmt = (OracleCallableStatement)conn.prepareCall(SQLTEXT);
//注册参数 类型是XMLDATA
stmt.registerOutParameter (1, OracleTypes.OPAQUE,"SYS.XMLTYPE");
stmt.execute();
//得到返回的长度
XMLType XML = XMLType.createXML(stmt.getOPAQUE(1));
returnstr = ((XMLType)XML).getStringVal();
stmt.close();
conn.close();

将字符窜写入文本
String impstring = "ok"; //需要写入的内容
String tmpstring = null; //临时变量
PrintWriter outfile = new PrintWriter(new BufferedWriter(
new FileWriter("C:/log.txt", true)));
//每次写入日志前记录插入的时间
Calendar c=Calendar.getInstance();
outfile.println(c.get(Calendar.YEAR)+"年"+c.get(Calendar.MONTH)+1+"月"+c.get(Calendar.DAY_OF_MONTH)+"日"+c.get(Calendar.HOUR_OF_DAY)+"时"+c.get(Calendar.MINUTE)+"分"+c.get(Calendar.SECOND)+"秒");
BufferedReader Readerin = new BufferedReader(new StringReader(_s));
while ((s = Readerin.readLine()) != null) {
outfile.println(s);
}

评论
发表评论

您还没有登录,请登录后发表评论

tantengfei
搜索本博客
存档
最新评论