在java的继承体系中,java.lang.Object类位于顶端(是全部对象的直接或间接父类)。若是一个没有使用extends关键字来代表要继承的类,则默认继承java.lang.Object类,Object类定义了“对象”的基本行为,被子类默认继承。
java
1,toString()方法:返回一个能够表示该对象属性内容的字符串。
安全
Object obj = new Object(); String info = obj.toString() ; Systmem.out.println(info) ; //返回一个能够表示该对象属性内容的字符串。
①使用toString()方法,由于全部的类都继承了Object类,而toString()方法是Object类定义的,因此咱们直接继承了这个方法,Object类的toString()方法帮咱们返回了一个字符串。这个字符串的格式是固定的。
多线程
②app
public static void main(String[] args){ //SOP(toString()) ; //不能直接调用,编译错误 Point p = new Point(1); System.out.println(p) ; //输出p对象的toString()方法返回值。 }
不能直接使用toString()方法,由于该方法不是静态的,静态方法中不能直接引用非静态的属性和方法,想引用必须建立对象。非静态方法中能够直接引用静态属性和方法。
ide
2,equals方法。
ui
用于对象的“相等”逻辑。
编码
“==”与equals的区别:
spa
用“==”比较对象时,描述的是两个对象是不是一个对象。根据地址值判断。而equals描述的是两个对象的内容是否相等,内容相等取决于业务逻辑须要,能够本身定义比较规则。
线程
是字符串类型,是引用数据类型,是不可变字符串,无线程安全问题。在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]
与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是线程安全的。
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() ; //自动拆箱