java常用API 1(系统类、随机数、数组、超类、时间类、基本类型与包装类)

java常用API

官方中文API文档 下载地址:

jdk1.6的 :链接:https://pan.baidu.com/s/1TxmXzyFdf8JP-Z-2jI6JGQ 提取码:0523

到目前官方只出了1.6的中文官方文档,如果想看1.8的可以参考其他人翻译的

我们在日常使用过程中,只有java.lang下的类不需要导包,其他的api都需要import导包。

1、官方文档的使用

文档下载下来需要解除锁定才能用:
在这里插入图片描述
以String为例我们看看里面的内容
在这里插入图片描述
我们需要重点关注一个类的构造方法摘要 、方法摘要
在这里插入图片描述

2、java中常用工具类

2.1、Scanner 类 (键盘输入)

我们可以通过 Scanner 类来获取用户的输入:

new Scanner(System.in);
s.next();
s.nextInt();

// 创建 Scanner 对象
Scanner sc = new Scanner(System.in);
// 获取输入的字符串对象
String s = sc.next();
// 获取输入的int对象
int i = sc.nextInt();

Scanner(System.in)输入的默认是字符串,nextInt()是强制转为int

2.2、Random 类 (随机数)

我们可以通过 Scanner 类来获取一个随机值:

new Random();
r.nextInt();
r.nextInt(3);
r.nextInt(7)+1;
r.nextDouble();

Random r = new Random();
// 获取int类型的随机数,随机范围整个int
int n1 = r.nextInt();
// 获取int类型的随机数,随机范围【0,3)
int n2 = r.nextInt(3);
// 获取int类型的随机数,随机范围【0,7】 ,适用于0~XX
int n3 = r.nextInt(7)+1;
// 除了int类型,还可以是Boolean、Bytes、Double、Float、Long
double d1 = r.nextDouble();

2.3、Array 类 (数组)

1、在1.6的API里面我们能找到两个Array,这里用的是java.lang.reflect包下的
2、Array这个类是不能够被实例化的,但是我们可以直接用基本类型加上[ ],创建对应类型的数组
3、注意数组一旦创建,长度固定,不能发生改变

public class Test_3_Array {
    public static void main(String[] args) {
        // 下面是一个int类型的数组几种写法
        // 静态赋值
        int a[] = new int[]{10,20,30};
        int[] b = new int[]{10,20,30};
        int c[] = {10,20,30};
        // 动态赋值
        int[] d = new int[3];
        d[0] = 10;
        d[1] = 20;
        d[2] = 30;

        // 下面是数组被动态初始化是,各种类型的默认值:
            //  1).byte,short,int,long类型,数组被赋值成0.
            // 2).float,double类型,数组被赋值成0.0.
            //  3).char类型,数组被赋值成“\u0000”.
            // 4).boolean类型,数组被赋值成false.
            // 5).引用类型(类,接口,数组),数组被赋值成null.

        // 数组还可以定义成二维的
        int[][] dd = {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
        // 也可以自定义对象数组
        NewArray[] ns = new NewArray[2];
        ns[0] = new NewArray("张三");
        ns[1] = new NewArray("李四");
        
        System.out.println(ns[0]);
        System.out.println(dd[2][1]);

        // 数组长度是不可变的,如果想要“可变”,那就用ArrayList集合
    }
}

class NewArray{
    private String name;

    NewArray(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2.4、Arrays 类 (数组工具类)

Arrays.toString(l);
Arrays.sort(l);
s.toCharArray();
String.valueOf(char1)

        // 数组工具类Arrays

        long[] l = {1,3,2};
        // 将数组变成字符串 Arrays.toString
        String s = Arrays.toString(l);
        // 排序 ,Arrays.sort升序、从小到大
        Arrays.sort(l);

        // 字符串排序       String.charAt(index)(返回值为char)    String.toCharArray()(返回值为char[])
        // 思路:先转为char数组排序,再转为String
        String s1 = "acbed";
        // 转为char[]
        char[] c = s1.toCharArray();
        Arrays.sort(c);
        // 转为String
        System.out.println(String.valueOf(c));

2.5、ArrayList 类 (集合)

new ArrayList<>();
al.add(“张三”);
al.get(0);
al.remove(0);
int s = al.size();
for (String l : al)…

        // 数组的长度不可变,ArrayList的长度是可变的

        // ArrayList<> 可以根据<>里面的泛型定义要传入的数据类型,泛型只能是引用类型,不能是基本类型
        // jdk 1.7开始,右边的泛型可以不写
        ArrayList<String> al = new ArrayList<>();
        al.add("张三");
        al.add("李四");

        // ArrayList默认实现了序列化,直接打印ArrayList打印出来的是字符串内容
        System.out.println(al);
        // 获取其中一个元素
        System.out.println(al.get(1));
        // 删除一个,有返回值,删除的内容是什么就返回什么。
        al.remove(0);
        // 获取长度
        int s = al.size();
        // 遍历集合
        for (String l : al) { System.out.print(l);}

2.6、Math类 (数学工具类)

        // 数学工具类

        // 获取绝对值
        double m1 = Math.abs(-2.1);

        // 向上取整
        double m2 = Math.ceil(3.2);
        // 向下取整
        double m3 = Math.floor(4.7);

        // 四舍五入
        long m4 = Math.round(5.5);

        // 返回最大值、最小值
        int m5 = Math.max(5, 7);
        double m6 = Math.min(3.0, 1.22);

        // 数学中的常量
        // 圆周率 Math.PI    自然常数 Math.E

        // 另外数学方法中还有正弦、无穷大、指数、幂等相关运算

2.7、Object类 (超类)

        // 每个类都使用 Object 作为超类
        // 也就意味着 Object 类有的方法,所有类都有

        // equals 比较两个类的地址
        Object o1 = new Object();
        Object o2 = new Object();
        Object o3 = o1;
        System.out.println(o1.equals(o2));
        System.out.println(o1.equals(o3));

        // hashCode() 返回对象内部地址转换成的整数
        System.out.println(o1.hashCode()); // 和o3一样
        System.out.println(o2.hashCode()); // 地址不一样,所以和o1、o3不一样
        System.out.println(o3.hashCode());

        // toString() 返回一个对象的字符串表示,一般没实现序列化的类返回的是类地址

        // Object 中还有一些为垃圾回收器、线程准备的方法
        // finalize() 、getClass() 、notify() 、notifyAll() 、wait()

        // Objects类 (超类工具类) :jdk1.7后出现.提供静态方法操作对象。重写了equals、解决空指针异常问题
        boolean bs = Objects.equals(o1, o2);  // 允许o1或o2为空

2.8、Date类 (日期类)

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

public class Test_8_Date {
    public static void main(String[] args) throws ParseException {
        // java.util.Date 表示特定的瞬间,精确到毫秒

        // 概念:
        // 1、基准时间:1970年1月1日 00:00:00 GMT   为 0 毫秒
        // 2、1000毫秒 = 1 秒

        // 获取当前系统时间毫秒数(从1970到现在的毫秒数)
        // 下面两种方式都可以
        long l1 = System.currentTimeMillis();
        long l2 = new Date().getTime();

        // 获取日期 (输出格式:星期X 月份 日期 XX:XX:xx CST 年份)
        Date date1 = new Date();                // 当前日期
        Date date2 = new Date(0L);              // 1970年1月1日 00:00:00
        Date date3 = new Date(1611884139230L);  // 2020年1月19日

        // 日期格式化   java.text.SimpleDateFormat
        // y 年
        // M 月
        // d 天
        // H 小时(0-23)  k 小时(1-24)
        // m 分钟
        // s 秒   S 毫秒

        // Date转成日期字符串
        SimpleDateFormat f1 = new SimpleDateFormat("yyyy年 MM月 dd日 HH时mm分ss秒");
        String d1 = f1.format(new Date());

        // 日期字符串转成Date    parse需要抛出异常
        SimpleDateFormat f2 = new SimpleDateFormat("yyyy年 MM月 dd日 HH时mm分ss秒");
        Date d2 = f2.parse("2021年 01月 29日 10时12分23秒");
    }
}

2.9、Calendar类 (日历类)

        // Calendar 日历类

        Calendar c = Calendar.getInstance();
        // get()
        // 获取年份
        int i = c.get(Calendar.YEAR);
        // 获取月份    西方的月份0-11   东方的月份1-12
        int i1 = c.get(Calendar.MONTH);
        // 日期
        int i2 = c.get(Calendar.DAY_OF_MONTH);
        int i3 = c.get(Calendar.DATE);
        // 时分秒 同理

        // set()   set设置的,可以用get获取
        c.set(Calendar.YEAR,2099);  // 设置年
        c.set(Calendar.MONTH,6);    // 设置月
        c.set(Calendar.DATE,18);    // 设置日
        // 同时设置年月日
        c.set(2099,6,18);

        // 增加年、月、日、时...
        c.add(Calendar.YEAR,2);    // 增加2年
        c.add(Calendar.DATE,-3);   // 减少3月

        // 日历转为日期
        Date date = c.getTime();

2.10、System类 (系统类)

        // System类里面的都是静态方法

        // 返回系统时间毫秒 (多用来统计程序执行效率)
        long l = System.currentTimeMillis();

        // 数组复制   把i1的0-3 复制到i2中
        int[] i1 = {1,2,3,4,5} , i2 = {6,7,8,9,0} ;
        System.arraycopy(i1,0,i2,0,3);
        System.out.println(Arrays.toString(i2));

2.11、StringBuilder 类 (字符串缓存区)

        // 所有字符串都是 String 类的,它是被final修饰的不可变类型
        // 如下abc三个字符串,都是一个独立的空间。下面的相加过程总共会占用5个空间:a b c ab abc
        String s = "a"+"b"+"c";
        // 字符串转换大小写
        String s1 = "aBc123".toUpperCase();  // 转大写
        String s2 = "aBc123".toLowerCase();  // 转小写

        // 为了解决 String 浪费空间现象,我们利用StringBuilder(字符串缓冲区)提高效率
        // StringBuilder内存中是一个数组,会根据字符串长度自动扩容(初始容量为16个字符)
        StringBuilder sb1 = new StringBuilder();
        StringBuilder sb2 = new StringBuilder("aaa");
        StringBuilder sb3 = sb1.append("aaa");          // 向sb1添加内容,并赋值给sb3
        // 比较地址
        System.out.println(sb1 == sb2);
        System.out.println(sb1 == sb3);
        System.out.println(sb1.equals(sb2));
        // 添加多个值
        sb2.append("123").append("abc").append("---");
        // StringBuilder 和 String  的相互转换
        String s3 = sb2.toString();                    // StringBuilder 转 String
        StringBuilder sb4 = new StringBuilder(s2);     // String 转 StringBuilder

3、基本类型、包装类

        // 下面是java中八大基本类型 及 对应包装类
        //        基本类型 	包装器类型
        //        boolean	Boolean       布尔值
        //        char	    Character     两个字节    从0到65535,存Unicode
        //        int	    Integer       整数       32位,约-21亿到21亿
        //        byte    	Byte          一个字节    从-128到127,从0到127存ascii码
        //        short  	Short         短整数      约-3万到3万
        //        long	    Long          长整数      64位,约-90亿亿到90亿亿
        //        float  	Float         单精度浮点   32位(4个字节)
        //        double	Double        双精度浮点   64位(8个字节)

        // 基本类型 仅能存数字,他们的包装类型封装了很多方法:
        // 输出最大、最小值: MIN_VALUE、MAX_VALUE
        int i1 = Byte.MAX_VALUE;
        double i2 = Double.MIN_VALUE;

        // 装箱、拆箱(基本类型和包装类型的转换),我们常用的是自动拆箱、装箱的方式
        Integer i3 = 2;                       // 自动装箱
        Integer i4 = new Integer(2);    // 装箱 方式1
        Integer i5 = Integer.valueOf(2);      // 装箱 方式2
        Integer i6 = Integer.valueOf("2");    // 装箱

        int i7 = i4;                          // 自动拆箱
        int i8 = i4.intValue();               // 拆箱

        // ArrayList 只能存储包装类,它的add、get可以自动装箱、拆箱
        ArrayList<Integer> l = new ArrayList<>();
        l.add(5);                              // 自动装箱
        int i9 = l.get(0);                     // 自动拆箱

        // 基本类型与String之间的转换
        // 1、基本类型转String  (三种方式)
        String s1 = 100 + "";
        String s2 = Double.toString(0.333);
        String s3 = String.valueOf(1.1);
        // 2、String转基本类型    注意:被转换的字符串内容,要符合转出去对应的基本类型,比如“a”不能转为int
        int i01 = Integer.parseInt("11");
        long l01 = Long.parseLong("202016666");
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值