• Java基础类


      Java8提供了四千多个基础类,通过这些基础类库可以提高开发效率,使用它们编写好的类进行开发,不用自己去写好这个类,这个方法是干什么的,极大程度的降低了开发难度,为Java开发

    带来了极大的便利。本文将介绍一些常用的类,经常的使用这些类,能够让我们不用去经常查阅API去寻找这些方法,节省开发时间,总的来说还是多敲,多练。

    一、Scanner类

      程序都是为用户开发的,开发好的程序需要用户的键盘输入、鼠标操作等。scanner类能够让我们获得用户的输入。

    1.1运行Java程序的参数

      public static void main(String[] args){...}

    • public修饰符:Java类编译好后由JVM虚拟机调用,为了可以自由的调用这个方法,用public修饰符把这个方法暴露出来,随意调用
    • static修饰符:JVM调用这个主方法时,不用去创建这个类的实例,直接通过对象来调用这个主方法。
    • void返回值:因为该方法被JVM调用,该方法的返回值返回给JVM,无意义,所以main()方法无返回值。
    • args形参:谁调用该方法,就负责为形参传值,

    1.3使用scanner获得键盘输入

    hasNextxxx():此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 xxx(int,long,short)值,则返回 true。

    nextXXX(): 将输入信息的下一个标记扫描为一个 byte。。获取下一个输入项

    useDelimiter("xxx"): 将此扫描器的分隔模式设置为指定模式。/n 回车符   空格符

    package WPS;
    
    import java.util.Scanner;
    
    /*
     * 题目:输入某年某月某日,判断这一天是这一年的第几天?
    程序分析:以3月5日为例,应该先把前两个月的天数加起来,然后再加上5天即本年的第几天,
    特殊情况,闰年且输入月份大于3时需考虑多加一天。
     */
    public class Exercise_14th {
        public static int analysis(int a1,int a2,int a3) {
            //设置一个参数,用来接收以前几个月的天数
            int n=0;
            //先给出一个平年的数组,数组里面有今年每个月的天数,然后判断今年是不是闰年,是的话把二月份的天数改为29天
            //数组的下标是从零开始的,所以从1开始设置每个月的天数
            int month[]=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
            //判断今年是不是润年,是的话二月就会有28天
            if(a1%400==0||a1%4==0&&a1%4==0) {
                month[2]=29;
            }
            //把之前几个月的天数全部加起来,遍历这个数组即可
            for(int i=0;i<a2;i++) {
                n=month[i]+n;
            }
            return n+a3;
        }
        public static void main(String[] args) {
            //先让用户输入年月日
            Scanner scann = new Scanner(System.in);
            System.out.println("请输入当前的年月日:年-月-日");
            //输入的年月日都是数字类型的,所以输入的下个类型是int类型的
            int a1 = scann.nextInt();
            int a2=scann.nextInt();
            int a3=scann.nextInt();
            scann.close();
            int i=0;
            i=analysis(a1, a2, a3);
            System.out.println("今天是"+a1+"年的第"+i+"天");
        }
    }

    二、Object类

    object类是所有类的父类,所有任何对象都可以调用object类的方法,object类由几个常用的方法:

    • Boolean equals(object obj): 指示其他某个对象是否与此对象“相等”。
    • procted void finalize():当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
    • Class<?> getClass():获得此对象的运行时类。
    • int hashCode():返回此对象的哈希码值;在默认情况下,是根据对象的地址值来计算的,但是很多类都重写了object类的hashCode()方法。
    • String to String():返回该对象的字符串表示。

    三、最常用的String类

      Java提供了String、StringBuffer和StringBuilder三个类来封装字符串,并提供了一系列方法来操作字符串对象。

      String类是不可变类,就是一个string对象被创建以后,包含在这个对象中的字符序列就不可以改变了,知道这个对象没有被任何引用,被垃圾回收机制销毁。

      StringBuffer对象代表一个字符序列可变的字符串,当这个对象被创建后,通过StringBuffer提供的方法,append()、insert()、reverse()、setCharAt()、setLength();调试成了最终的字符串后,

    就可以通过它的tostring()方法转换成一个String对象

      StringBuilder:跟上面的类基本相似,就是上面的类是线程安全的,这个类没有实现线程安全功能,所以性能越高

      创建一个String对象

      String():创建一个包含0个字符序列的String对象。ps:并不是返回null

      String(byte[] bytes, Charset charset) :  通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String

      String(byte[] bytes, int offset, int length) :  通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String

      String类也提供了大量的方法来操作这个字符串对象:

      char charAt(int index):获取字符串中的指定字符。

    package WPS;
    /*
     * 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
     */
    import java.util.Scanner;
    
    public class Exercise_serven {
        //计算字符串中英文字母的个数,利用string类的charAt(index)方法,返回指定索引处的char值,然后与
        //字符表中的数据做出对比,得出字符串中共有多少个字母个数
        public static int getEnglishCharCount(String str) {
            int count=0;
            for(int i=0;i<str.length();i++) {
                if((str.charAt(i)>='a'&&str.charAt(i)<='z')||(str.charAt(i)>='A')&&
                        str.charAt(i)<='Z'){
                            count++;
                        }
            }
            return count;
        }
        //计算字符串中的空格个数,方法同上
        public static int getkonggeCount(String str) {
            int count=0;
            for(int i=0;i<str.length();i++) {
                if(str.charAt(i)==' ') {
                    count++;
                }
            }
            return count;
            
        }
        //计算出字符串中的数字个数,方法同上上
        public static int getamountCount(String str) {
            int count=0;
            for(int i=0;i<str.length();i++) {
                if(str.charAt(i)>='0'&&str.charAt(i)<='9') {
                    count++;
                }
            }
            return count;
        }
        //计算其他字符的个数用字符串长度减掉前三个即可,这里就不做计算了,其他字符有点子多
        public static int getOtherCharCount(String str) {
            return 0;
        }
        public static void main(String[] args) {
            Scanner scann=new Scanner(System.in);
            System.out.println("请输入一条字符串:");
            String str = scann.nextLine();
            scann.close();
            int a = getEnglishCharCount(str);
            int b = getkonggeCount(str);
            int c = getamountCount(str);
            int d=str.length()-a-b-c;
            System.out.println("字符串中英文字母的个数为:"+a+"空格为:"+b+"数字为:"+c+"其他字符为"+d);
        }
    }
    View Code

      int compareTo(String toanotherString):比较两个字符串的大小,

        String concat(String str):将String对象和str连接在一起。

      Boolean endWith(String suffix):返回该string对象是否以suffix结尾。

      char[] toCharArray():将string对象转换成char数组。

      int indexOf(int ch):找出ch字符在该字符串中第一次出现的位置。

      int length():返回当前字符串长度。

      String substring(itn beginindex,int endIndex):获取从beginIndex位置开始到endindex位置的字符串

      String toLowerCase()/toUpperCase():将字符串转换成大小写。

      static String valueOf(X x):将基本类型转换为String对象的方法。

      因为String是不可变得,所以会额外产生很多临时变量,使用StringBuffer和StringBuilder就可以避免这个问题。

    四、BigDecimal类

      为了能精确标识,计算浮点数,Java提供了Bigdecimal类,该类提供了大量的构造器用于创建Bigdecimal对象,包括把所有的基本数值型变量转换成一个BigDecimal对象。

      BigDecimal类提供了add()、subtract()、multiply()、divide和pow等方法对精确浮点数常规算术运算。

    public class bigDecimal {
        public static void main(String[] args) {
            BigDecimal a = new BigDecimal("0.05");
            BigDecimal b = BigDecimal.valueOf(0.01);
            BigDecimal c = new BigDecimal(0.05);
            System.out.println("使用string作为BigDecimal构造器参数");
            System.out.println(a.add(b));
            System.out.println(a.subtract(b));
            System.out.println(a.multiply(b));
            System.out.println(a.divide(b));
            System.out.println("使用double作为Bigdecimal构造器参数");
            System.out.println(c.add(b));
            System.out.println(c.subtract(b));
            System.out.println(c.multiply(b));
            System.out.println(c.divide(b));
        }
    }

      

    其中a和c都是基于0.05创建的BigDecimal对象,其中a是基于"0.05的字符串",但是c是基于0.05的double浮点数,从结果可以得出创建BigDecimal对象时,一定要使用String对象作为构造器参数,而不是直接使用double数字

    五、正则表达式

    正则表达式是一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作。

    • boolean matcher(String regex):判断该字符串是否匹配指定的正则表达式
    • String replaceAll(String regex,String replacement):将该字符串中所有匹配regex的字符串替换成replacement
    • String replaceFirst(String regex,String replacement):将该字符串中第一个匹配regex的字符串替换成replacement
    • String[] split(String regex):以regex作为分隔符,把该字符串分割成多个子串
  • 相关阅读:
    由类型名得到该类型
    TypeName of CA1505 is AvoidUnmaintainableCode, not AvoidUnmantainableCode.
    多核
    SSRS throws "The operation has timed out."
    XmlRootAttribute与XmlTypeAttribute
    littleendian and bigendian
    Assembly Exp
    如何在Ubuntu 11.10下成功安装Java [转载]
    *uck up ~,纯发泄
    [转载]读书相关,,
  • 原文地址:https://www.cnblogs.com/yfstudy/p/9481390.html
Copyright © 2020-2023  润新知