==和equals:
==作比较:基本类型比的就是值是否相同,引用类型比的就是地址值是否相同。
equals比较:JDK中equals的源码如下:
public boolean equals(Object obj){
return (this==obj);
}
从源码中可以看出equals底层也使用过==进行比较的,那么等号比较引用,比的则是对象。因此默认情况下equals比较的是地址值。但比较地址值一般意义不大,所以我们要重写该方法,就在实体类中重写equals方法,即可比较该类的两个对象的实例是否相同。下面是通过eclipse自动生成的equals代码用来比较两个对象的值是否相同,而不是一味地比较地址值相同(在实际开发中往往都是要比较值,而==比较不了对象(引用)的值,所以只能是通过重写equals方法比较引用的值,但注意的是没有重写的equals方法功能类似于等号)。右击代码->Source->Generate hashCode and equals()...
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
A other = (A) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
String、StringBuffer、StringBuilder的区别?
(1)String:字符串,一旦被赋值就内容不可以改变,但是其引用可以改变。
String s=new String("hello");
String s="hello";两者存在区别,前一个是在堆和方法区的常量池都会创建一个对象,后面的那个就直接从常量池执行
(2)StringBuffer:线程安全的可变字符串
StringBuffer():无参构造方法,默认的容量是16,当然也有可以指定容量的缓冲区对象
String和StringBuffer的相互转换?
String s="hello";
String-->StringBuffer
方式一:StringBuffer buffer=new StringBuffer(s);方式二:StringBuffer buffer=new StringBuffer();buffer.append(s);
StringBuffer-->String
Stringbuffer buffer=new StringBuffer("Is-Me-HL");
方式一:String str=new String(buffer);方式二:buffer.toString();
(3)String、StringBuffer、StringBuilder的区别?
A:String是内容不可变的,而StringBuffer和StringBuilder是内容可变的
B:StringBuffer是同步的,数据安全的,效率低;StringBuilder是不同步的,数据不安全的,但是效率高
(4)StringBuffer和数组的区别
二者都可以看过是一个容器,装其他数据,但是呢,StringBuffer的数据最终是一个字符串数据,而数组可以放置多种数据,但必须是同一种数据类型的。
(5)作为形式参数问题
String作为参数传递:注意String作为形参传递效果是和基本类型一样。
StringBuffer作为参数传递,如果调用方法就会改变内容,赋值不会改变。例子如下:(ps:敲一遍代码就能理解)
public class Test {
public void show(String s) {
s = s + s;
System.out.println("show:" + s);
}
public void show(StringBuffer s) {
s.append("Is-Me-HL");
// s=new StringBuffer("World");
}
public static void main(String[] args) {
Test test = new Test();
String s = "Hello";
test.show(s);
System.out.println("String:" + s);
StringBuffer buffer = new StringBuffer("Hello");
test.show(buffer);
System.out.println("Buffer:" + buffer.toString());
}
}
//执行结果
show:HelloHello
String:Hello
Buffer:HelloIs-Me-HL
如果上面的例子中show(StringBuffer s)中放开那两行注释的话,再注释掉那唯一的一行代码,既可以发现上面总结的规律。
Date时间工具类简单示例:
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat ("yyyy年MM月dd日 HH时mm分ss秒");
String s=sdf.format(date);
System.out.println(s);
String source="2018年08月07日 18时52分42秒";//注意String的类型格式要和sdf的格式保持一致
Date date2=sdf.parse(source);
System.out.println(date2.getTime());
注:以上文章仅是个人学习过程总结,若有不当之处,望不吝赐教。