常用类库基础知识整理

1.泛型

泛型类

泛型方法

public class Demo {
    public static void main(String[] args) {

        print("String:啊哈哈哈");
        print(1223135);
    }

    public static <A> void print(A a){
        System.out.println(a);
    }

}

泛型限制类型

public class Demo {
    public static void main(String[] args) {
        Plate<String> p = new Plate<>();
        p.data = "String";
        System.out.println(p.data);
    }
}

interface Fruit{

}
class Apple implements Fruit{}
class  Plate<T>{
    T data ;
}


泛型中的通配符

public class Demo {
    public static void main(String[] args) {
        Plate<? extends  Fruit> p = new Plate<Apple>();
        Plate<? super Apple> p1 = new Plate<Fruit>();
    }
}

interface Fruit{

}
class Apple implements Fruit{}
class  Plate<T>{
    T data ;
}


类型通配符是使用 ? 代替方法的具体的类型实参。

1. <? extends Parent>指定了泛型类型的上届
2. <? super Child> 指定了泛型类型的下届
3. <?>指定了没有限制的泛型类型

作用

1.提高代码复用率
2.泛型中的类型在使用是指定,不需要强制类型转换

object

Array

import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
        int [] nums = {1,2,3,5,4,6,7,8,9};
        System.out.println(nums);
        System.out.println(Arrays.toString(nums));
        Arrays.sort(nums);
        System.out.println(Arrays.toString(nums));
        System.out.println(Arrays.binarySearch(nums,6));
        System.out.println(nums.length);
        nums = Arrays.copyOf(nums,15);
        System.out.println(nums.length);
    }
}

输出:
[I@7c30a502
[1, 2, 3, 5, 4, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
5
9
15
import java.math.BigDecimal;

public class Demo {
    public static void main(String[] args) {
        BigDecimal b1 = new BigDecimal("0.1");
        BigDecimal b2 = new BigDecimal("0.2");
        BigDecimal b3 =  b1.add(b2);
        System.out.println(b3);
        System.out.println( b1.add(b2));}
}
Date

import java.util.Date;

public class Demo {
    public static void main(String[] args) {
        Date date = new Date();
        long time =date.getTime()-(1*60*60*1000);
        Date date2 = new Date(time);
        System.out.println(date.toString());
        System.out.println(date2.toString());
    }
}


SimpleDateFormat Calendar

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {
    public static void main(String[] args) throws ParseException {
        /**
         * y :  年
         * M :  月
         * d :  日
         * H :  时
         * m :  分
         * s :  秒
         *
         * eg:  2020年12月12日   12:12: 50
         */
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm ss");
        //将date对象转换为字符串(yyyy-MM-dd HH:mm:ss)
        String text = format.format(new Date());
        System.out.println(text);
        Date date = format.parse("2021-12-12 12:12 12");
        System.out.println(date.getTime());
        System.out.println((new Date().getTime()-date.getTime())/1000/60/60/24);
    }
}


import java.text.ParseException;
import java.util.Calendar;

public class Demo {
    public static void main(String[] args) throws ParseException {
        Calendar c1 = Calendar.getInstance();
        int year = c1.get(Calendar.YEAR);
        int day = c1.get(Calendar.DAY_OF_YEAR);
        System.out.println(year);
        System.out.println(day);
        Calendar c2 = Calendar.getInstance();
        //加月份 (减,输入负数)
        c2.add(Calendar.MONTH,3);
        System.out.println(c2.get(Calendar.MONTH));
        //获取莫字段的最大值
        c1.set(Calendar.MONTH,2);
        int m = c1.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println(m);
    }
}

system

1.获取当前时间戳
currentTimeMillis()

arraycopy()

字符串常量值

新生代:  位于堆空间
         刚创建的对象  ,如果一个对象经过15次gc都没被回收,放入老年代
老年代 : 位于堆空间 垃圾回收超过15次依然存活的对象
永久代 : 常驻内存区域

通过加法拼接字符串尽量避免

StringBuilder

String中的常用方法

/**
 * 演示java中常用的类
 * @author LiXinRong
 *
 */
public class UsualyClass {
	public static void main(String[] args) {
		String s1 = "Hello";
		String s2 = new String("Hello");
		char[] cs = {'H','e','l','l','o'};
		String s3 = new String(cs);
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		
		//根据索引获取字符串中对应的char值
		System.out.println(s1.charAt(1));
		
		//endsWith判断字符串是否以给定的字符串结尾,是返回true,否返回false
		String s4 = "www.baidu.com";
		boolean flag = s4.endsWith(".com");
		System.out.println(flag);
		
		//startsWith判断字符串是否以给定字符串开头,是返回true,否返回false
		boolean flag3 = s4.startsWith("www");
		System.out.println(flag3);
		
		//比较两个字符串是否相等,针对两个字符串是否相等,才有equals方法
		boolean flag1 = s1 == s2;
		//s1与s2的引用地址是不相同的
		System.out.println(flag1);
		//equals方法比较的是两个对象的内容是否相等
		boolean flag2 = s1.equals(s2);
		//针对于字符串的比较操作,一般的场景都是比较字符串的内容是否一致
		System.out.println(flag2);
		
		//返回指定的子字符串第一次出现位置的索引,如果没有则返回-1
		int index1 = s1.indexOf("w");
		System.out.println(index1);
		//返回指定的子字符串第一次出现位置的索引,从指定的索引开始
		System.out.println(s1.indexOf("l", 3));
		
		//将一个字符串转变为char数组
		char[] csz = s1.toCharArray();
		System.out.println(csz);
		
		//问:如何写一个方法,使传入一个字符串,输出某个字符在传入字符串中的所有位置
		List<Integer> list = getIndexOfStr("aaaabtesdnedssdaas", 'a');
		System.out.println(list);
		
		//如何打印文件的后缀
		String s5 = "D:/ja.va/demo.java";
		//返回一个指定的子字符串在此字符串中最右边出现的索引
		int index2 = s5.lastIndexOf(".");
		System.out.println(index2);
		//返回一个新的字符串,它是此字符串的一个子字符串
		String s6 = s5.substring(index2 + 1);
		System.out.println(s6);
		
		String s7 = "sandfnaijasdfnio";
		//替换字符串中相对应的内容
		String s8 = s7.replace("a", "A");
		System.out.println(s8);
		//替换字符串中首个对应内容
		String s9 = s7.replaceFirst("a", "A");
		System.out.println(s9);
		
		//通过特定字符来分割字符串,返回一个字符串数组
		String s10 = "a-b-c-d-e-f";
		String[] szs = s10.split("-");
		for(String s : szs) {
			System.out.println(s);
		}
		
		//用于拼接字符串
		String s11 = s1.concat(",world");
		System.out.println(s11);
		
		//返回一个大写的字符串
		String s14 = s11.toUpperCase();
		System.out.println(s14);
		
		//去除字符串两端的空格
		String s15 = " hello,world    ";
		String s16 = s15.trim();
		System.out.println("#"+s15+"#");
		System.out.println("#"+s16+"#");
	}
	
	public static List<Integer> getIndexOfStr(String str, char c) {
		List<Integer> list = new ArrayList<Integer>();
		if(str != null) {
			char[] csi = str.toCharArray();
			for(int i = 0; i < csi.length; i++) {
				if(csi[i] == c) {
					list.add(i);
				}
			}
		}
		return list;
	}
}

StringBuffer

在进行大数据量的字符串拼接时,使用stringBuffer

public class UsualyClass {
	public static void main(String[] args) {
		Date now = new Date();
		String s = "";
		for(int i = 0; i < 10000; i++) {
			s += i;
		}
		Date nextnow = new Date();
		System.out.println(nextnow.getTime() - now.getTime());
//230
		
		Date stringBufferTime = new Date();
		StringBuffer sb = new StringBuffer("");
		for(int i = 0; i < 10000; i++) {
			sb.append(i);
		}
		Date stringBufferTime2 = new Date();
		System.out.println(stringBufferTime2.getTime() - stringBufferTime.getTime());
//2
		
	}
	
}

Calendar

  • Calendar和Date转换
  • 使用Calendar进行复杂的日期运算
  • Calendar只是一个工具,具体的日期还是要使用Date对象
public class UsualyClass {
	public static void main(String[] args) throws ParseException {
		String dateStr = "2017/02/21";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		Date date = sdf.parse(dateStr);
		
		//使用默认时区和语言环境获得一个日历(常用于日期相关的计算)
		Calendar rightNow = Calendar.getInstance();
		//使用给定的Date设置此calendar的时间
		rightNow.setTime(date);
		
		//添加30天
		rightNow.add(Calendar.DAY_OF_MONTH, 30);
		System.out.println(sdf.format(rightNow.getTime()));
		//增加一个月的时间
		rightNow.add(Calendar.MONTH, 1);
		System.out.println(sdf.format(rightNow.getTime()));
		
		//获取当前日期的几号
		System.out.println(rightNow.get(Calendar.DAY_OF_MONTH));
		//获取当前日期的月份,实际结果是当前月份-1
		System.out.println(rightNow.get(Calendar.MONTH));
		
		//更改年份
		rightNow.set(Calendar.YEAR, 2019);
		System.out.println(sdf.format(rightNow.getTime()));
		
		//日期往前推一天
		rightNow.add(Calendar.DAY_OF_MONTH, -1);
		System.out.println(sdf.format(rightNow.getTime()));
	}
}

java.lang.Math

Math 类中包含用于执行基本数学运算的方法,如初等指数,对数,平方根和三角函数

public class UsualyClass {
	public static void main(String[] args) throws ParseException {
		//圆周率常量
		System.out.println(Math.PI);
		
		//获取当前参数的绝对值,参数什么类型,返回值就是什么类型(double,float,int,long)
		int num1 = 256;
		num1 = Math.abs(num1);
		System.out.println(num1);
		
		//返回两个数中较大/较小的值
		int num2 = Math.max(23, 31);
		System.out.println(num2);
		int num3 = Math.min(23, 31);
		System.out.println(num3);
		
		//返回一个[0,1)的伪随机数
		double num4 = Math.random();
		System.out.println(num4);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值