Java基础类库

1 基本类型的包装类

在java中每个基础类型,都可以包装为引用数据类型的对象。

基础数据类型包装类
intInteger
charCharacter
flotFloat
doubleDouble
byteByte
longLong
shortShort
booleanBoolean

基本数据类型和包装类之间转换要涉及两个概念——装箱和拆箱。装箱指基本数据类型转换为引用数据类型,拆箱与之相反。
装箱:

public class Demo01 {
    public static void main(String[] args) {
        int x = 1;
        Integer X = new Integer(1);
        System.out.println(X.equals(x));
    }
}
/*运行结果:

true

进程已结束,退出代码为 0

*/

拆箱

public class Demo02 {

    public static void main(String[] args) {
        int x = 1;
        Integer y = new Integer(2);
        int z = y.intValue();
        System.out.println(z + x);
    }
}
/*运行结果:

3

进程已结束,退出代码为 0

*/

但是,jdk5.0开始,类可以自动装箱拆箱

public class Demo03 {
    public static void main(String[] args) {
        Integer x = 10;
        int y = x;
        System.out.println("x:" + x + "\n" + "y:" + y);
    }
}
/*运行结果:

x:10
y:10

进程已结束,退出代码为 0

*/

2 Scanner类

Scanner主要用于获取用户键盘输入内容。
太常用了,直接上代码了。

public class Demo04 {
    public static void main(String[] args) {
        //System.in代表标准输入,即键盘输入
        Scanner sc = new Scanner(System.in);
        System.out.println("请从键盘输入内容:");
        while (sc.hasNext()) {
            String s =sc.next();
            if(s.equals("exit"))
                break;
            else 
            System.out.println("您输入的内容是:" + s);
            sc.close();		//释放资源
        }
    }
}
/*运行结果:

请从键盘输入内容:
asd
您输入的内容是:asd
123
您输入的内容是:123
000
您输入的内容是:000
exit

进程已结束,退出代码为 0

*/

3 String、StringBuffer、StringBuilder

3.1 String类

String类表示不可改变的字符串,一旦被创建,字符序列不可改变。
对于String类的比较不能用“==”判断是否相同应用函数equal(String)进行判断。
1.toCharArry()方法,转换成一个字符数组。

public class Demo05 {
    public static void main(String[] args) {
        String s = "hello,world";
        char[] c = s.toCharArray();
        for (int i = 0 ; i<c.length ; i++)
        System.out.println(c[i]);
    }
}
/*运行结果:

h
e
l
l
o
,
w
o
r
l
d

进程已结束,退出代码为 0

*/

2.charAt()读取位置

public class Demo05 {
    public static void main(String[] args) {
        String s = "hello,world";
        for (int i = 0 ; i< s.length() ; i++)
        System.out.println(s.charAt(i));
    }
}
/*运行结果:

h
e
l
l
o
,
w
o
r
l
d

进程已结束,退出代码为 0

*/

String中有较多的方法可以调用,不一一讲解。

3.2 StringBuffer类

StringBuffer也代表字符串,用于描述可变序列,对其进行操作时不会生成新的对象。

public class Demo06 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("hello,world");       //在sb后加入字符串
        System.out.println(sb);
        sb.reverse();                   //对sb内容进行反转
        System.out.println(sb);
        sb.reverse();                   //重新反转其中内容
        sb.delete(5,11);                //删除其中排在第6-12的字符
        System.out.println(sb);
        sb.insert(2,"aaaaa");//在其第3个字符后插入字符
        System.out.println(sb);
    }
}
/*运行结果:

hello,world
dlrow,olleh
hello
heaaaaallo

进程已结束,退出代码为 0

*/

3.3 StringBuilder

SringBuilder和StringBuffer一样都代表字符可变的字符序列。不同的是,StringBuider是线程不安全的StringBuffer是线程安全的。

4 System类与Runtime类

System类与Runtime类主要用于获得平台属性。

4.1 System类

currentTimeMillis()可以测得程序的运行时间

public class Demo01 {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        long end =System.currentTimeMillis();
        System.out.println("程序睡眠了:" + (end-start) + "毫秒");
    }
}
/*运行结果:

程序睡眠了:101毫秒			//基于系统性能,多出几毫秒很正常

进程已结束,退出代码为 0

*/

getProperties(String)可以获取系统信息。

public class Demo02 {
    public static void main(String[] args) {
        System.out.println("当前系统版本为:" + System.getProperty("os.name") + System.getProperty("os.version") + System.getProperty("os.arch"));
        System.out.println("当先系统用户名为:" + System.getProperty("user.name"));
    }
}
/*运行结果:

当前系统版本为:Windows 1010.0amd64
当先系统用户名为:*****		//手动打码

进程已结束,退出代码为 0

*/

4.2 Runtim类

Runtime类代表Java程序的运行环境。

public class Demo03 {
    public static void main(String[] args) {
        Runtime r = Runtime.getRuntime();
        System.out.println("处理器数量:" + r.availableProcessors());
        System.out.println("空闲内存数:" + r.freeMemory());
        System.out.println("总内存数:" + r.totalMemory());
        System.out.println("可用最大内存数:" + r.maxMemory());
        try {
            r.exec("notepad.exe");		//打开记事本操作;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
/*运行结果:

处理器数量:8
空闲内存数:250000608
总内存数:255328256
可用最大内存数:3779067904

进程已结束,退出代码为 0

*/

5 Math类与Random类

5.1 Math类

Java.lang.Math类中有很多数学运算的静态方法,其中还包括静态常量E(自然对数)和圆周率PI。另外Math类是私有的,不能被实例化,Math类是final修饰的,不能创建其子类。

public class Demo01 {
    public static void main(String[] args) {
        System.out.println(Math.sqrt(16));          //开平方根
        System.out.println(Math.cbrt(27));          //开立方根
        System.out.println(Math.pow(3 , 2));        //a的b次方
        System.out.println(Math.max(10 , 5.5));     //比较大小
        System.out.println(Math.min(1 ,2));
        System.out.println(Math.abs(-10));          //绝对值
        System.out.println(Math.random());          //随机数(0-1之间的随机数)
    }
}
/*运算结果:

4.0
3.0
9.0
10.0
1
10
0.3898165312889822

进程已结束,退出代码为 0

5.2 Random类

java.util.Random类专门用来生成一个伪随机数,它有两种构造方法:一个是无参数的,使用当前时间作为种子,一个是有参数的,需要一个long型整数额参数作为种子。

public class Demo02 {
    public static void main(String[] args) {
        Random r = new Random();
        System.out.println("int型随机数:");
        for (int i = 0 ; i < 3 ; i++){
            System.out.println(r.nextInt());
        }
        System.out.println("double型随机数:");
        for (int i = 0 ; i < 3 ; i++){
            System.out.println(r.nextDouble());
        }
        Random r1 = new Random(999);
        System.out.println("带999参数的int型随机数:");
        for (int i = 0 ; i < 3 ; i++){
            System.out.println(r1.nextInt());
        }
        System.out.println("带999参数的double型随机数:");
        for (int i = 0 ; i < 3 ; i++){
            System.out.println(r1.nextDouble());
        }
    }
}
/*运行结果:

int型随机数:
-1830485051
-1387810
1078935549
double型随机数:
0.9815031072193202
0.7865351099711418
0.8350239280794249
带999参数的int型随机数:
-1242822577
-421961713
-1172034834
带999参数的double型随机数:
0.45481516562301083
0.3800035585165882
0.11936990373368206

进程已结束,退出代码为 0

*/

6 日期相关类

6.1 Date类

public class Demo03 {
    public static void main(String[] args) {
        Date d1 = new Date();               //新建一个现在时间
        System.out.println(d1);
        Date d2 = new Date(999999999999L);  //新建一1970年1月1日 0点0分0秒 开始过了多少毫秒后的时间
        System.out.println(d2);
    }
}
/*运行结果:

Tue Jun 22 10:13:50 CST 2021
Sun Sep 09 09:46:39 CST 2001

进程已结束,退出代码为 0

*/

6.2 Calendar类

此类可以精确到毫秒。

import java.util.Calendar;

public class Demo01 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        System.out.println("年:" + c.get(Calendar.YEAR));
        System.out.println("月:" + c.get(Calendar.MONTH));
        System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:" + c.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:" + c.get(Calendar.MINUTE));
        System.out.println("秒:" + c.get(Calendar.SECOND));
        System.out.println("毫秒:" + c.get(Calendar.MILLISECOND));
    }
}
/*运行结果:

年:2021
月:5
日:22
时:10
分:26
秒:47
毫秒:557

进程已结束,退出代码为 0

*/

6.3 DateFormat类

用来优化显示的类。

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class Demo02 {
    public static void main(String[] args) {
        // 获取不同格式化风格和中国环境的日期
        DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
        DateFormat df2 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
        DateFormat df3 = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);
        DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);
        // 获取不同格式化风格和中国环境的时间
        DateFormat df5 = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA);
        DateFormat df6 = DateFormat.getTimeInstance(DateFormat.FULL, Locale.CHINA);
        DateFormat df7 = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.CHINA);
        DateFormat df8 = DateFormat.getTimeInstance(DateFormat.LONG, Locale.CHINA);
        // 将不同格式化风格的日期格式化为日期字符串
        String date1 = df1.format(new Date());
        String date2 = df2.format(new Date());
        String date3 = df3.format(new Date());
        String date4 = df4.format(new Date());
        // 将不同格式化风格的时间格式化为时间字符串
        String time1 = df5.format(new Date());
        String time2 = df6.format(new Date());
        String time3 = df7.format(new Date());
        String time4 = df8.format(new Date());
        // 输出日期
        System.out.println("SHORT:" + date1 + " " + time1);
        System.out.println("FULL:" + date2 + " " + time2);
        System.out.println("MEDIUM:" + date3 + " " + time3);
        System.out.println("LONG:" + date4 + " " + time4);
    }
}
/*运行结果:

SHORT:21-6-22 上午10:39
FULL:2021年6月22日 星期二 上午10时39分14秒 CST
MEDIUM:2021-6-22 10:39:14
LONG:2021年6月22日 上午10时39分14秒

进程已结束,退出代码为 0

*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值