JavaSE核心——各种类

一,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() ;         //自动拆箱






转载于:https://my.oschina.net/bugkiller/blog/656814

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值