① 完全匹配
<url-pattern>/test/list.do</url-pattern>
② 目录匹配
<url-pattern>/test/*</url-pattern>
③ 扩展名匹配
<url-pattern>*.do</url-pattern>
servlet-mapping的重要规则:
☆ 容器会首先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。
☆ 如果一个请求匹配多个“目录匹配”,容器会选择最长的匹配。
几乎每天都在,只是好久都是只看不写了,看看谁来过了,回访一下,看看谁留言了,回复一下,看看访问量多少了
呵呵,瞅瞅下面的一篇到现在足有两个多月了,时间过得好快啊
最近一段时间,事儿真的很多,公司的事不算忙了,所以也没什么技术问题写一写,一直想弄个blog,还没弄起来,家里有很多事忙
上周末回了趟家,正好赶上下雨,庆幸买上了火车票,还有坐,倒霉的还没赶上火车,到火车站停止检票了,在麦当劳蹲了一宿
凌晨4:30上车,开始闹肚子,哎呦,一直到家,一宿没睡,还闹肚子,我太坚强了,呵呵
想点招,赚钱,极度缺钱
为什么baidu空间不能用windows live writer这样的客户端写blog呢,落伍了啊
试用windows live writer 发blog
我的操作系统是win2003。整体google了半天才装了个e文版,凑合试试 哈哈
一直讨厌看电视剧,大都又臭又长
向来只是吃饭的时候,有时候看电视,也总是遥控器不离手,不停的换台
无意中看了会儿 八兄弟~~觉得还不错
讲的是咱老百姓的事儿
讽刺~幽默~
生活~就是不停的迈一道道的坎啊
讲话了,要当就当棍
刚整明白一个,呵呵,笨
hibernate save的时候必须启用事务,也就是必须
beginTransaction();
然后
commit();
要不然不会insert
看孙卫琴.精通Hibernate:Java对象持久化技术详解上讲
调用save方法后,hibernate并不会立即insert,而是保存在缓存里,等清理缓存时再insert
什么时候清理缓存呢?
1、事务commit();
2、find方法(hibernate3被废)
3、显示调用flush();
而为什么不用事务,只是在save();后直接显示调用flush();还是没有insert呢?
参考csdn的一个帖子http://topic.csdn.net/u/20080603/19/d6918606-3a62-43a4-b63d-cd292242bbc6.html
因为数据源的问题
真正的原因是数据源conn默认的提交方式,hibernate不管这件事,大部分开源数据源都是默认false的
我试了hibernate的默认连接池,和tomcat中配的连接池用使用事务都没有insert。
下面这段代码能够insert可以说明一些问题
public static void main(String[] args) throws Exception {
SessionFactory sf=HibernateSessionFactory.getSessionFactory();
Session session=sf.openSession();
System.out.println(session.connection().getAutoCommit());
session.connection().setAutoCommit(true);
User u=new User();
u.setName("aaa");
session.save(u);
}
}
而commit和flush的区别就是commit先flush再提交,而flush没有提交
而在close的时候,孙卫琴.精通Hibernate:Java对象持久化技术详解上讲的是hibernate会清空缓存,一个清理,一个清空,一字之差,呵呵
因为一直想写个自己的blog,用什么架构呢,遂驱使着在网上搜索有什么开放源码的blog程序,roller4.0,貌似挺有名,但资料不多,蒸腾了两天才把系统跑起来
看在
OpenSource的介绍:
Roller Weblogger
这个weblogging 设计得比较精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS syndication,blogroll管理和提供一个XML-RPC 接口。
很好的学习资料,哈哈,那就学习学习吧
不过到现在也没看出个什么门道来
系统用了struts2 不熟,struts1还行
用了JPA,不熟,确切的说刚知道这东西
用了velocity,没用过
....还有很多没见过的名词,狂晕
打了个断点跟了几圈,就晕了
呵呵
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google AJAX Language API - Hello World</title>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("language", "1");
function initialize(str) {
var text = document.getElementById("text").value;
google.language.detect(text, function(result) {
if (!result.error && result.language) {
google.language.translate(text, result.language, str,
function(result) {
var translated = document.getElementById("translation");
if (result.translation) {
translated.innerHTML = result.translation;
}
});
}
});
}
google.setOnLoadCallback(initialize);
</script>
</head>
<body>
<input type="text" name="text" value="你好,很高��到你。"/>
<input type="button" value="汉译英" onclick="javascript:initialize('en')"/>
<input type="button" value="英译汉" onclick="javascript:initialize('zh')"/>
<div id="translation"></div>
</body>
</html>
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
则表明此数不是素数,反之是素数。
【程序3】
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a> b)?a:b这是条件运算符的基本例子。
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为 '\n '.
【程序8】
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
【程序11】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
【程序12】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
【程序13】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
【程序14】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
【程序15】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y则将x与y的值进行交换,然后再用x与z进行比较,如果x> z则将x与z的值进行交换,这样能使x最小。
【程序16】
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
【程序17】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
【程序18】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
【程序19】
题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。
【程序20】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
【程序21】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
【程序22】
题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
【程序27】
题目:求100之内的素数
【程序28】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。
【程序29】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
【程序31】
题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
【程序32】
题目:取一个整数a从右端开始的4~7位。
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0 < <4)
(3)将上面二者进行&运算。
【程序33】
题目:打印出杨辉三角形(要求打印出10行如下图)
1.程序分析:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
【程序34】
题目:输入3个数a,b,c,按大小顺序输出。
1.程序分析:利用指针方法。
【程序35】
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
【程序36】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
【程序37】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
【程序38】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
【程序39】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)
【程序40】
题目:字符串排序。
【程序41】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
【程序42】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
【程序43】
题目:求0—7所能组成的奇数个数。
【程序44】
题目:一个偶数总能表示为两个素数之和。
【程序45】
题目:判断一个素数能被几个9整除
【程序46】
题目:两个字符串连接程序
【程序47】
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
【程序48】
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
【程序49】
题目:计算字符串中子串出现的次数
【程序50】
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 "stud "中。
有些是C语言的题~但要用JAVA做
转自:http://topic.csdn.net/u/20070514/12/45df0d84-e6f8-4cb4-b9ee-c5101e12c7d6.html
1 追求女人你需要时间和金钱,因此:女人=时间×金钱
2 “时间就是金钱”,所以
时间=金钱
3 因此
女人=金钱×金钱=金钱的平方
4 “金钱是一切麻烦的根源”
金钱=麻烦的平方根
5 因此
女人=麻烦的平方根的乘方
女人=麻烦
危险物质数据表
元素:女人
符号:○+
发现者:亚当
原子量:接受值是55公斤,但据知可在45公斤到225公斤之间浮动
物理特性:
1。体表通常覆盖着粉底与化妆品构成的薄膜
2。毫无意义的沸腾-----毫无理由的结冰
3。以不同状态存在于自然界中,从纯净原材料到普通矿物质均有可能
化学特性:
1。极易与黄金、白金以及所有的贵重宝石发生反应
2。可能在没有任何理由及预警下会引起自发性严重爆炸
3。是人类已知的最强的金钱还原剂
用途:
1。高度装饰性,特别是摆在跑车中
2。对于疏解压力有很大的功效
3。非常有效的厨房清洁剂
危害:
1。将另一更优质样本置于旁边时会发青(指忌妒)
2。同时持有一个样本以上为违法,但数个样本可以在不直接接触的情形下保存在不同的场所
男人与女人争论获胜的可能性
绿字为约会期,蓝字为订婚期,黑字为婚姻期
横轴为年份,竖轴为获胜可能性的百分比
任务:去商场买条裤子
蓝线为男人,红线为女人
对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。
问题一:我声明了什么!
String s = "Hello world!";
许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:
String string = s;
我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。
问题二:"=="和equals方法究竟有什么区别?
==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
int a=10;
int b=10;
则a==b将是true。
但不好理解的地方是:
String a=new String("foo");
String b=new String("foo");
则a==b将返回false。
根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是 false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。
对象内容的比较,正是equals方法做的事。
看一下Object对象的equals方法是如何实现的:
boolean equals(Object o){
return this==o;
}
Object 对象默认使用了==操作符。所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果。同样也可以看出, Object的equals方法没有达到equals方法应该达到的目标:比较两个对象内容是否相等。因为答案应该由类的创建者决定,所以Object把这个任务留给了类的创建者。
看一下一个极端的类:
Class Monster{
private String content;
...
boolean equals(Object another){ return true;}
}
我覆盖了equals方法。这个实现会导致无论Monster实例内容如何,它们之间的比较永远返回true。
所以当你是用equals方法判断对象的内容是否相等,请不要想当然。因为可能你认为相等,而这个类的作者不这样认为,而类的equals方法的实现是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列码的集合(HashSet,HashMap,HashTable),请察看一下java doc以确认这个类的equals逻辑是如何实现的。
问题三:String到底变了没有?
没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。请看下列代码:
String s = "Hello";
s = s + " world!";
s 所指向的对象是否改变了呢?从本系列第一篇的结论很容易导出这个结论。我们来看看发生了什么事情。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。
通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为 String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。
同时,我们还可以知道,如果要使用内容相同的字符串,不必每次都new一个String。例如我们要在构造器中对一个名叫s的String引用变量进行初始化,把它设置为初始值,应当这样做:
public class Demo {
private String s;
...
public Demo {
s = "Initial Value";
}
...
}
而非
s = new String("Initial Value");
后者每次都会调用构造器,生成新对象,性能低下且内存开销大,并且没有意义,因为String对象不可改变,所以对于内容相同的字符串,只要一个String对象来表示就可以了。也就说,多次调用上面的构造器创建多个对象,他们的String类型属性s都指向同一个对象。
上面的结论还基于这样一个事实:对于字符串常量,如果内容相同,Java认为它们代表同一个String对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。
至于为什么要把String类设计成不可变类,是它的用途决定的。其实不只String,很多Java标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可变类有一些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表,可能会造成性能上的问题。所以Java标准类库还提供了一个可变版本,即 StringBuffer。
问题四:final关键字到底修饰了什么?
final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。
引用本身的不变:
final StringBuffer a=new StringBuffer("immutable");
final StringBuffer b=new StringBuffer("not immutable");
a=b;//编译期错误
引用指向的对象不变:
final StringBuffer a=new StringBuffer("immutable");
a.append(" broken!"); //编译通过
可见,final只对引用的“值”(也即它所指向的那个对象的内存地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化,final是不负责的。这很类似==操作符:==操作符只负责引用的“值”相等,至于这个地址所指向的对象内容是否相等,==操作符是不管的。
理解final问题有很重要的含义。许多程序漏洞都基于此----final只能保证引用永远指向固定对象,不能保证那个对象的状态不变。在多线程的操作中,一个对象会被多个线程共享或修改,一个线程对对象无意识的修改可能会导致另一个使用此对象的线程崩溃。一个错误的解决方法就是在此对象新建的时候把它声明为final,意图使得它“永远不变”。其实那是徒劳的。
问题五:到底要怎么样初始化!
本问题讨论变量的初始化,所以先来看一下Java中有哪些种类的变量。
1. 类的属性,或者叫值域
2. 方法里的局部变量
3. 方法的参数
对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。
int类型变量默认初始值为0
float类型变量默认初始值为0.0f
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0
所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。
对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。这个问题会在以后的系列中进行详细讨论。
对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译部通过。如果在 catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要出事化成什么值好,就用上面的默认值吧!
其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。
问题六:instanceof是什么东东?
instanceof是Java的一个二元操作符,和==,>, <是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我们声明了一个String对象引用,指向一个String对象,然后用instancof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为True。
instanceof有一些用处。比如我们写了一个处理账单的系统,其中有这样三个类:
public class Bill {//省略细节}
public class PhoneBill extends Bill {//省略细节}
public class GasBill extends Bill {//省略细节}
在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断:
public double calculate(Bill bill) {
if (bill instanceof PhoneBill) {
//计算电话账单
}
if (bill instanceof GasBill) {
//计算燃气账单
}
...
}
这样就可以用一个方法处理两种子类。
然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:
public double calculate(PhoneBill bill) {
//计算电话账单
}
public double calculate(GasBill bill) {
//计算燃气账单
}
所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。
困扰80后的十大烦恼,你有吗?
1.成天泡在网上,又不知道做什么好。80后最常说的一句话是“无聊”,尽管他们在网络上聊天花去了大把的时间。
建议:聊天作为一种基本交流方式,所要达到的目的是获得认同。网上聊天很难达到这种认同,所以越聊越无聊。学习和工作累了,玩一玩游戏没错,但是打怪练级那些游戏基本上是得不偿失的,费时间,伤身体,还花钱。可以玩一玩趣味性强的休闲游戏,比如《纸客帝国》之类,轻松幽默,带点无厘头的风格,很能消除疲劳。靠玩游戏来交流感情是不现实的,要交流感情最好还是找个人去咖啡吧,或者堡个电话粥吧。
成天泡在网上
2.浮躁,好预测未知妄下定论。对看过的电影和电视剧,会按耐不住向别人透露下一个情节或者结局。对不了解的事物,根据一丁点信息发表长篇大论的见解,并且多半是批判的。对权威毫无理由的不耐烦,但绝不公开挑战,只热衷于影响身边的几个人,并有得到认同的强烈欲望。一旦不能如愿,就不再发言,部分人会暴跳如雷,令旁人费解。
建议:多出去旅行,多读书,多参加团体活动,多接触社会。世界的绝大部分真相在我们的视野之外,浮躁是个人修养浅薄的表现,人既是社会成员也是自然的组成部分,需要积淀对世界尽可能的多认识,才能达到意识的足够高度,才能让人看起来不那么浮躁。
该干什么才好......
3.瘦弱,不爱运动。对健壮的人心存嘲讽,对肌肉和力量心存恐惧。在审美上受日式漫画的影响,崇尚中性美和病态美。与第一点有一定关系,在身体的耐力、韧性和爆发力上,更热衷于后者。但是在受到刺激之后,又会表现出病态的固执。这样就表现为两个极端,一方面弱不禁风,另一方面又偶尔会有惊人之举。
建议:健身,多进行户外运动。身体是人最接近自然的组成部分,一个健康强壮不容易被击倒的身体可以让我们终生收益。
病态美其实一点都不美
4.性格软弱,喜欢为自己的意志不坚定找理由。不喜欢通过沟通达到与外界的意见统一,而是表面妥协,内心强烈反感,表现为通常所说的叛逆。性格软弱表现在与异性相处方面就是易犯花痴,对异性的正常关怀想入非非。在弄清楚是怎么回事之后,即使真的喜欢对方,也不敢大胆追求,而是找个理由退缩。通常的理由是说自己不了解爱情,也不想了解。
建议:堂而皇之的与人打一架,正儿八经的谈一次恋爱。从自然法则的角度考虑的,作为雄性动物,与同性生物打架和向异性求爱都是走向成熟的标志。
性格决定命运,软弱往往会丧失自己的利益
5.消极,拒绝长大。不喜欢被人说成熟,尤其不能容忍被人说是老男人。不耐烦与长辈讨论一些实际的问题,反感政治,厌恶参加长辈在场的应酬。要负责任的事情,会让他们觉得焦虑不安和无奈。
建议:尝试了解父母的不易。也可以从哲学层面去了解索取和付出之间的辩证关系,就象课本里所说的权利和义务的关系。
不喜欢成熟,其实是不负责的
6.选择性自闭,对熟人唠叨不休,对陌生人一言不发。偏爱使用方言或者网络语言等非大众语言。吸烟,但是不敬烟。喝酒,但是不敬酒。不是他们感兴趣的话题,基本上很难交谈下去。多人参与讨论时,如果没有人邀请他发言,即使他已酝酿好发言稿,还是会选择沉默。
建议:这些其实都是在沟通上遇到的困难。建议扩大知识面,扩大社交圈,改变与人交谈的方式,勇敢表达自己的见解,努力将自己的观点传达并影响其他人。获得认同后就会产生激励,反复几次,就可以走出自闭。
要多多与人群沟通,不要自闭
7.习惯熬夜,25岁之前通宵次数明显较多。有时候为了“合理安排时间”,干脆用通宵来减少熬夜次数。实际上下半夜都在打瞌睡。
建议:与第5点相同,熬夜其实就是自闭在作怪。有熬夜习惯的人,白天就找到了关门睡觉的理由,避免了外界的骚扰。或者白天虽然没有在家睡觉,因为精神上萎靡不振,能造成“外界不关我事”的错觉,也能达到抵制外界骚扰的目的。建议立刻改变作息时间,打开心扉。
经常熬夜会损害美丽的容颜
8.毫无理由的高傲。觉得别人不可能了解自己,并以此作为对别人不屑的理由。不愿意听别人的建议,也听不进。这种高傲连他们自己都不知道为什么。
建议:由于时代因素,80后的自尊更为脆弱,从心理上就更趋向于自我保护,表现为对外界不信任。建议多了解一些社会规则,不管在什么场合,只要你在规则之内,你就是安全的,可以自由表达自己的存在价值。
不要高傲,比你强的人有很多
9.做事不按计划,讨厌按部就班,永远不知道钱花到哪里去了。以同时看多部小说,守多部漫画为荣。喜欢同时着手几件事,忙得焦头烂额是他们喜欢的状态,尽管这些事情只要合理安排是完全可以按部就班轻松完成的。
建议:欲速则不达这个道理就不用说了吧。学会制定计划,可以避免紧急情况下全面崩盘的风险。
怎么钱又花没了
10.不问问题,相信百度和谷歌的权威,多数人喜欢用搜索引擎思考,将搜索引擎作为自己的智囊。
建议:互联网确实给了我们许多方便,但是互联网上的东西很多都是未经考证,经不起推敲的。所以要避免犯错,这个地方正需要80后拿出怀疑精神来,不能依赖互联网而使自身的学习功能退化了。
public static List openFile(File file)
{
List list = new ArrayList();
File saveFile = file;
try
{
FileReader fileReader = new FileReader(saveFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String str;
while((str = bufferedReader.readLine()) != null)
{
String [] sData = str.split("\\--");
list.add(sData);
}
bufferedReader.close();
fileReader.close();
}
catch(Exception exc){exc.printStackTrace();}
return list;
}
JavaScript语言
01 function compareDate(DateOne)
02 {
03 var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ("-"));
04 var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ("-")+1);
05 var OneYear = DateOne.substring(0,DateOne.indexOf ("-"));
06
07 if (Date.parse(OneMonth+"/"+OneDay+"/"+OneYear) >
08 new Date().getTime())
09 {
10 return true;
11 }
12 else
13 {
14 return false;
15 }
16
17 }
Java语言
01 for(int i = 0;i < list.size();i++){
02 dosomething(list.get(i));
03 }
04
05
06 for(int i = 0,n = list.size();i < n;i++){
07 dosomething(list.get(i));
08 }
//得闲看了一眼effective java,看一眼就有新收获
//后一种for循环的写法比前一种有平方级的性能提升
//因为第一种,每循环一次都要调用一次list.size()方法
//如果能确定list.size()固定不变,推荐使用后一种循环
想自己写个web应用,东瞅瞅西看看,苦于没有思路....