java技术细节
文章平均质量分 84
Do丶YouMissing
这个作者很懒,什么都没留下…
展开
-
三目运算符潜规则
引言三目运算符是我们经常在代码中使用的,a= (b==null?0:1); 这样一行代码可以代替一个 if-else,可以使代码变得清爽易读。但是,三目运算符也是有一定的语言规范的。在运用不恰当的时候会导致意想不到的问题。前段时间遇到(一个由于使用三目运算符导致的问题,其实是因为有三目运算符和自动拆箱同时使用(虽然自动拆箱不是我主动用的)。三目运算符对于条件表达式b?x:y,先计算条件b,然后进行判原创 2015-12-20 13:34:14 · 1626 阅读 · 0 评论 -
失效的“private”修饰符
引言在内存泄露的检查中,我们经常会听到:非静态内部类会隐式的持有外部类的实例引用。因此这个外部类的实例不会被GC回收,造成内存泄露。同时,也可以得出:内部类可以访问外部类的private变量和方法。今天我们就这俩个问题做一次深入的刨析。我们知道: 在Java编程中,使用private关键字修饰了某个成员,只有这个成员所在的类和这个类的方法可以使用,其他的类都无法访问到这个private成员。jav原创 2015-12-21 15:53:46 · 1569 阅读 · 0 评论 -
静态(static)方法不可以重写(override)
父类的普通方法可以被继承和重写,不多作解释,如果子类继承父类,而且子类没有重写父类的方法,但是子类会有从父类继承过来的方法。静态的方法可以被继承,但是不能重写。如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用原创 2016-01-08 13:26:14 · 4993 阅读 · 0 评论 -
有return的情况下try catch finally的执行顺序
总结一下:1、不管有木有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,finally仍然会执行,执行完之后才会执行return; 3、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。程序执行try块中return之前(包括return语句中的表达式运算)代码; 有异常:执行catch块中retu原创 2016-01-26 17:21:57 · 365 阅读 · 0 评论 -
java并发前身CAS原理深度分析
http://zl198751.iteye.com/blog/1848575 转载自此文。转载 2016-01-26 17:31:10 · 420 阅读 · 0 评论 -
一段多线程锁机制的代码,看完你会提高不少。
最近看到一段很有意思的代码,先贴出来。/** * * sleep(); 休眠,不会丢失任何监视器的所有权 * wait(); 等待,释放对监视器的所有权 * notice(); Wakes up a single thread that is waiting on this object's monitor原创 2016-01-08 12:56:39 · 755 阅读 · 0 评论 -
java中是否对“+”,“=”,“+=”重载
概述从语言一级来看,java不支持运算符重载,这点是肯定的。String类的”=”,”+”,”+=”,看似运算符重载,实际不是,只是在java编译器里做了一点手脚。 java编译器对String的运算符做了特殊处理。比如: String s = “s1”; s += “s2”; 编译器转换成了: String s = “s1”; s = (new StringBuilder()).app原创 2016-01-10 16:47:24 · 6249 阅读 · 1 评论 -
java传值还是传引用。
java传递分两种形式: 对象传递,参数传递。总结:对象是按引用传递的参数传递,Java 应用程序有且仅有的一种参数传递机制,即按值传递按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本,其实地址也是一个值。结合事例来看下,对象的引用传递:class Test01 { pu原创 2016-01-26 16:46:04 · 414 阅读 · 0 评论 -
Volatile关键字详解,以及需要注意的地方
简介volatile关键字保证了在多线程环境下,被修饰的变量在别的线程修改后马上同步到主存,这样线程对变量的修改对其它线程就是可见的,其它线程能够马上读到这个修改后的值。Thread的本地内存每个Thread都拥有自己的线程存储空间Threadh是同步本地存户空间的数据到主存是不确定的。上图表示两个线程并发执行,而且代码顺序上为Thread1 -> Thread21.不用 volatile假如原创 2016-03-15 17:04:34 · 1126 阅读 · 0 评论