(
1
)
+=
:sum += 1;
相当于
sum = sum + 1;
(
2
)
++ --
:i++ i
加
1, i-- i
减
1, ++
或
—
放在数值后,表示执行运算后加(减)
1
,反正数值前表示执行运算前加(减)
1
(
3
)
?
: :
int n = a<10?1:2
表示如果
a
小于
10
则
n
等于
1
否则等于
2
(
4
)关系操作符:
&
表示与,如果前面为假依然判断后面的,
&&
则如果前面为假则不判断后面的,
|
表示或,如前面为真则还判断后面的,
||
如果前面为真则不判断后面的
(5)
按位操作符:
&
按位与,
|
按位或,
^
按位异或,
~
按位求反(按位操作均是将数字转换成二进制时的操作)
(
6
)移位操作符:
>>
向右移
n
为左补符号位,格式如
1356>>5
。
>>>
向右移
n
位左补
0
,格式如
: 1356>>>5
,
<<
向左移
n
位,右补
0
,格式如:
1356<<5
(
7
)转义符:
\
主要用于字符串中,因为有一些字符会表示一些特殊的键,如
t
表示制表键(
tab
),在字符串中为了将
t
与字符
t
区别就将其写成
\t
,如字符串
&rd ......
Java编写一个函数交换两个变量的值
Java函数在传递过程中只能够传值,不能传址。这样,函数的参数在函数内部做任何变化就都不会反映到外部调用者来。所以解决之道就是要找到要交换对象的引用。对于普通的值类型,像int或者double这样的可以改传他们的包装类Integer和Double。而对于本来就是引用类型的对象,则需要对他们再包一层。一个好的方法就是将参数列表改成数组,例如void
swap(Object[]); //数字应当只包含两个元素
下面以整数为例介绍三种交换两个值的算法,假设有这样的声明:
void swap(Integer a, Integer b)
方法一:采用临时变量
int temp = a.value;
a.value = b.value;
b.value = temp;
方法二:使用异或
a.value ^= b.value;
b.value ^= a.value;
a.value ^= b.value;
方法三:使用求和和求差
a.value = a.value + b.value;
b.value = a.value - b.value;
a.value = a.value - b.value;
......
1 import
2 package
3 修饰符
4 抽象类 接口
5 static
6 String相关
7 javadoc
8 异常
9 日期相关
10 输入输出流
11
一 import
import用于导入不同包中的类,不同包中的类名可以相同。
用*号只能导入一个包,不能使用 import java.* 或者 java.*.*类似的导入多个包。
导入的不同的包,含有相同的类名时,会编译错误,此时需要用包名和类名结合的方式唯一指定一个类。在c++中,与包名类似的是
namespace。using namespace std; import ****;
import 和include的区别:
java中可以通过在类名前加包名,避免使用import 而c++中的#include把外部文件加载进来,在编译的时候
二 package
package 用于指定将类放在指定的包中。如 package com.csdn.code 则类在包 com.csdn.code 包下。
若是一个类未指定public 和 private,则类的作用域是包可见。
三 修饰符
pr ......
项目是基于GMT时间的,在系统启动的时候,我们就会调用TimeZone.setDefault(timeZone)将默认时区设为GMT。
后来突然发现,有时用户选择的时间经过后台一圈后回产生8个小时误差。又是间歇性的,要他重现的时候又偏不来。苦心debug,终于发现在部分线程中,时区还是GMT+8,后台某个调用可能把时区变为了GMT,8小时误差就产生了。网上一搜,原来是bug:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6352812
只在部分电脑上有问题,幸好production上是好的,写了一个程序来测试:
import java.util.Date;
import java.util.TimeZone;
public class Test {
@SuppressWarnings("unused")
public static void main(String[] args) throws InterruptedException {
DateThread thread = new DateThread();
thread.start();
TimeZone gmt = TimeZone.getTimeZone("GMT");
Date now = new Date();
System.out.println("main thread,before set timezone:" + now.to ......
JEditorPane提供三种类型的文本显示,text/plain,text/html,text/rtf.
JEditorPane的简单用法DEMO如下:
package ibees.swing;
import java.awt.Toolkit;
import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
/**
* JEditorPane支持text/html,text/plain,text/rtf内容显示
* 此Demo主要展示了JEditor的用法和JFrame全屏的方法
* @author hhzxj2008
* */
public class JEditorPaneSample {
/**
* 在JEditor中显示HTML
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
JFrame jf = new JFrame("JEditorPane示例");
//text/html文本类型
final JEditorPane jep = new JEditorPane("http://csdn.net");
JScrollPane jsp = new JScrollPane(jep);//添加滚动支持
jep.addHyperlinkListener(new HyperlinkListener() {//添加链接点击监听者
@Override
public void hyperlinkUpdate(Hyperl ......
每个网页或请求都是一个url地址,一般,这个地址可能是.do,.page,.action之类的并加上'?'号、'&'号查询串等构成的一个长长的的url。很urgly。
一般的url----------------------------------------------------------较好的url
http://www.xxx.net/user/profile.do?id=20001 ====> http://www.xxx.net/user/20001
http://www.xxx.net/forum/board.do?name=java ====> http://www.xxx.net/forum/java
http://www.xxx.net/forum/thread.do?id=29923 ====> http://www.xxx.net/thread/29923
后者明显较为直观和漂亮。
使用url rewrite可以很好的改善这个状况。网站url rewrite应用是非常广泛的,良好的url设计给用户带来的非常好的体验,同时也能吸引搜索引擎的注意。
一种rewrite称为一个规则,上面的例子就是3个规则。rewrite技术可以在代理服务器实现,或者可以在tomcat之类的java web服务器实现。 Apache HTTP Server 2.x 和 mod_proxy提供了不错的Rewrite处理方法。so如果使用apache,则直接在apache中配置Rewrite即可。但是对于没有使用代理,或者不完全要在代理服务器配置Rewrite的web应用,通过第三方Jar ......