java知识散点
2015-07-30 11:47
453 查看
1. 三目运算符右结合
true?false:true == true?false:true;这个表达式等于true?false:(true == (true?false:true)); => true?false:(true == false); => true?false:false;最终应该得到false。
2. &,|,~ 为位运算符,也是Boolean类型的逻辑运算符
此时与&&,|| 区别:&&或|| 做了优化,&& 前为false或者 || 前为true,则不继续运算,而& | 则做完。
3. final,finally,finalize
finally
异常处理补充,总会执行的代码(无论是否异常),try中return时,会在return前执行
finalize
方法名,Object中定义,释放资源。
final修饰符
final成员
成员初始化后值不能再改变。
final方法
方法可被继承但不可重写。编译时将主体插入而不是调用。
final类
类不可被继承
4. 传值OR传引用?
都是传一个副本(拷贝),都是传值
基本类型或者引用类型,都会传一个拷贝,基本类型传的是另一个一样值的变量,因此传参数过去后改变不会影响。
引用类型事实上传的也是另一个一样值的引用,改变传的值也不会影响。这句可能会不被赞同,如下代码(Pig是一个简单的包含一个name成员的类,便不列出代码),将pig这个引用传入后,为pig重新引用一个类(名pig1),输出pig的name属性:
public class Test { public static void main(String[] args) { Pig pig = new Pig("pig"); changeName(pig); System.out.println(pig.getName());//"pig"而不是"pig1" } static void changeName(Pig pig){ pig = new Pig("pig1"); } }
那如果要改值呢?传递的pig虽是另一个pig,但是他的值(即对象堆中的地址两个一样的,因此可以通过传入的pig这个引用操作传入之前指向的对象),如下代码便可以改变name
static void changeName(Pig pig){ pig.setName("pig1"); //main()方法则输出"pig1" }
因此可以说都是传值,所谓传递引用,只是传递的引用的值可以被用来操作对应的对象
相关文章推荐
- spring framework项目源码github托管地址
- struts2 的ModeDriven Preparable
- java当中的IO系统小结
- myeclipse集成svn
- java.nio.channels.UnresolvedAddressException: null [运行storm-0.9.4集群时]
- javaweb 中的过滤器 包装器
- myeclipse集成maven
- java遍历HashMap
- java数字格式化, 时间换算工具方法
- 认识java中的堆和栈
- java词法分析器简单实现
- java中的内存空间 堆和栈
- java--导入包中的类
- Spring JDBC 常用批量操作及插入操作
- Spring中什么时候用@Resource,什么时候用@service
- spring中bean的作用域
- hdu5316 线段树 by java
- java 读取Properties 几种方法
- 在eclipse中打开文件所在的目录
- Spring MVC-ContentNegotiatingViewResolver 多视图返回