• Java常用类介绍


    常用类

    包装类

    基本介绍

    包装类位于java.lang包,用法类似;

    基本数据类型与包装类的对应关系:

    基本数据类型 包装类
    byte Byte
    boolean Boolean
    short Short
    char Character
    int Integer
    long Long
    float Float
    double Double

    由于包装类的常用方法类似,此处拿Integer举例;

    数字相关的包装类都继承了Number类;Byte,Short,Integer,Long,Float,Double等。

    常用方法示例:

    public class TestInteger {
    	public static void main(String[] args) {
    		//1.基本数据类型转成包装类对象
    		Integer a = new Integer(1);
    		Integer b = Integer.valueOf(2);
    		//2.包装类对象转成基本数据类型
    		int c = b.intValue();
    		double d = b.doubleValue();		
    		//3.字符串转成包装类对象
    		Integer e = new Integer("8888");	
    		//4.包装类对象转成字符串
    		String f = e.toString();	
    		//5.包装类中的常量
    		System.out.println("Integer中最大值:"+Integer.MAX_VALUE);
    		System.out.println("Size:"+Integer.SIZE);
    	}
    }
    

    自动装箱和拆箱

    // 自动装箱 
    Integer a = 2;//相当于 Integer a = Integer.valueOf(2); 
    // 自动拆箱
    int b = a; //编译器自动转为:int b = a.intValue();
    
    • 缓存问题:缓存[-128,127]之间的数字,系统初始化时创建的一个缓存数组;
    Integer a = 124;
    Integer b = 124;
    System.out.println(a==b); //true
    System.out.println(a.equals(b)); //true
    
    Integer c = 128;
    Integer d = 128;
    System.out.println(c==d); //false
    System.out.println(c.equals(d)); //true
    

    String

    public final class String
        implements java.io.Serializable, Comparable<String>, CharSequence {
        /** The value is used for character storage. */
        private final char value[];   
    }
    
    • String类是不可变字符序列;
    • 判断String对象值是否相等使用equals()方法

    常用方法

    JDK8 API

    方法 解释说明
    char charAt(int index) 返回字符串中索引为index的字符,索引范围(0,lenth()-1);
    boolean equals(Object anObject) 如果字符串与anObject相等,返回true;否则返回false;
    boolean equalsIgnoreCase(String other) 判断字符串是否相等(忽略大小写);
    int indexOf(String str) 返回从头开始查找的第一个子字符串str在字符串中的索引位置。如果未找到子字符串str,则返回-1;
    int lastIndexOf() 返回从末尾开始查找的第一个子字符串str在字符串中的索引位置。如果未找到子字符串str,则返回-1;
    int length() 返回字符串的长度;
    String replace(char oldChar,char new Char) 返回一个新串,它是通过用newChar替换此字符串中出现的所有oldChar而生成的;
    boolean startsWith(String prefix) 如果字符串以prefix开始,则返回true;
    boolean endsWith(String prefix) 如果字符串以prefix结尾,则返回true;
    String substring(int beginIndex) 返回一个新字符串,该串包含从原始字符串beginIndex到串尾;
    String substring(int beginIndex, int endIndex) 返回一个新字符串,该串包含从原始字符串beginIndex到串尾或endIndex-1的所有字符;
    String toLowerCase() 返回一个新字符串,该串将原始字符串中的所有大写字母改成小写字母;
    String toUpperCase() 返回一个新字符串,该串将原始字符串中的所有小写字母改成大写字母;
    String trim() 返回一个新字符串,该串删除了原始字符串头部和尾部的空格

    StringBuilder和StringBuffer

    StringBuilder和StringBuffer共同的父类AbstractStringBuilder

    abstract class AbstractStringBuilder implements Appendable, CharSequence {
        /**
         * The value is used for character storage.
         */
        char[] value;
    }
    
    • StringBuilder和StringBuffer是可变字符序列;
    • StringBuffer JDK1.0版本提供的类,线程安全,做线程同步检查,效率较低;
    • StringBuilder JDK1.5版本提供的类,线程不安全,不做线程同步检查,因此效率较高,常用;

    常用方法

    方法 解释说明
    public StringBuilder append(…) 重载的方法,可以为StringBuilder对象添加字符序列,仍然返回自身对象;
    public StringBuilder delete(int start,int end) 可以删除从start到end-1为止的一段字符串序列,仍然返回自身对象;
    public StringBuilder deleteCharAt(int index) 移除此序列索引为index的字符,仍然返回自身对象;
    public StringBuilder insert(…) 重载的方法,可以为StringBuilder对象在指定位置插入字符序列,仍然返回自身对象;
    public StringBuilder reverse() 将字符串序列逆序,仍然返回自身对象;
    public String toString() 返回此序列中数据的字符串表示形式;
    public void setCharAt(int index,char c) 将c替换到原字符序列索引为index的位置;
    indexOf(),substring(),length(),charAt() 类似String类中的方法;

    时间处理相关类

    • 以1970年1月1日 00:00:00定为基准时间,度量单位为毫秒(千分之一秒)

    • 用long类型的变量保存时间;

    • 获得现在时刻的“时刻数值”,

      long now = System.currentTimeMillis();
      

    Date

    public class Date
        implements java.io.Serializable, Cloneable, Comparable<Date>
    {
    	public Date() {
            this(System.currentTimeMillis());
        }
    }
    
    • Date的构造方法返回了当前时间的毫秒值,说明新创建的Date对象的时间为当前时间;
    • Date带参构造,参数是一个毫秒数,表示从基准时间过了参数毫秒值的时间;
    • boolean after(Date when) 判断此时间是否在指定时间之后;
    • boolean before(Date when) 判断此时间是否在指定时间之前;
    • boolean equals(Date when)判断两个日期的相等性;
    • long getTime() 返回自基准时间到该Date对象时间所经过的毫秒数;
    • String toString() 把Date对象转换成java源码中设定格式的字符串输出;

    DateFormat

    • 把时间对象转化成指定格式的字符串,反之,把指定格式的字符串转化成时间对象;
    • DateFormat是一个抽象类,一般使用它的子类SimpleDateFormat类来实现

    方法:

    方法 解释说明
    public String format(Date date) 返回将date转化为指定格式的字符串;
    public Date parse(String str) 将指定格式的字符串转化为Date对象并返回;
    //把时间对象转成字符串
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    Date date = new Date();
    String str = df.format(date);
    //把字符串装成时间对象
    Date date = df.parse("2019-9-9 11:11:11"); //需要捕获异常
    

    其他格式化字符:SimpleDateFormat

    比如 D 表示当前时间是当前年份的第多少天

    Calendar

    • Calendar类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年月日时分秒的展示和计算;
    • GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统;
    • 注意:0-11表示对应的月份,0是1月,11代表12月;
    • 1-7表示星期,1是星期日,7代表星期六

    方法:

    • get(param):根据传的参数,获得对应的日期属性;
    • set(params):根据参数,给日期对象设置日期属性;
    • add(params):根据参数,进行日期的计算;
    • Date getTime():转化成一个时间类对象;
    • Calender setTime(Date date):将时间类对象转化为日期类;

    可视化日历程序

    		String str = "2020-2-29";  //平年天数超出不做判断
    		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    		Date date = df.parse(str); // 有异常
    		Calendar c = new GregorianCalendar();
    		c.setTime(date);
    		int today = c.get(Calendar.DAY_OF_MONTH);// 保存当前日期为哪一天
    
    		System.out.println(" 日\t一\t二\t三\t四\t五\t六");
    
    		c.set(Calendar.DAY_OF_MONTH, 1); // 从当前月的第一天开始
    
    		// 计算出当前月的第一天是周几
    		for (int i = 0; i < c.get(Calendar.DAY_OF_WEEK) - 1; i++) {
    			System.out.print("\t");
    		}
    
    		int days = c.getActualMaximum(Calendar.DATE); // 当前月一共有多少天
    		for (int i = 1; i <= days; i++) {
    			if (i == today) // 如果是今天,则在日期后面加上*
    				System.out.print(c.get(Calendar.DAY_OF_MONTH) + "*\t");
    			else
    				System.out.print(c.get(Calendar.DAY_OF_MONTH) + "\t");
    
    			// 周六换行
    			if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
    				System.out.println();
    			}
    			c.add(Calendar.DAY_OF_MONTH, 1);
    		}
    

    Math

    • abs :绝对值
    • sqrt :平方根
    • pow(double a, double b) :a的b次幂
    • max,min :最大最小值
    • ceil(double a) :大于a的最小整数
    • floor(double a) :小于a的最大整数
    • random() :返回0.0到1.0的随机数
    • long round(double a) :double类型的数据a转成long型(四舍五入)

    Random

    专门用于生成随机数的类;

    Random rand = new Random();
    // 随机生成[0,1)之间的double类型的数据
    System.out.println(rand.nextDouble());
    
    // 随机生成int类型允许范围之内的整型数据
    System.out.println(rand.nextInt());
    // 随机生成[0,1)之间的float类型的数据
    System.out.println(rand.nextFloat());
    
    // 随机生成false或者true
    System.out.println(rand.nextBoolean());
    
    // 随机生成[0,10)之间的int类型的数据
    System.out.println(rand.nextInt(10));
    // 随机生成[20,30)之间的int类型的数据
    System.out.println(20 + rand.nextInt(10));
    // 随机生成[20,30)之间的int类型的数据(此种方法计算较为复杂)
    System.out.print(20 + (int) (rand.nextDouble() * 10));
    

    File

    • java.io.File类:代表文件和目录;
    • 构造方法:传入一个目录地址;
    File f = new File("d:\\a.txt");
    //File f = new File("d:/a.txt");
    

    常用方法:

    方法 说明
    public boolean exists() 判断File是否存在
    public boolean isDirectory() 判断File是否为目录
    public boolean isFile() 判断File是否为文件
    public long lastMidified() 返回File最后修改时间
    public long length() 返回File大小
    public String getName() 返回文件名
    public String getPath() 返回文件的目录路径

    创建新目录:

    File f = new File("d:/电影/华语/大陆");
    boolean flag = f.mkdir(); // false 目录结构中有一个不存在,则不会创建整个目录树
    boolean flag = f.mkdirs(); //创建整个目录树
    

    递归遍历目录树结构:

    public static void main(String[] args) {
    		File  f = new File("D:\\2345\\Downloads");
    		printFile(f,0);
    	}
    	static void  printFile(File  file, int  level){	
    		//输出层数
    		for(int i=0;i<level;i++){
    			System.out.print("-");
    		}	
    		System.out.println(file.getName());
    		if(file.isDirectory()){
    			File[] files = file.listFiles();
    			
    			for(File  temp: files){
    				printFile(temp,level+1);
    			}	
    		}
    	}
    

    枚举

    • JDK1.5引入了枚举类型,枚举类型的定义包括枚举声明和枚举体。

      enum 枚举名{
      	枚举体(常量列表)
      }
      
    • 枚举体就是放置一些常量;

    • 枚举类型隐性地继承自java.lang.Enum。

    • 枚举实质上还是类,而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的,提议直接通过枚举类型名使用它们;

    enum Season {
    	SPRING, SUMMER, AUTUMN, WINTER
    }
    public class TestEnum {
    	public static void main(String[] args) {
    		Season a = Season.AUTUMN;
    		switch(a){
    		case SPRING:
    			System.out.println("春天");
    			break;
    		case SUMMER:
    			System.out.println("夏天");
    			break;
    		case AUTUMN:
    			System.out.println("秋天");
    			break;
    		case WINTER:
    			System.out.println("冬天");
    			break;
    		}
    	}
    }
    
    不会的东西只有怀着一颗狂妄的心,假装能把它看穿吧。
  • 相关阅读:
    最优装载(二分答案)
    最小生成树
    hibernate映射实体类查询时数据库空字段赋值给实体类报错的问题
    'hibernate.dialect' must be set when no Connection avalable
    简单了解一下oracle中的显示游标和存储过程
    oracle中的预定异常和自定义异常
    PL/sql中如何声明变量,常量,控制语句及for,loop,while和顺序控制的使用
    简单了解,使用oracle中的索引,表分区
    oracle中序列,同义词的创建
    数据库权限管理
  • 原文地址:https://www.cnblogs.com/zhangshuaiyin/p/12038082.html
Copyright © 2020-2023  润新知