JAVA实用类基础

1.枚举

枚举指由一组固定的常量组成的类型

枚举优点:

1.枚举可以使代码易于维护,保证类型安全。
2.枚举易于输入,使用枚举赋值,只需要输入枚举名,然后输入点操作符就能将所有的值显示出来。
3.枚举使代码更清晰,允许使用描述性的名称表示数据,使用时直观方便。

2.包装类

包装类基本概念:

Java语言是面向对象的,但是Java中的基本数据类型却不是面向对象的,这在实际开发中存在很多的不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类,称为包装类

每个基本类型在java.lang包中都有一个相应的包装类。

包装类有何作用:

1.提供了一系列实用的属性和方法,方便对象的操作。
2.集合不允许存放基本数据类型数据,存放数字时,要用包装类型。

在这里插入图片描述

1.包装类的构造方法

所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例。

包装类的构造方法有两种形式

方式1:public Type(type value)基本数据类型

Type表示包装类,参数type为基本数据类型。
例如:Integer i=new Integer(520);

方式2:public Type(String value)引用数据类型

Character类外其他包装类可将一个字符串作为参数构造它们的实例 Type表示包装类,参数type为基本数据类型。
例如:Integer i=new Integer(“520”);

1.Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false。

2.当包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常。

2.包装类的常用方法

1.所有包装类都有如下方法:

public static Type valueOf(type value)

例如:Integer i=Integer.valueOf(520);

2.除Character类外,其他包装类都有如下方法:

public static Type valueOf(String value)

例如:Integer i=Integer.valueOf(“520”);

3.XXXValue()方法:包装类转换成基本类型:

例如:Integer num=new Integer(20);
int age=num.intValue()

在这里插入图片描述

4.所有包装类都有如下方法(Character类除外):

public static 基本数据类型 parseXXX(String value)

byte b=Byte.parseByte(“125”);
short s=Short.parseShort(“3256”);
int num=Integer.parseInt(“36”);
long l=Long.parseLong(“123456789”);
float f=Float.parseFloat(“3.14”);
final double PI=Double.parseDouble(“3.14159”);
boolean bool=Boolean.parseBoolean(“false”);

parseXXX()方法的作用:把字符串转换为相应的基本数据类型数据。

5.toString()方法:以字符串形式返回包装对象表示的基本类型数据:

byte bt=12;
String b=Byte.toString(bt);
short sh=25;
String s=Short.toString(sh);
String num=Integer.toString(520);
String l=Long.toString(123456789l);
String f=Float.toString(3.14f);
String PI=Double.toString(3.1415926d);
String bool=Boolean.toString(false);

3.拆箱和装箱

Java 5.0版本以后,程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成。
装箱:基本类型转换为包装类的对象
拆箱:包装类对象转换为基本类型

例如: Integer intObj=5; //装箱
int intValue=intObj; //拆箱

4.包装类特点

1.所有包装类都是final类型,不能创建它们的子类。
2.Java 5.0版本以后,程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成。
3.JDK1.5后,允许基本数据类型和包装类型进行混合数学运算。
3.包装类并不是用来取代基本数据类型的
4.在基本数据类型需要用对象表示时使用

3.Math类

在这里插入图片描述
在这里插入图片描述

4.Random类

在这里插入图片描述

在这里插入图片描述

5.String类(重要)

在这里插入图片描述
在这里插入图片描述

1.字符串链接

两种方法:

使用 + 运算符

int score=80;
String info=“成绩”+score;

使用String类的concat()方法

String s = new String(“你好,”);
String name = new String(“张三!”);
String sentence = s.concat(name);
System.out.println(sentence);

2.字符串的搜索和提取方法

在这里插入图片描述

3.StringBuffer类

StringBuffer类:

StringBuffer类位于java.util包中,是String类的增强类。
对字符串频繁修改时,使用StringBuffer类可以大大提高程序执行效率。

StringBuffer类的常用构造方法:

StringBuffer strb = new StringBuffer();
StringBuffer strb = new StringBuffer(“abc”);

StringBuffer类的常用方法:

strb.toString(); //将StringBuffer类型的字符串转化为String类型的对象返回
strb.append(Object obj); //将参数连接到字符串后并返回 strb.insert (int offset,
Object obj); //将参数插入到字符串指定位置后并返回

6.面试题(Stringbuffer和StringBuider和String类的区别)

1:String是不可变对象,在每次对String类型进行改变时其实都等同于生成了一个新的String对象,然后再指向新的String对象。
2:经常改变内容的字符串最好不要使用String,因为每次生成对象都会对系统性能产生影响。

1:StringBuffer是可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer对象本身进行操作,而不是生成新的对象。
2:字符串经常改变的情况可使用StringBuffer,执行效率要比String类高。

1:JDK5.0后提供了StringBuilder,等价StringBuffer 。 2:区别:StringBuffer类是线程安全的,
2:StringBuilder类是单线程,不提供同步,理论上效率更高。

7.Calendar类

Calendar类是抽象类:用于设置和获取日期/时间数据的特定部分。

Calendar类提供一些方法和静态字段来操作日历。

在这里插入图片描述

(练习1)邮箱注册验证

模拟实现邮箱会员注册,要求:
邮箱地址(6~18个字符,可使用字母、数字、下划线,需以字母开头)
密码(长度为6-16个字符,可使用字母、数字)
两次输入密码,必须相同
验证码(系统随机产生4位数字验证码)
验证都通过,提示注册成功
验证不通过,将所有的提示信息统一显示

代码如下:

package com.bdqn.day04;

import sun.security.util.Password;

import java.util.*;
import java.util.regex.Pattern;

/**
 * @author Xunan
 * @version 1.0.0
 * @authorDesc 诸神在上,佑我程序,玄功护体,BUG皆去!
 * @date 2022-08-09 17:22:58
 * @description
 */
public class VipLoginTest {
    public static void main(String[] args) {

        System.out.println("********************网易邮箱注册*******************");
        Scanner input = new Scanner(System.in);
        System.out.println("请输入邮箱地址:");
        String emails = input.nextLine();
        String str1 = ("^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$");


        System.out.println("请输入密码:");
        String pass = input.next();
        System.out.println("第一次输入密码为:" + pass);
        if (pass != null && !"".equals(pass) && (pass.length() > 6 || pass.length() < 16)) {
            System.out.println("请再次输入密码,并和第一次一样:");
            pass = input.next();
        }

        String remember = num(6);
        System.out.println("生成验证码" + remember);
        System.out.println("请输入验证码:");
        String sckey = input.next();


        if (remember.equalsIgnoreCase(sckey)) {
            System.out.println("没毛病");
        } else {
            System.out.println("有毛病");
        }
        if (pass.equals(pass)) {
            System.out.println("密码一致正确");
        } else {
            System.out.println("两次密码不一致");
        }
        if (emails.matches(str1)) {
            System.out.println("正确");
        } else {
            System.out.println("错误");
        }
    }

    //生成随机数
    public static String num(int line) {
        //记录
        String remember = "";
        Random random = new Random();
        for (int i = 0; i < line; i++) {
            int type = random.nextInt(3);
            switch (type) {
                case 0:
                    char c = (char) (random.nextInt(26) + 65);
                    remember += c;
                    break;
                case 1:
                    char c1 = (char) (random.nextInt(26) + 97);
                    remember += c1;
                    break;
                case 2:
                    remember += random.nextInt(10);
                    break;
            }
        }
        return remember;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方片6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值