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) 角度—>弧度

posted @ 2019-01-30 18:03  杜大帅-Rebirth  阅读(214)  评论(0编辑  收藏  举报