一,Object类
在java的继承体系中,java.lang.Object类位于顶端(是所有对象的直接或间接父类)。如果一个没有使用extends关键字来表明要继承的类,则默认继承java.lang.Object类,Object类定义了“对象”的基本行为,被子类默认继承。
1,toString()方法:返回一个可以表示该对象属性内容的字符串。
Object obj = new Object();
String info = obj.toString() ;
Systmem.out.println(info) ; //返回一个可以表示该对象属性内容的字符串。
①使用toString()方法,因为所有的类都继承了Object类,而toString()方法是Object类定义的,所以我们直接继承了这个方法,Object类的toString()方法帮我们返回了一个字符串。这个字符串的格式是固定的。
②
public static void main(String[] args){
//SOP(toString()) ; //不能直接调用,编译错误
Point p = new Point(1);
System.out.println(p) ; //输出p对象的toString()方法返回值。
}
不能直接使用toString()方法,因为该方法不是静态的,静态方法中不能直接引用非静态的属性和方法,想引用必须创建对象。非静态方法中可以直接引用静态属性和方法。
2,equals方法。
用于对象的“相等”逻辑。
“==”与equals的区别:
用“==”比较对象时,描述的是两个对象是否是一个对象。根据地址值判断。而equals描述的是两个对象的内容是否相等,内容相等取决于业务逻辑需要,可以自己定义比较规则。
二,String类
是字符串类型,是引用数据类型,是不可变字符串,无线程安全问题。在java.lang.String类中。
1,String的equals方法:两个字符串进行比较时,我们通常使用equals方法进行比较,字符串重写了Object类中的equals方法,用于比较字符串是否一致,我们不能保证任何时候“==”都成立。
2,当一个字符串变量和一个字面量进行比较时,我们一般吧字面量放在前面,即字面量.equals(字符串变量)。以为这样不会出现空指针异常,如果反过来,字符串变量.equals(字面量),如果字符串变量为空,则会出现空指针异常。如果比较双方都是变量则可以使用if(str!=null&&str.equals(str1))
3,String另外一个equals方法,equalsIgnoreCase(),该方法的作用是忽略大小写去比较字符串内容。常用环境:验证码比较!!if("HELLO".equalsIgnoreCase(str)) ;。
4,String的基本方法:
①String toLowerCase():返回字符串的小写形式,如,str.toLowerCase() ;
②String toUpperCase():返回字符串的大写形式,如,str.toUpperCase() ;
③String trim():去掉字符串两端的空格,中间的不去掉,如,str.trim() ;
④boolean startsWith():判断字符串是否以参数字符串开头,如,str.startsWith("s");
⑤boolean endsWith():判断字符串是否以参数字符串结尾,如,str.endsWith("s") ;
⑥int length():返回字符串的长度,如,str.length() ;
5,indexOf()方法,检索,位置是从0开始。
①int indexOf(String str):在给定的字符串中检索 str,返回其第一次出现的位置,检索不到返回-1;
②int indexOf(String str,int form):在给定的字符串中从form开始检索str,返回其第一次出现的位置,检索不到返回-1,form为开始位置,包括form,form之前不检索。
查找Hello in java in world中in之后第一个i的位置
index = indexOf("in") ; //先查出in字符串位置
index = indexOf("i",index+in.length()); //在in之后查i,先取出in的长度,在in之后查找
③int lastIndexOf(String str):在给定的字符串中检索str,返回其最后一次出现的位置,检索不到返回-1;
可以看做是从右往左查找。
④int lastIndexOf(String str,int form):在给定的字符串中从form开始检索str,返回其第一次出现的位置,检索不到返回-1,form为开始位置,包括form,form之后不检索,因为是从右往左检索,所以之后不检索,只检索form之前字符串。
6,substring()方法,字符串的截取,下标从0开始。
①String substring(int start,int end);返回的字符串从start开始(包含),以end结束(不包含)。
②String substring(int start);返回的字符串从start开始(包含),到字符串结尾。
7,getBytes方法(编码):将字符串变为相应的字节。
①byte[] getByte(); byte[] arr = str.getByte() ;sop(Array.toString(arr));
8,split方法,拆分:字符串的拆分。
String str = "123,324,3456,456,,,";
String[] array = str.split(",");
sop(Arrays.toString(array)); //---->[123,324,3456,456]
三,StringBuilder类
与String不同,StringBuider封装可变的字符串,有线程安全问题,对象创建后,可以通过调用方法来改变其封装的字符序列。
StringBuilder常用方法:
①追加字符串:StringBuilder append(String str) ;
②插入字符串:StringBuilder insert(int index,String str);插入后,原内容往后移。
③删除字符串:StringBuilder delete(int start,int end);
④替换字符串:StringBuilder replace(int start,int end,String str);含头不含尾
⑤字符串翻转:StringBuilder reverse() ;
StringBuilder builder = new StringBuilder() ;
builder.append("good good study") ;
builder.append("day day up") ;
System.out.println(builder.toString()); //----》【"good good study day day up"】
builder.insert(4,"!");
builder.delete(5,6);
builder.replace(0,3,best);
builder.delete(7,builder.length());
注意事项:
1)一个类对某个字符串进行频繁操作时,要使用StringBuilder,可以大规模的修改字符串,而不再开辟新的字符串,从而节约内存资源。所以,对有着大量操作字符串的逻辑中,不使用String,而使用StringBuilder。
2)append是有返回值的,返回值类型是StringBuilder
3)StringBuilder和StringBuffer区别:效果是一样的。
StringBuilder是线程不安全的,效率高,需要JDK1.5以上
StringBuffer 是线程安全的,效率低,也可变字符串。
在多线程操作的情况下,应该使用StringBuffer,因为StringBuffer是线程安全的。
四,SimpleDateFormat类
java.text.SimpleDateFormat类,日期转换类,很方便的进行日期和字符串自建转换。
1)parse方法,按照特定的格式,将代表时间的字符串转成Date对象。
2)format方法,将日期数据按照指定格式转成字符串。
字符串转成日期
SimpleDateFormat sdf = new SimpleDateFormat("yy-mm-dd") ;
String dateformat = "2016-04-11"; //创建一个日期格式的字符串
//将字符串转成相应的日期对象Date
Date date = sdf.parse(dateformat) ; //要捕获异常
System.out.println(date); //输出date对象。
日期转成字符串
SimpleDateFormar sdf = new SimpleDateFormat("yy-mm-dd") ;
Date date = new Date() ;
String now = sdf.format(date) ; //把日期对象传进去
System.out.println(now) ;
日期格式中,-和空格无意义,无含义的都将原样输出
将当前系统时间转为 yy-mm-dd hh-mm-ss效果
SimpleDateFormat sdf = new SimpleDateFormat("yy-mm-dd hh-mm-ss");
date = sdf.format(now) ;
System.out.println(date) ;
五,包装类
Java语言的8种基本类型分别对应了8种包装类,每一个包装类都封装了一个基本数据类型的成员变量,同时,还提供了针对该数据类型的实用方法。
1)包装类的作用:把基本数据类型当做引用数据类型看待。
2)包装类的名字:除了Integer(int),Charset(char),其他包装类名字都是基本数据类型首字母大写。
3)拆、装箱:Integer i = new Integer(1) ; 创建一个以对象形式存在的整数1,这种从基本数据类型到引用类型的转变称之为“装箱”,反之叫“拆箱”。
4)装箱:方式一,Double d = new Double(1.2) ; //装箱
方式二,Double d = Double.valueOf(1.2) ; //基本类型都有valueOf()方法。
5)拆箱:double num = d.doubleValue() ; //拆箱
6)包装类使用前提:JDK 1.5
public static void say(Object obj) {
System.out.println(obj) ;
}
int a = 1 ; //基本类型,不是Object子类。
say(a) ;
7)包装类的使用:实例化一个对象,这个对象对应的是整数1,Integer的作用是将基本数据类型int作为引用数据类型看待,这样就可以参与到面向对象设计中,因此可以将int当做一个Object来看待,也就是Object子类。
Integer i = new Integer(a) ; //装箱
Integer ii = Integer.valueOf(a) ; //装箱另一种操作
int num = i.intValue() ; //拆箱
say(i) ; //Integer是Object的子类,可以直接调用
8)自动装箱
say(Integer.valueOf(a)) ; //自动装箱
num = i.intValue() ; //自动拆箱