zoukankan      html  css  js  c++  java
  • Java基础之常用类

    一、字符串相关类

      1、String类:构造字符串对象

       常量对象:字符串常量对象是用双引号括起的字符序列。 例如:String s = "你好"、String s = "12.97"、String s = "boy"等。

      字符串的字符使用Unicode字符编码,一个字符占两个字节。 

      使用构造方法创建并初始化:

        String();//初始化一个对象,表示空字符序列

        String(value);//利用已存在的字符串常量创建一个新的对象

        String (char[] value);//利用一个字符数组创建一个字符串

        String(char[] value,int offset,int count);//截取字符数组offset到count的字符创建一个非空串

        String(StringBuffer buffer);//利用StringBuffer对象初始化String对象

        字符串特性:

      String是一个final类,代表不可变的字符序列,字符串是不可变的。一个字符串对象一旦被配置,其内容是不可变的。

         字符串内存分析:

      

        字符串常用操作:

      1)  charAt(下标):获取字符串指定下标位置的字符,返回char值

      2)  length():返回字符串的长度,返回int值

      3)  getBytes():将字符串转换为字节数组,返回byte[]值

      4)  indexOf(子字符串):返回指定子字符串在源字符串中的下标,返回int值,没找到返回-1.(可以指定开始检索的位置下标)

      5)  lastIndexOf():返回指定子字符串在源字符串中最后一次出现的下标

      6)  isEmpty():判断字符串的length是否为0,返回Boolean值

      7)  replace(旧子字符串,新字符串):用指定的新字符串替换源字符串中的旧子字符串部分,返回替换后的字符串,返回值String

      8)  subString(开始下标,结束下标):截取从开始到结束下标范围的字符串,结果包含开始,不包含结束,如果不给结束下标,表示直接截取到末尾

      9)  split(字符串):按照指定的字符串拆分源字符串,返回String[]数组

      10) trim():用于返回去掉首尾空格的字符串

      11) valueOf(其他类型数据):将指定数据转换为字符串值返回

      12) toCharArray():返回将此字符串转换为一个新的字符数组

      13) toString():返回此对象本身

      14) toLowerCase():把字符串全部转换为小写

      15) toUpperCase():把字符串全部转换为大写

      16) startsWith(前缀):判断前缀是否相同

      17) endsWith(后缀):判断后缀是否相同

      18) compareTo():判断字符串的大小关系,参考ASSCI表

      19) compareToIgnoreCase():忽略大小写判断字符串的大小关系

      20) equals(字符串):比较字符串和指定字符串是否相等,返回boolean值

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

      22) reagionMatches() :测试两个字符串区域是否相等

      23)pubic String replace(char oldChar,char newChar)

      24)public String replaceAll(String old,String new)

        字符串与基本数据的相互转换

      字符串转换为基本数据类型:

      Integer包装类的public static int parseInt(String s):可以将由“数字”字符组成的字符串转换为整型。

      类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调相应的类方法可以将由“数字”字符组成的字符串,转化为相应的基本数据类型。

      基本数据类型转换为字符串:

      调用String类的public String valueOf(int n)可将int型转换为字符串。

      相应的valueOf(byte b)、valueOf(long l)、valueOf(float f)、valueOf(double d)、valueOf(boolean b)可由参数的相应类到字符串的转换。

        字符串与字符、字节数组

      字符串与字符数组

      String 类的构造方法:String(char[]) 和 String(char[],int offset,int length) 分别用字符数组中的全部字符和部分字符创建字符串对象

      String类提供了将字符串存放到数组中的方法:

      public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

      将字符串中的全部字符存放在一个字符数组中的方法:

      public char[] toCharArray()

     

        字符串与字节数组

      String(byte[])用指定的字节数组构造一个字符串对象。String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。

      public byte[] getBytes() 方法使用平台默认的字符编码,将当前字符串转化为一个字节数组。

      public byte[] getBytes(String charsetName) 使用参数指定字符编码,将当前字符串转化为一个字节数组。

      2、StringBuffer类与StringBuilder类

      StringBuffer是一个容器。

      java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。 很多方法与String相同,但StingBuffer是可变长度的。 

      StringBuffer类有三个构造方法:

      1.StringBuffer()初始容量为16的字符串缓冲区

      2.StringBuffer(int size)构造指定容量的字符串缓冲区

      3.StringBuffer(String str)将内容初始化为指定字符串内容

     

        与String的区别:

      String s = new String("我喜欢学习");//长度不可变

      StringBuffer buffer = new StringBuffer(“我喜欢学习”);//长度可变,调用append()方法,增加字符串长度

      buffer.append("数学");

      常用类:

      StringBuffer append(String s),

      StringBuffer append(int n) ,

      StringBuffer append(Object o) ,

      StringBuffer append(char n),

      StringBuffer append(long n),

      StringBuffer append(boolean n),

      StringBuffer insert(int index, String str)

      public StringBuffer reverse()

      StringBuffer delete(int startIndex, int endIndex)

      public char charAt(int n )

      public void setCharAt(int n ,char ch)

      StringBuffer replace( int startIndex ,int endIndex, String str)

      public int indexOf(String str)

      public String substring(int start,int end)

      public int length()

     

      StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样

      String:不可变字符序列

      StringBuffer:可变字符序列、效率低、线程安全

      StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全

      String使用陷阱: string s="a"; //创建了一个字符串  s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

    二、日期类

      1.java.lang.System类

      System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

      此方法适于计算时间差。

      计算世界时间的主要标准有:

      UTC(Universal Time Coordinated)

      GMT(Greenwich Mean Time)

      CST(Central Standard Time)

      2. java.util.Date类

      表示特定的瞬间,精确到毫秒

      构造方法:

      Date( )使用Date类的无参数构造方法创建的对象可以获取本地当前时间。

      Date(long date)

      常用方法:

      getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

      toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。

      Date类的API不易于国际化,大部分被废弃了,java.text.Simp leDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

      它允许进行格式化(日期文本)、解析(文本日期)

      格式化:

      SimpleDateFormat() :默认的模式和语言环境创建对象

      public SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象,该对象调用:

      public String format(Date date):方法格式化时间对象date

      解析:

      public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期。

     

      3. java.util.Calendar(日历)类

      Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。

      获取Calendar实例的方法

      使用Calendar.getInstance()方法

      调用它的子类GregorianCalendar的构造器。

       一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND

      public void set(int field,int value)

      public void add(int field,int amount)

      public final Date getTime()

      public final void setTime(Date date)

    package main.dyh.test_utils;
    
    import org.junit.Test;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    
    public class TestString {
    
        @Test
        public void fun1() {
            Date date = new Date();
            System.out.println(date);
    
            long l = System.currentTimeMillis();
            System.out.println(l);
        }
    
        @Test
        public void fun2() throws ParseException {
            Date date = new Date();
    
            //产生一个formater格式化的实例
            SimpleDateFormat st = new SimpleDateFormat();
            String f1 = st.format(date);
            System.out.println(f1);
    
            SimpleDateFormat st1 = new SimpleDateFormat("yy-MM-dd hh:mm:ss");
            String f2 = st1.format(date);
            System.out.println(f2);
        }
    
    
        @Test
        public void fun3(){
            Calendar calendar = Calendar.getInstance();
    
            //获取时间
            Date time = calendar.getTime();
            System.out.println(time);
    
            SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String format = st.format(time);
            System.out.println(format);
    
            //获取年
            int year = calendar.get(Calendar.YEAR);
            System.out.println(year);
    
            // 获取月,这里需要需要月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值
            int month = calendar.get(Calendar.MONTH)+1;
            System.out.println(month);
    
            //获取日Date同DAY_OF_MONTH
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.println(calendar.get(Calendar.DATE));
            System.out.println(day);
    
            //获取时
            int hour = calendar.get(Calendar.HOUR);
            System.out.println(hour);
    
            //获取分
            int minute = calendar.get(Calendar.MINUTE);
            System.out.println(minute);
    
            //获取秒
            int second = calendar.get(Calendar.SECOND);
            System.out.println(second);
    
            // 星期,英语国家星期从星期日开始计算
            int week = calendar.get(Calendar.DAY_OF_WEEK);
            System.out.println(week);
        }
    
    
        //一年后的今天
        @Test
        public void fun4(){
            Calendar calendar = Calendar.getInstance();
    
            // 同理换成下个月的今天calendar.add(Calendar.MONTH, 1);
            calendar.add(Calendar.YEAR, 1);
    
            // 获取年
            int year = calendar.get(Calendar.YEAR);
            System.out.println(year);
    
            // 获取月
            int month = calendar.get(Calendar.MONTH) + 1;
            System.out.println(month);
    
            // 获取日
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.println(day);
        }
    
        // 获取任意一个月的最后一天
        @Test
        public void fun5(){
            Calendar calendar = Calendar.getInstance();
    
            // 假设求6月的最后一天,月份是从0到11,所以这里设置6,其实是7月
            int currentMonth = 6;
            // 先求出7月份的第一天,实际中这里6为外部传递进来的currentMonth变量
            // 1
            calendar.set(calendar.get(Calendar.YEAR), 10, 1);//设置日期
            System.out.println(calendar.getTime());
    
            calendar.add(Calendar.DATE,-1);//七月一号的前一天
    
            // 获取日
            int day = calendar.get(Calendar.DAY_OF_MONTH);
    
            System.out.println("6月份的最后一天为" + day + "号");
        }
    
        // 设置日期
        @Test
        public void fun6(){
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.YEAR, 2000);
            System.out.println("现在是" + calendar.get(Calendar.YEAR) + "年");
    
            calendar.set(2008, 8, 8);
            // 获取年
            int year = calendar.get(Calendar.YEAR);
            System.out.println(year);
    
            // 获取月
            int month = calendar.get(Calendar.MONTH);
            System.out.println(month);
    
            // 获取日
            int day = calendar.get(Calendar.DAY_OF_MONTH);
            System.out.println(day);
        }
    }
    View Code

    三、Math类

      java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。

      abs 绝对值

      acos,asin,atan,cos,sin,tan 三角函数

      sqrt 平方根

      pow(double a,doble b) a的b次幂

      log 自然对数 exp e为底指数

      max(double a,double b)

      min(double a,double b)

      random() 返回0.0到1.0的随机数

      long round(double a) double型数据a转换为long型(四舍五入)

      toDegrees(double angrad) 弧度—>角度

      toRadians(double angdeg) 角度—>弧度

  • 相关阅读:
    SQL Server 跨服务器 存储过程传字符串数组不同数据库之间复制表的数据
    SQL Server 跨服务器 存储过程不同数据库之间复制表的数据
    SQL Server 跨服务器 存储过程不同数据库之间复制表的数据
    SQL Server跨服务器查询
    抓包自定义过滤器需加%XXXX%,如%third_play%
    svn 清理命令失败
    通过windug判断某个模块导致程序不能退出。
    如果判断不出是不是某个模块出的问题,删除此模块测试。
    读配置前把vector清掉
    DNS服务器的原理
  • 原文地址:https://www.cnblogs.com/soft2018/p/10339264.html
Copyright © 2011-2022 走看看