Java-常用类介绍

文章介绍了Java中的StringBuffer线程安全的特性,及其与String和StringBuilder的区别。枚举类作为常量的替代品,展示了创建和使用枚举的方法。包装类的作用在于提供基本数据类型和对象间的转换,支持自动装箱和拆箱。此外,文章还涉及了Math类的数学运算,Random类的随机数生成,System类的系统属性获取,以及Date和Calendar类对于时间的处理。
摘要由CSDN通过智能技术生成

1.StrinrBuffer

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

String str = "abc";   常量池中   abc  0x009

str+= "ef";          常量池中  会有新的地址   abcdef  0x008

StringBuffer sb = new StringBuffer("abc");  "abc“ 0x007

sb.append("ef");      字符串变成  "abcef"  0x007   

String ,Stringbuffer和StringBuilder 这三个类的区别

package com.qf.a_stringbuffer;


public class Demo1 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("abcdef");
        System.out.println(sb);
        //System.out.println(sb.toString());//将StringBuffer类型的数据转为String
        sb.append("a");//追加   abcdtrue
        sb.insert(2, "狗");
        //ab狗cdefa
        sb.delete(2, 4);//abdefa
        //字符串反转
        System.out.println(sb.reverse());//afedba
        System.out.println(sb);
        System.out.println(sb.capacity());//容量 容量是新插入字符可用的存储量
        StringBuffer sb1 = new StringBuffer();
        System.out.println(sb1.capacity());//16
        sb1.append("12345678912345671");
        System.out.println(sb1.capacity());







    }
}

 2.枚举类

Java中有一个特殊的类叫枚举类,一般表示的是常量。
public  static final int A = 23;
枚举就是替换上面常量的写法的!!!!

 语法格式:

public enum 枚举类名 {
    各组常量,常量之间使用逗号隔开
}

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);//RED
    }
}

 构造方法

package com.qf.b_enum;


enum Ball {
    TYPE_BALL_FOOTBALL(1, "足球"),
    TYPE_BALL_PINGPANGBALL(2, "乒乓球"),
    TYPE_BALL_BASEGETBALL(3, "篮球"),
    ;
    int key;
    String name;

    Ball(int key, String name) {
        this.key = key;
        this.name = name;
    }

    public int getKey() {
        return key;
    }

    public void setKey(int key) {
        this.key = key;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class Demo3 {
    public static void main(String[] args) {

        Ball.TYPE_BALL_FOOTBALL.setKey(4);
        int key = Ball.TYPE_BALL_FOOTBALL.getKey();
        System.out.println(key);
        String name = Ball.TYPE_BALL_FOOTBALL.getName();
        System.out.println(name);
    }
}

枚举方法:

values();  枚举类中的所有的值
oridnal();每个常量的索引值
valueOf();返回值的指定的字符串的常量

package com.qf.b_enum;


enum Color1 {
    RED, GREEN, BLUE
}
public class Demo4 {
    public static void main(String[] args) {
        Color1[] values = Color1.values();
        for (Color1 value : values) {
            System.out.println(value +"对应的索引:" + value.ordinal() );
        }
        //valueOf();返回值的指定的字符串的常量
        Color1 red = Color1.valueOf("RED");
        System.out.println(red);
    }
}

Java在生产环境中如何使用的

枚举一般在使用的时候确定业务场景的。

支付功能,需要使用以下几种支付的方式:

微信小程序支付 wxma  
微信H5支付    wxh5
支付宝小程序支付  zfbma
支付宝生活号支付  zfbshm
微信医保支付  wxyb

 可以使用枚举类来维护这几种支付方式,一旦需要新增,需要修改 需要删除的时候,随时修改枚举类即可

package com.qf.b_enum;


//支付方式的枚举类
enum PayTypeEnum {
    WEI_XIN_MINI_APP("1", "wxma", "微信小程序支付"),
    WEI_XIN_H5("2", "wxh5", "微信H5支付"),
    ZFB_MINI_APP("3", "zfbma", "支付宝小程序支付"),
    ZFB_SHH("4", "zfbshm", "支付宝生活号支付"),
    WEI_XIN_YB("5", "wxyb", "微信医保支付"),
    ;

    private final String id;
    private final String code;//支付类型码
    private final String type;//支付方式类型

    PayTypeEnum(String id, String code, String type) {
        this.id = id;
        this.code = code;
        this.type = type;
    }

    public String getId() {
        return id;
    }

    public String getCode() {
        return code;
    }

    public String getType() {
        return type;
    }
}
public class Demo5 {
    public static void main(String[] args) {
        //获取枚举类的id‘值
        String id = PayTypeEnum.ZFB_MINI_APP.getId();
        System.out.println(id);

    }
}
package com.qf.b_enum;


enum SexEnum {
    MALE(0, "男"),
    FEMALE(1, "女"),
    ;
    private int sex;//0代表男 or 1  代表女
    private String sexName;//男 or 女

    SexEnum(int sex, String sexName) {
        this.sex = sex;
        this.sexName = sexName;
    }

    public int getSex() {
        return sex;
    }

    public String getSexName() {
        return sexName;
    }
}
class User {//用户类
    private String name;//用户名字
    private SexEnum sex;//用户的性别

    public String getName() {
        return name;
    }

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

    public SexEnum getSex() {
        return sex;
    }

    public void setSex(SexEnum sex) {
        this.sex = sex;
    }
}
public class Demo6 {
    public static void main(String[] args) {
        User user = new User();
        user.setName("狗蛋");//赋值
        user.setSex(SexEnum.MALE);

        System.out.println(user.getSex().getSexName());



    }
}

3.包装类

Java八大基本数据类型,都有与之对应的包装类

为啥会有这些包装类?其实就代表基本数据类型所有东西

包装类能够实例化处理对象,有很多的方法,来处理当前的数据

这样来操作八大基本数据类型很方便

int==>Integer

byte===>Byte

short====>Short

long====>Long

float====>Float

double====>Double

boolean====>Boolean

char====>Character

【重点】:

​        1.自从jdk5之后  ,有自动拆箱和自动装箱

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

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

             2. static String    toString();  将基本数据类型转为 字符串
                       3. static  parse***(); 将一个字符串转为 所对应基本数据类型

package com.qf.c_baozhuang;


class User {
    String name;
    Integer age;
    String email;
    Integer sex;
}
public class Demo1 {
    public static void main(String[] args) {
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);

        //1.自动装箱:  将基本数据类型转为包装类型
        int i = 30;
        Integer i1 = i;
        System.out.println(i1.hashCode());
        //2.自动拆箱:  将包装类转为基本数据类型
        int i2 = i1;
        System.out.println(i2);


        //3.***Value();
        Integer i3 = 40;//i3是包装类类型的数据
        int i4 = i3.intValue();//intValue
        System.out.println(i4);//i4是基本数据类型
        //shortValue()

        //4.toString方法
        String s = Integer.toString(34);
        System.out.println(s);

        //5将整数字符串转为基本数据类型
        int i5 = Integer.parseInt("999");
        System.out.println(i5);//999
        double v = Double.parseDouble("89.7");

        //

        Integer i6 = 30;
        Integer i7 = 30;
        System.out.println(i6 == i7);//true
        Integer i8 = new Integer(30);
        System.out.println(i6 == i8);
        Integer i9 = 129;
        Integer i10 = 129;
        System.out.println(i9 == i10);//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);

        System.out.println(Math.abs(-89));//求一个数的绝对值  absolute
        System.out.println(Math.max(3, 7));//7   求两个数最大值的
        System.out.println(Math.max(1, Math.max(3, 9)));//9
        System.out.println(Math.min(1, 2));
        System.out.println(Math.ceil(34.5));//向上取整
        System.out.println(Math.floor(34.5));//34.0  向下取整

        System.out.println(Math.round(34.6));//35 long
        System.out.println(Math.random());//double  大于等于 0.0 ,小于 1.0 。
    }
}

5.Random

package com.qf.e_random;

import java.util.Random;


public class Demo1 {
    public static void main(String[] args) {
        Random random = new Random();
        System.out.println(random.nextInt());//随机下一个数字
        System.out.println(random.nextBoolean());//随机出现一个布尔类型的数据
        System.out.println(random.nextInt(3));//随机出现0-3之间的 一个数字
        System.out.println(random.nextDouble());//随机出现一个Double类型的数值
    }
}

6.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("hehe");
        System.out.println("xiix");
        Scanner scanner = new Scanner(System.in);
        //m	err
        //“标准”错误输出流。
        System.err.println("haha");

        //返回当前的时间
        long l = System.currentTimeMillis();   //ms
        System.out.println(l);//1680076586166
        //在1970年1月1日UTC之间的当前时间和午夜之间的差异,以毫秒为单位。

        //通过类 获取当前系统的一个属性
        Properties properties = System.getProperties();
        System.out.println(properties.get("os.name"));//Windows 10
        System.out.println(properties.get("user.name"));//bowang
        System.out.println(properties.get("java.version"));//1.8.0_241
    }
}

7.Date

专门处理时间的一个类

package com.qf.g_date;

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

public class Demo1 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        //Wed Mar 29 16:17:57 IRKT 2023
        //我难受 看不懂? 吧咋办? 转成你能看懂的   格式化
        //SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期
        //SimpleDateFormat(String pattern)
        //使用给定模式 SimpleDateFormat并使用默认的 FORMAT语言环境的默认日期格式符号。
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(date);
        System.out.println(format);
    }
}

package com.qf.g_date;

import java.util.Calendar;
import java.util.Date;


public class Demo2 {
    public static void main(String[] args) {
        Date date = new Date();
        //返回一个值,该值是从包含本开始时间的年份中减去1900的值
        System.out.println(date.getYear() + 1900);
        //返回一个数字,表示包含或开始于此Date对象所代表的时刻的月份 。 返回的值在0和11之间,其值为0代表一月。
        System.out.println(date.getMonth() + 1);//2


        //返回由此日期表示的星期几。 返回值( 0 =星期日, 1 =星期一, 2 =星期二, 3 =星期三, 4 =星期四, 5 =星期五, 6 =星期六)表示包含或以此时间表示的时刻开始的星期几Date对
        System.out.println(date.getDay());//3

        Calendar rightNow = Calendar.getInstance();//获取日历的对象
        System.out.println(rightNow);

        System.out.println(rightNow.get(Calendar.YEAR));//2023
        System.out.println(rightNow.get(Calendar.MONTH) + 1);//3
        System.out.println(rightNow.get(Calendar.DAY_OF_MONTH));//29
        System.out.println(rightNow.get(Calendar.DAY_OF_YEAR));//88
        System.out.println(rightNow.get(Calendar.DAY_OF_WEEK) - 1);//4
        System.out.println(rightNow.get(Calendar.HOUR));//4  pm
        System.out.println(rightNow.get(Calendar.HOUR_OF_DAY));//16





    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值