java基础五——基本对象与其方法

1.1   字符串(String)

1.1.1      String对象的创建原理

创建原理:

//字符串实际值
private final char value[];

//空字符串构造
public String() {this.value = "".value;}

//有参(字符串)字符串构造
public String(Stringoriginal) {
    this.value = original.value;
    this.hash= original.hash;}

       //字符数组的输出
 System.out.println({‘a’,’b’}) ------ ab
故而System.out.println(“ab”)等同System.out.println({‘a’,’b’})

创建区域:

        1:当使用任何方式来创建一个字符串对象s时,Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加。

        2:Java中,只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。

        3:使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢了!但绝不会在堆栈区再去创建String对象。

        4:使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。

            *jdk1.7,常量池移到了堆中;jdk1.8,用元空间取缔常量池。

1.1.2字符串常用方法

        1、获取长度 *.length();//这与数组中的获取长度不同,*.length;

        2、比较字符串

              (1) equals() //判断内容是否相同

         (2)compareTo() //判断字符串的大小关系(字典顺序)

扫描二维码关注公众号,回复: 2142946 查看本文章

         (3)compareToIgnoreCase(String int) //在比较时忽略字母大小写

         (4)= = //判断内容与地址是否相同

         (5)equalsIgnoreCase()//忽略大小写的情况下判断内容是否相同

         如果想对字符串中的部分内容是否相同进行比较,可以用

         (6)reagionMatches()//有两种 

                publicboolean regionMatches(int toffset, String  other,int ooffset,int len);表示如果String对象的一个子字符串与参数other的一个子字符串是相同的字符序列,则为true.要比较的String 对象的字符串从索引toffset开始,other 的字符串从索引ooffset开始,长度为len。

                public booleanreagionMatches(boolean gnoreCase,int toffset,String other,int ooffset,int len);//用布尔类型的参数指明两个字符串的比较是否对大小写敏感。

  3、查找字符串中某个位置的字符

         public char charAt(int index);//返回指定索引index位置上的字符,索引范围从0开始

  4、查找指定字符串在字符串中第一次或最后一词出现的位置

         在String类中提供了两种查找指定位置的字符串第一次出现的位置的方法

         (1)public int indexOf(String str);//从字符串开始检索str,并返回第一次出现的位置,未出现返回-1

         (2)public intindexOf(String str,int fromIndex);//从字符串的第fromIndex个字符开始检索str

         查找最后一次出现的位置有两种方法

         (1)public int lastIndexOf(String str);

         (2)public int lastIndexOf(String str,int fromIndex);

         如果不关心字符串的确切位置则可使用public boolean contains(CharSequence s);

  5、检查字符串的起始字符和结束字符

      开始的字符串两种方法

         (1)public boolean starWith(String prefix,int toffset);//如果参数prefix表示的字符串序列是该对象从索引toffset处开始的子字符串,则返回true

         (2)public boolean starsWith(String prefix);

      结束的字符串方法

         public boolean endsWith(String suffix);

  6、截取子串

          (1)public String subString(int beginIndex);//返回的字符串是从beginIndex到结束               

              (2)public String subString(intbegin Index,int endIndex);//返回的字符串是从beginIndex开始到endIndex-1。 要返回后4位可以这样写Syetem.out.println(*.subString()(*.length()-4));

  7、字符串的替换

         两种方法

         (1)public String replace(char oldChar,char newChar);//只替换检测到的第一个字符

      (2)public String replace(CharSequenc etarget,CharSequence replacement);//把原来的etarget子序列替换为replacement序列,返回新串

         (3)public String replaceAll(Stringregex,String replacement);//用正则表达式实现对字       符串的匹配

  8、字符串的大小写替转换

         (1)public String toLowerCase(Locale locale);

         (2)public String toLowerCase();

         (3)public String toupperCase(Locale locale);

         (4)public String toUpperCase();

  9、去除字符串首尾空格

         *.trim();

  10、字符串转换

         1、将字符串转换成字符数组

         public char[] toCharArray();

        2、将字符串转换成字符串数组

         public String[] split(Stringregex);//regex 是给定的匹配,为转义字符串

         3、将其它数据类型转化为字符串

         (1)public static String valueOf(booleanb);

         (2)public static String valueOf(char c)

         (3)public static String valueOf(int i);

         (4)public static String valueOf(long i);

         (5)public static String valueOf(float f);

         (6)public static String valueOf(doubled);

         (7)public static String valueOf(char[]data);

         (8)public static String valueOf(Objectobj);

        11、将字符按照某种格式输出

            String.format(reg,str)//reg为转义字符串

            整数型(十进制):d        Unicode字符:c

            Boolean值:b             String:s

            浮点数(十进制):f         浮点数(科学记数法)e

            整数(十六进制):x        任意字符:%

        12intern 方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中

1.1.3 可变字符串(StringBuffer和StringBuilder)

 StringBuffer类主要方法的使用:

  1、获取可变字符串长度

  (1)publicint length();

  (2)publicint capacity();

  (3)publicvoid setLength(int newLength);

  2、比较可变字符串

  用String 类的equals()方法比较,但是不同。

  类Object中的equals()方法比较的是两个对象的地址是否相等,而不仅仅是比较内容,但是String类在继承Object类的时候重写了equals()方法,只是比较两个对象的内容是否相等

  而在StringBuffer类中没有重写Object类的equals()方法,所以比较的是地址和内容

  3、追加和插入字符串

  (1)追加 public StringBuffer append(type t);

  (2)插入 public StringBuffer insert(int offset,type t);//在offset处加入类型为type的字符串

  4、反转和删除字符串

  (1)反转 public StringBuffer reverse();

  (2)删除 public StringBuffer delete(int start,int end);

  5、减少用于可变字符序列的存储空间

  public voidtrimToSize();

  6、StringBuffer类转换成String类

       public String toString();

*StringBuffer:线程安全,效率低。

 StringBuilder和StringBuffer等价):线程不安全,单效率高。(推举使用)

1.1.4 正则表达式

字符

    c                                 字符c

    \unnnn, \xnn,\0n, \0nn, \0nnn          带有十六或八进制值的代码单元

    \0n                              八进制0n代表的字符(0<=n<=7)

    \0nn                            八进制0nn代表的字符(0<=n<=7)

    \0mnn                         八进制0mnn代表的字符(0<=m<=3,0<=n<=7)

    \xnn                            十六进制 0xnn所代表的字符

    \uhhhh                        十六进制 0xhhhh所代表的字符

    \t, \n, \r, \f,\a, \e控制字符,依次是制表符,换行符,回车符,换页符,报警符和转义符

    \cc                               控制字符中出现的相应字符c

字符类

    [C1C2. . .] C1、C2……中的任何字符。Ci可以是字符,字符范围(C1-C2)或者字符类。

    [^. . .]                           字符类的补集

    [ . . .&& . . .]                 两个字符类的交集

预定义字符类

    .    除行终止符外的任何字符(如果DOTALL标志置位,则表示任何字符)

    \d                                数字[0-9]

    \D                               非数字[^0-9]

    \s                                空白字符[\t\n\r\f\x0B]

    \S                               非空白字符

    \w                               单词字符[a-zA-Z0-9_]

    \W                              非单词字符

    \p{name}                    一个指定的字符类

    \P{name}                    指定字符类的补集

边界匹配符

    ^ $       输入的开头和结尾(在多行模式(multilinemode)下是行的开头和结尾)

    \b                                单词边界

    \B                                非单词边界

    \A                                输入的开头

    \z                                输入的结尾

    \Z 除最后行终止符之外的输入结尾

    \G                               上个匹配的结尾

量词

    X?                               可选的X(即X可能出现,也可能不出现)

    X*                               X,可以重复0次或多次

    X+                              X,可以重复1次或多次

    X{n} X{n,}X{n,m}         X重复n次,至少重复n次,重复n到m次

量词后缀(表达式所有量词都要加)

    ?                                 设默认(贪婪)匹配为reluctant(勉强)匹配

    +                                设默认(贪婪)匹配为possessive(强制)匹配

        贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

  非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

集合操作

    XY                               X的匹配后面跟着Y的匹配

    X|Y                              X或Y的匹配

    分组

    (X)                               匹配X并且在一个自动计数的分组中捕获它

    \n                                与第n个分组的匹配

转义

    \c                                字符c(必须不是字母)

    \Q...\E                            逐字地引用...

    (?...)                           特殊构造,看Pattern类的API

方法:

    Pattern: 

         static Pattern compile(String expression)

         static Pattern compile(String expression, int flags)(获取Pattern对象)

    Matches:

        booleanmatches()//返回输入是否与模式匹配

        booleanlookingAt()//如果输入的起始匹配模式则返回True

        boolean find() 与boolean find(intstart)//尝试查找下一个匹配,并在找到匹配时返回True

        int start()

        int end()//返回当前匹配的起始位置和结尾后位置    

        int groupCount()//返回输入模式中的分组数

        int start(intgroupIndex)

        int end(intgroupIndex)//返回一个给定分组当前匹配中的起始位置和结尾后位置  

        String group(int groupIndex)//返回匹配一个给定分组的字符串, groupIndex分组索引(从1开始),0表示整个匹配

        StringreplaceAll(String replacement)

        String replaceFirst(Stringreplacement)//返回从matcher输入得到的字符串,但已经用替换表达式替换所有或第一个匹配

1.2 数组

    打印数组元素:Arrays.toString(intArray)

    将数组转型为集合:

            ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(stringArray));

    替换数组元素:Arrays.fill(arr,index)

    数组排序:Arrays.sort(arr)

    复制数组:Arrays.copyOfRangearr,start,end)

    数组查询:Arrays.binarySearch(arr,from,to,key)

1.3 键盘录入

    Scanner in = newScanner(System.in);

    获取字符串;  in.nextLine(); 获取任意字符串(只有它包括特殊字符)

    in.next();      不包含特殊字符,如空格、回车等

    二者千万不能混用

    整数等: in.nextInt();  in.nextFloat();--------------

1.4 Math类

    static double abs(double a)//此方法返回一个double值的绝对值.

    static floatabs(float a)//此方法返回一个float值的绝对值.

    static intabs(int a)//此方法返回一个int值的绝对值.

    static longabs(long a)//此方法返回一个long值的绝对值.

    static double acos(double a)//此方法返回一个值的反余弦值,返回的角度范围从0.0到pi.

    static double asin(double a)//此方法返回一个值的反正弦,返回的角度范围在-pi/2到pi/2.

    static double atan(double a)//此方法返回一个值的反正切值,返回的角度范围在-pi/2到pi/2.

    static doubleatan2(double y, double x)//此方法返回角度theta(x,y)从转换的矩形坐标到极坐标(r,θ).

    static double cbrt(double a)//此方法返回一个double值的立方根.

    static double ceil(double a)//此方法返回最小的(最接近负无穷大)double值,大于或等于参数,并等于一个整数.

    static doublecopySign(double magnitude, double sign)//此方法返回的第一个浮点参数与第二个浮点参数的符号.

    static floatcopySign(float magnitude, float sign)//此方法返回的第一个浮点参数与第二个浮点参数的符号.

    static doublecos(double a)//此方法返回一个角的三角余弦.

    static doublecosh(double x)//此方法返回一个double值的双曲余弦.

    static double exp(double a)//此方法返回欧拉数e的一个double值的次幂.

    static double   expm1(double x)//此方法返回 ex -1.

    static double floor(double a)//此方法返回最大的(最接近正无穷大)double值小于或相等于参数,并相等于一个整       数.

    static intgetExponent(double d)//此方法返回的无偏指数在该项表述的double.

    static intgetExponent(float f)//此方法返回一个浮点数的表示中使用的无偏指数.

    static doublehypot(double x, double y)//没有中间溢出或下溢的情况下,此方法返回的sqrt(x2 +y2) .

    static doubleIEEEremainder(double f1, double f2)//这两个参数,IEEE 754标准规定的方法计算,其余操作.

    static double log(double a)//此方法返回一个double值的自然对数(以e为底).

    static double log10(double a)//此方法返回一个double值以10为底.

    static doublelog1p(double x)//此方法返回自然对数的总和的参数.

    static double max(double a, double b)//此方法返回两个double值较大的那一个.

    static floatmax(float a, float b)//此方法返回的两个浮点值最大的那一个.

    static intmax(int a, int b)//此方法返回两个int值中最大的那一个.

    static longmax(long a, long b)//此方法返回的两个long值中最大的那一个.

    static double min(double a, double b)//此方法返回的两个较小的double值.

    static floatmin(float a, float b)//此方法返回的两个较小的浮动值.

    static intmin(int a, int b)//此方法返回的两个较小的int值.

    static longmin(long a, long b)//此方法返回的两个较小的长值.

    static doublenextAfter(double start, double direction)//此方法返回浮点数相邻方向的第二个参数,第一个参数.

    static floatnextAfter(float start, double direction)//此方法返回浮点数相邻方向的第二个参数,第一个参数.

    static doublenextUp(double d)//在正无穷大的方向,此方法返回至d相邻的浮点值.

    static floatnextUp(float f)//此方法返回到f相邻的浮点值在正无穷方向上.

    static double pow(double a, double b)//此方法返回的第一个参数的值提升到第二个参数的幂

    static double random()//该方法返回一个无符号的double值,大于或等于0.0且小于1.0.

    static double rint(double a)//此方法返回的double值,值的参数是最接近的,相等于一个整数.

    static long round(double a)//此方法返回的参数最接近的long.

    static intround(float a)//此方法返回的参数最接近的整数.(对a+0.5进行floor操作)

    static doublescalb(double d, int scaleFactor)//此方法返回d×2scaleFactor 四舍五入,如果由一个单一的正确舍入的浮点乘法的 double值组的成员.

    static floatscalb(float f, int scaleFactor)//此方法返回f×2scaleFactor 四舍五入,如果由一个单一的正确舍入的浮点乘法,浮点 值集合的成员.

    static doublesignum(double d)//此方法返回signum函数的参数,如果参数是零返回0,如果参数大于零返回1.0,如果       参数小于零返回-1.0.

    static floatsignum(float f)//此方法返回signum函数的参数,如果参数是零返回0,如果参数大于零返回1.0f,如       果参数小于零返回-1.0f.

    static doublesin(double a)//此方法返回一个double值的双曲正弦.

    static doublesinh(double x)//此方法返回一个double值的双曲正弦.

    static double sqrt(double a)//此方法返回正确舍入的一个double值的正平方根.

    static doubletan(double a)//此方法返回一个角的三角函数正切值

    static doubletanh(double x)//此方法返回一个double值的双曲正切.

    static doubletoDegrees(double angrad)//这种方法大致相等的角度,以度为单位的角度转换成弧度测量.

    static doubletoRadians(double angdeg)//此方法转换一个角度,以度为单位大致相等的角弧度测量.

    static doubleulp(double d)//此方法返回的参数的ulp的大小.

    static doubleulp(float f)//此方法返回的参数的ulp的大小.

1.5 Object类

equals()方法:

        用于测试某个对象是否同另一个对象相等。它在Object类中的实现是判断两个对象是    否指向同一块内存区域。这中测试用处不大,因为即使内容相同的对象,内存区域也    是不同的。如果想测试对象是否相等,就需要覆盖此方法,进行更有意义的比较(需    要先重写hashcode())

toString()

        返回该对象的字符串表示。Object类中的toString()方法会打印出类名和对象的内存    位置。几乎每个类都会覆盖该方法,以便打印对该对象当前状态的表示。大多数(非    全部)toString()方法都遵循如下格式:类名[字段名=值,字段名=值...],当然,    子类应该定义自己的toString()方法。

Object()
  
默认构造方法
clone() 
      创建并返回此对象的一个副本。 
finalize() 
      
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 
getClass() 
      返回一个对象的运行时类。 
hashCode() 
      返回该对象的哈希码值。 
notify() 
      
唤醒在此对象监视器上等待的单个线程。 
notifyAll() 
      唤醒在此对象监视器上等待的所有线程。 
wait() 
      导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方    法。 
wait(long timeout) 
      导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方    法,或者超过指定的时间量。 
wait(long timeout, int nanos) 
      导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方    法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。

1.6 System类

1. 成员属性

   in out err

        in标准输入流(键盘输入)

        out 标准输出流(显示器输出)

        err 标准错误输出流(显示器输出)

2、成员方法

        public staticvoid arraycapy(Object src,int srcPos,Object dest,intdextPos,int length)//该方法的作用是数组拷贝,也就是将一个数组中内容复制到另外一个数组中的指定位置,由于该方法是native方法,所以性能上比使用循环高效

        public staticlong currentTimeMillis()//该方法的作用是返回当前计算机的时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号,0时0分0秒所差的时间的毫秒数

        public staticvoid exit(int status)//该方法的作用是退出程序。status的值为0代表正常退出,status的值为0代表异常退出

        public staticvoid gc();//该方法的作用是请求系统进行垃圾回收。

        public staticString getProperty(String key)//该方法的作用是获得系统中属性名为Key的属性对应的值。

1.7 日期(Date)和日历(Calendar)

1.7.1 日期

    Date d = new Date();//获取当前时间

    Date d1 = new Date(year ,mouth,day);//year = 实际年份-1900    mouth =实际月份-1

    getYear();getMouth();getDate();getDay();getHours;getMinutes();getSconds();//获取日期的年、月、日、星期、小时、分钟、秒

    setYear();setMouth();setDate();getDay();setHours;setMinutes();setSconds();// 设置日期的年、月、日、星期、小时、分钟、秒

    public long getTime()//日期转毫秒值

    setTime(long time)//毫秒值转日期

    toLocaleString();//将日期按照固有格式解析为字符串并返回(Date不推举使用

1.7.2 日期格式

    SimpleDateFormat sf = newSimpleDateFormat (String pattern)//获取日期格式

    parse(String s)//将字符串按照日期格式解析成日期并返回

    format(Date d)//将日期按照日期格式返回成字符串

SimpleDateFormat日期-时间格式模式参数:

        字母         日期或时间元素         表示              示例

        G                  Era标志符             Text              AD

        y                      年                     Year          1996; 96

        M                 年中的月份          Month         July;07

        w                  年中的周数          Number         27

        W              月份中的周数          Number         2

        D                  年中的天数          Number         189

        d                  月份中的天数       Number         10

        F                  月份中的星期       Number         2

        E                  星期中的天数        Text         Tuesday; Tue 

        a                  Am/pm 标记         Text              PM

        H              一天中的小时数      Number              0

        k              一天中的小时数       Number(0-23)    24

        K          am/pm 中的小时数  Number(0-11)      0

        h          am/pm 中的小时数  Number(1-12)  12

        m          小时中的分钟数          Number         30

        s          分钟中的秒数              Number           55

        S          毫秒数                         Number          978

        z          时区                 PacificStandard Time; PST; GMT-08:00

        Z          时区                 RFC 822 time zone  -0800

1.7.3 日历

    Calendar c =Calendar.getInstance();//获取日历对象

    Date date = calendar.getTime();//从一个 Calendar 对象中获取 Date 对象

    calendar.setTime(date);//将 Date 对象反应到一个 Calendar 对象中,获取的月份=实际月份-1

    set(int field, int value)//设置"年/月/日/小时/分钟/秒/微秒"等值

    get(int field, int value)//获取"年/月/日/小时/分钟/秒/微秒"等值

    add(int field, -+intvalue)//修改"年/月/日/小时/分钟/秒/微秒"等值

1.8 封装类

基本类型和包装类的对应

              byte                    Byte

              short                     Short

              int                        Integer

              long                      Long

              float                     Float

              double                  Double

              char                      Character

              boolean                 Boolean

        任意整数              BigInteger

        任意精度              BigDecimal

构造方法

    public  Type(type  value)

    public  Type(String  value)//Character不可用

基本方法

    valueOf(String s);//返回Integer类型

    parseInt(String s);//返回int类型

    add(BigDecimal);//BigDecimal对象中的值相加,然后返回这个对象。

    Subtract(BigDecimal);//BigDecimal对象中的值相减,然后返回这个对象。

    multiply(BigDecimal);//BigDecimal对象中的值相乘,然后返回这个对象。

    divide(BigDecimal);//BigDecimal对象中的值相除,然后返回这个对象。

    toString();//将BigDecimal对象的数值转换成字符串。

    doubleValue();//将BigDecimal对象中的值以双精度数返回。

    floatValue();//将BigDecimal对象中的值以单精度数返回。

    longValue();//将BigDecimal对象中的值以长整数返回。

    intValue();//将BigDecimal对象中的值以整数返回。

    (2^1023是可获取数据的最大值)



猜你喜欢

转载自blog.csdn.net/qq_35813653/article/details/81006656