JAVA温习(2)

来源:互联网 发布:成都软件测试公司 编辑:程序博客网 时间:2024/06/07 18:14

1 ==和equals区别

对于八种基本数据类型的比较,比较的是他们的值。

对于复合数据类型的比较,比较的是他们在内存中的存储地址。JAVA的类对象都是继承自Object,Object定义了equals方法,比较的是对象的存储地址,但在String,Integer,Date类中方法被重写了,不再是比较地址。如果没有被重写,对象的equals方法和==是一样的,都是比较地址,因为原来的equals方法就是根据==实现的。

虚拟机中只有字符串常量是共享的,+和substring等操作产生的字符串是不共享的 

即 String x="hello";

x=="hello";这是对的

x.substring(0,3)==hel;不对的


2String,StringBuilder,StringBuffer

创建字符串上速度String<StringBuffer<StringBuilder

StringBuilder线程非安全,StringBuffer线程安全

StringBuilder和StringBuffer比String快是因为他们只有一个对象,公用缓冲区,String每次都需要New一个对象,原来的对象被垃圾回收机制回收了

使用场景

1少量字符串 String

2单线程操作字符串缓冲区下操作大量数据 StringBuilder

3多线程操作字符串缓冲区下操作大量数据 StringBuffer

StringBuilder方法:

StringBuilder builder=new StringBuilder();builder.append("ssa");System.out.println(builder.toString());

3BigInteger,BigDecimal

方法add,subtract,multiply,divide.mod(加减乘除和加减乘除余数)参数BigInteger返回值BigInteger

compareTo(BigInteger i)返回值int相等0小于负数,大于正数

static BigInteger valueof(long x)

BigDecimal除了BigDecimal divide(BigDecimal i,RoundingMode mode)需要多一个参数舍入方式RoundingMode .HALF_UP四舍五入


4方法参数的使用情况

一个方法不能修改一个基本数据类型的参数(即数值和布尔值)

一个方法可以修改一个对象参数的状态。

一个方法不能实现让对象参数引用另一个新的对象


值传递(call by value):在参数传递的过程中,形参和实参是占据两个不同的内存空间,形参的存储内容只是对实参存储内容的一份拷贝。JAVA的对象参数就是这个原理,形参存储的内容只是和形参一样存储的对象的存储地址。

引用传递(call by reference):在参数传递的过程中,形参和实参是同一块存储空间,不分彼此。



0 0
原创粉丝点击