初学者的java小知识

语言越高级,就变的越抽象。抽象有助于我们去按生活中的事情去理解,但是语言和现实毕竟是不同的,有些东西硬用现实的例子去理解反而不好,更可悲的是我们连个现实中的例子也不好找到时。这个时候就需要我们放弃高级语言的架子,去踏踏实实的弄清它的原理。这样有时会让我们恍然大悟,或者发现原来这么简单。大笑

1)父类不可调用子类的方法,但子类可以调用父类的方法。如果子类A重写父类B的方法p时,则A.p()调用的是A的p()。但要是涉及到向上向下转型就容易晕了。

public class UpcastingDemo{
public static void main(String[] args){
Demo1 d1=new Demo2();
d1.methodA();
d1.methodB();
System.out.println(d1.i);
System.out.println("T的实际类型是:"+d1.getClass().getName());
}
}
class Demo1{
int i=1;
public void methodA(){System.out.println("method A in Demo1");}
public void methodB(){System.out.println("method B in Demo1");}
}
class Demo2 extends Demo1{
int i=2;
public void methodA(){System.out.println("method A in Demo2");}
public void methodB(){System.out.println("method B in Demo2");}
}

运行结果:

method A in Demo2
method B in Demo2
1
T的实际类型是:Demo2

你可以这样理解:假设对象o是类C1,C2····Cn的实例,其中C1是C2的子类,C2是C3的子类······Cn-1是Cn的子类。也就是说,Cn是最一般类即Object类,C1是最特殊类。如果对象o调用了一个方法p。java虚拟机就会依次在类C1,C2···Cn中查找方法p的实现,直到找到为止。一旦找到一个实现,就会停止查找并调用这个第一次找到的实现。当你理解了这句话时。上面的话不就成了废话了么,哈哈。


2)我们经常会有这样的思维,那就是如果A成立就返回true,于是我们就这样写

if(A){

return true;

}

  其实我们可以直接把A返回,是吧。


3)GregorianCalendar的注意事项:

a) 在日历中,用0---11来表示1---12月。
b) 在日历中,用1---7来表示星期日、星期一、二、...、星期六。

4)大家有没有发现java中的初始化语句块貌似没有什么作用,现在我给你一种理解方式:有些字段赋值时会抛异常如:Connection conn = DriverManager.getConnection();

还有就是当拥有多个构造方法时,如果每个构造方法有重复初始化代码,就可以放在语句块中。

5)Hibernate中Many2One和One2One的lazy为proxy和false。

6)Pattern.compile("\\babc\\b").matcher("").find() 你知道这是干什么的么?

7)正则表达式:

句点符号 匹配任何单个字符,包括空格、Tab字符甚至换行符 例如正则表达式r.t匹配这些字符串:rat、rut、r t,但是不匹配root。

方括号符号 为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你也只能匹配单个字符

“或”符号 如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆括号还可以用来分组

连字符(“-”) 它表示一个范围,比如从0到9。因此,匹配社会安全号码中的连字符号时,它的前面要加上一个转义字符“\”。

“否”符号 如果用在方括号内,“^”表示不想要匹配的字符。但以“X”字母开头的单词除外 例如正则表达式[^269A-Z] 将匹配除了2、6、9和所有大写字母之外的任何字符。

8)map的遍历

如果想保持添加时的顺序可以使用LinkedHashMap。

	public void testname() throws Exception {		
		Map<String,String> map = new HashMap<String,String>();
		map.put("k1","v1");
		map.put("k2", "v2");
		map.put("k3", "v3");
		for (Iterator it =  map.keySet().iterator();it.hasNext();)
		   {
		    Object key = it.next();
		    System.out.println( key+"="+ map.get(key));
		   }
	}

9)<c:import>标签用于包含其他Web资源,它与<jsp:include>指令的作用有些类似。<c:import>标签与<jsp:include>标签的区别在于,前者不仅可以包含同一个Web应用中的资源,还能包含其他Web应用中的资源,甚至是其他网站的资源。

10)eclipse的知识

1.在eclipse中安装tomcat服务器,报错" Cannot create a server using the selected type ".

原因:以前安装的tomcat目录改变

解决方法:Window->preferences->Server->Runtime Environment,改变tomcat的目录为你安装的目录,然后保存,这样就可以建立Tomcat server了。

2.字符集编码修改,Window->preferences输入jsp就能找到
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值