Java基础_20常用类相关的东西和枚举

回顾

1.
	字节输入流:    FileInputStream
	字节输出流:    FileOutputStream
	字节缓冲输入流:   BufferedInputStream
	字节缓冲输出流:   BufferedOutputStream
	字符输入流:  FileReader
	字符输出流: FileWriter
	字符缓冲输入流:   BufferedReader
	字 符缓冲输出流:  BufferedWriter
	
2.写入一个字符串的数据到磁盘的c:/aaa/1.txt
BufferedOutputStream bos =  new BufferedOutputStream (newFileOutputStream("c:/aaa/1.txt"));
String str = "狗蛋很性;
byte[] buf = str.getBytes();
bos.write(buf);
bos.close();

3.序列化和反序列化
	ObjectInputStream
	ObjectOutputStream

今天的内容

1.常用类相关的东西

1.StringBuffer

也是和字符串相关的类

可变的字符序列。 字符串缓冲区就像一个String ,但可以修改。 在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容

如,如果z是指当前内容为"start"的字符串缓冲区对象,那么方法调用z.append("le")将使字符串缓冲区包含"startle" ,而z.insert(4, "le")会将字符串缓冲区更改为包含"starlet"

package com.qf.a_stringbuffer;

public class Demo1 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("a");
        System.out.println(sb);//start
        sb.append("le");
        System.out.println(sb);//startle
        sb.append("startlestartiuytreew");
        System.out.println(sb);


        sb.insert(1, "9");
        System.out.println(sb);//a9lestartlestartiuytreew
        //字符串反转
        System.out.println(sb.reverse());//weertyuitratseltratsel9a
        System.out.println(sb.delete(1, 3));
    }
}

String 和String Buffer和StringBuider区别

StringStringBufferStringBuilder
String 值不可变的,导致每次操作String都会有新的对象。不仅效率低而且 占内存。字符串在处理少量的字符串的时候用String可变的,线程安全的。可变的,线程不安全的。
如果是多线程的用StringBuffer如果是单线程用StringBuilder

2.枚举类

Java中枚举类是一个特殊的类,代表是一组常量
在Java中常量:   public static final String WEEK = "星期一";
自从 JDK1.5之后枚举类开始出来
不可改变的量

定义枚举类的语法格式;

public  enum  枚举类 {
	常量1, 常量2,...
}
package com.qf.b_enum;


enum Color {
    //常量
    RED, GREEN, BLUE
}
public class Demo1 {
    public static void main(String[] args) {
       Color red =  Color.RED;
        System.out.println(red);
    }
}

枚举一般用在switch-case中

package com.qf.b_enum;

enum Color1 {
    RED, GREEN, BLUE
}
public class Demo2 {
    public static void main(String[] args) {
        Color1 color1 = Color1.RED;
        switch (color1) {
            case RED:
                System.out.println("是红色");
                break;
            case GREEN:
                System.out.println("是绿色");
                break;
            case BLUE:
                System.out.println("是蓝色");
                break;
        }
    }
}

枚举类的三个方法

values();  获取的枚举类中所有的值
oridinal();常量的索引的值
valueOf();是字符串常量
package com.qf.b_enum;


enum Color3 {
    RED, GREEN, YELLOW
}
public class Demo3 {
    public static void main(String[] args) {
        Color3[] values = Color3.values();
        for (Color3 value : values) {
            System.out.println(value + "所对应索引为:" + value.ordinal());
        }
        //valueOf();字符串对应的枚举常量
        Color3 red = Color3.valueOf("RED");
        System.out.println(red);
    }
}

比如以后会定义很多状态量,比如:订餐支付,未支付,订单完结,派送中。

package com.qf.b_enum;


enum ProductEnum {
    //利用有参构造方法对枚举属性进行赋值
    UP(0, "在架"), DOWN(1, "下架");

    private Integer code;
    private String message;
    //可以提供一个有参构造方法
    ProductEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
public class Demo5 {
    public static void main(String[] args) {
        System.out.println(ProductEnum.UP.getCode());
        System.out.println(ProductEnum.UP.getMessage());
        System.out.println(ProductEnum.DOWN.getCode());
        System.out.println(ProductEnum.DOWN.getMessage());
    }
}

package com.qf.b_enum;


enum Sex {
    MALE(0, "未知"),FEMALE(1, "女");
    private Integer sexId;
    private String sexChar;
    Sex(Integer sexId, String sexChar) {
        this.sexId = sexId;
        this.sexChar = sexChar;
    }

    public Integer getSexId() {
        return sexId;
    }

    public void setSexId(Integer sexId) {
        this.sexId = sexId;
    }

    public String getSexChar() {
        return sexChar;
    }

    public void setSexChar(String sexChar) {
        this.sexChar = sexChar;
    }
}
class Person {
    private String name;
    private int age;
    private Sex sex;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Sex getSex() {
        return sex;
    }

    public void setSex(Sex sex) {
        this.sex = sex;
    }
}
public class Demo6 {
    public static void main(String[] args) {
        Person person = new Person();
        person.setSex(Sex.MALE);
        System.out.println(person.getSex().getSexId());
        System.out.println(person.getSex().getSexChar());
    }
}

3.包装类

Java八大基本类型: java 提供了与之对应的包装类。

为啥?

int a = 20; 基本数据类型是没有提供方法。int包装类是Integer 很多方法操作 int类型的数据

int===>Integer

byte===>Byte

short===>Short

long===>Long

char===>Character

float===>Float

double=-==>Double

boolean ===>Boolean

【重点】:

​ Java 中自动拆箱和自动装箱

​ 自动装箱: 将基本数据类型转为包装类

​ 自动拆箱: 将包装类转为基本数据类型

将字符串转为基本数据类型:

​ parse***();

package com.qf.c_baozhuang;


public class Demo1 {
    public static void main(String[] args) {
        Integer i1 = new Integer(20);
        System.out.println(i1);//20
        int compare = Integer.compare(20, 30);
        System.out.println(compare);


        int i= 30;//基本数据类型
        Integer i2 = i;
        Integer i3 = 40;//自动装箱
        int i4 = i3;//自动拆箱
        int i5 = Integer.parseInt("12");//将字符转为int类型的数据
        System.out.println(i5);//12

        //面试题
        Integer a = 127;
        Integer b = 127;
        Integer c = 128;
        Integer d = 128;
        System.out.println(a == b);//true
        System.out.println(c == d);//false

    }
}

4.Math类

Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。

绝对值:

最大值

最小值

向上取整

向下取整

四舍五入

随机数

package com.qf.d_math;


public class Demo1 {
    public static void main(String[] args) {
        System.out.println(Math.E);
        System.out.println(Math.PI);

        double pow = Math.pow(2, 3);
        System.out.println(pow);

        //绝对值
        System.out.println(Math.abs(-986));//986
        //求两个数的最大值
        System.out.println(Math.max(89, Math.max(67, Math.max(2, 8))));
        //求两个数的最小值
        System.out.println(Math.min(67, 23));
        //向上取整   ceil  天花板
        System.out.println(Math.ceil(81.1));
        //向下取整   floor  地板
        System.out.println(Math.floor(89.9));//89
        //四舍五入
        System.out.println(Math.round(84.3));//返回值的是int类型的数据
        System.out.println(Math.round(84.8));//返回值的是int类型的数据

        //随机数  返回一个double值为正号,大于等于0.0 ,小于1.0
        System.out.println(Math.random());
        //随机生成一个[0, 100)整数
        System.out.println((int)(Math.random()*100));
    }
}

5.Random类

该类的实例用于生成伪随机数的流

package com.qf.e_randon;

import java.util.Random;


public class Demo1 {
    public static void main(String[] args) {
        Random random = new Random();
        System.out.println(random.nextInt());//-2^31 ~  2^31-1
        System.out.println(random.nextDouble());//0.4644986990282639
        System.out.println(random.nextGaussian());//2.4073605658546566
    }
}

6.System类

System类包含几个有用的类字段和方法。 它不能被实例化。

System类提供的System包括标准输入,标准输出和错误输出流;

package com.qf.f_system;

import java.io.PrintStream;
import java.util.Properties;
import java.util.Scanner;


public class Demo1 {
    public static void main(String[] args) {
        PrintStream out = System.out;//打印流对象
        out.println("狗蛋");
        System.out.println("狗蛋");
        System.err.println("嘻嘻");
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入一个整数:");
//        int i = scanner.nextInt();

        //static long	currentTimeMillis()
        //返回当前时间(以毫秒为单位)。
//        long start = System.currentTimeMillis();//1687162040724
//        for (int i = 0; i < 10000; i++) {
//            System.out.println("xixi");
//        }
        long end = System.currentTimeMillis();
        //System.out.println(end - start);//36ms
        //获取电脑 安装的一下属性
        Properties properties = System.getProperties();
        System.out.println(properties.get("os.name"));//window10
        System.out.println(properties.get("user.home"));//C:\Users\bowang
        System.out.println(properties.get("java.version"));//1.8.0_241
    }
}

7.Date

Date date = new Date();
        System.out.println(date);
        //Mon Jun 19 16:31:07 IRKT 2023
		//伊尔库茨克时间
        //以上的时间进行格式化
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(date);
        System.out.println(format);
    }
练习:
1.八大基本数据类型的包装类(自己百度)
2.Calendar
3.BigDecimal
4.LocalDate
  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值