java常用类介绍

学习地址

实用类介绍

  1. 能定义并使用枚举类型
  2. 掌握包装类及装箱,拆箱概念
  3. 会使用math类进行数学运算
  4. 会使用random类获取随机数

实用类介绍1

枚举

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

通过enum关键字进行声明

枚举的好处

  1. 类型安全

  2. 易于输入

  3. 代码清晰

访问修饰符 enum 名字{

声明常量

}

例:public enum Genders{

Male,Female

}

使用

public class Student{

public Genders sex;

}

Student stu=new Student();

stu.sex=Genders.Male;

stu.sex=“你好”;//就会报错

实现

package day01;

public class Students {
    public Genders sex;//学员性别

    public static void main(String[] args) {
        Students stu=new Students();
        //类型安全,易于输入,赋值
        //确保赋值的正确性
        //代码清晰
        stu.sex=Genders.;
    }
}
package day01;

public enum Genders {,}

枚举的使用

需求:输入今天星期几,对用户一周要做的事情做提示

一般思路
package day01;
//用户一周做什么事情
public class WeekDo {
    public void doWhat(int day){
        //对用户输入的星期几做判断
        if(day>7||day<1){
            System.out.println("输入不合理,输入必须在1-7之间");
            return;
        }
        switch (day){
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("工作日,请努力工作,加油");
                break;
            case 6:
                System.out.println("工作了一周辛苦了,休息一下吧");
                break;
            case 7:
                System.out.println("放松一下,为下周工作做准备吧");
                break;
        }
    }

    public static void main(String[] args) {
        WeekDo week=new WeekDo();
        week.doWhat(7);
        
    }
}


枚举修改

package day01;
//用户一周做什么事情
public class WeekDo {
    public void doWhat(Week day){
        //对用户输入的星期几做判断
        switch (day){
            case MON:
            case TUE:
            case WED:
            case THU:
            case FRI:
                System.out.println("工作日,请努力工作,加油");
                break;
            case SAT:
                System.out.println("工作了一周辛苦了,休息一下吧");
                break;
            case SUN:
                System.out.println("放松一下,为下周工作做准备吧");
                break;
        }
    }

    public static void main(String[] args) {
        WeekDo week=new WeekDo();
        week.doWhat(Week.FRI);

    }
}
package day01;

public enum Week {
    MON,TUE,WED,THU,FRI,SAT,SUN
}

需求

为同学们java学习阶段定义枚举:L1,L2,L3,分别表示第一,二,三阶段

编程输出每个阶段的学习目标

L1:Java开发工程师

L2:大数据开发工程师

L3:大数据挖掘工程师

package day01;
public enum JieDuan {
    L1,L2,L3
}

package day01;
public class Meijueceshi {
    public void xuexi(JieDuan n){
        switch (n){
            case L1:
                System.out.println("Java开发工程师");
                break;
            case L2:
                System.out.println("大数据开发工程师");
                break;
            case L3:
                System.out.println("大数据挖掘工程师");
                break;
        }
    }
    public static void main(String[] args) {
        Meijueceshi jieduan=new Meijueceshi();
        jieduan.xuexi(JieDuan.L1);
        //JieDuan jd=JieDuan.L1;
        //jieduan.xuexi(jd);
    }
}

包装类及其构造方法

  1. 掌握包装类及其作用
  2. 掌握包装类的两种构造方法

包装类:把基本数据类型转换为对象

基本类型都在java.lang包里面有一个相应的包装类

包装类作用:

  1. 提供一系列实用的方法
  2. 集合不允许存放基本数据类型,存放数字时,就可以使用包装类型
package day01;
public class Test2 {
    public static void main(String[] args) {
        //包装类的构造方法
        //1.以每个包装类对应的基本类型作为参数
        //基本类型-----包装类
        int i=9;
        Integer i1=new Integer(i);
        double d=9.8;
        Double D1=new Double(d);
        char c='c';
        Character c1=new Character(c);
        float f=9.8f;
        Float f1=new Float(f);
        boolean b=true;
        Boolean b1=new Boolean(b);

        //2.以字符串做参数,除了Character
        //当number类型的包装类构造方法的字符串,必须能转换成number的字串
        //字符串不能为null
        Integer i2=new Integer("123");
        System.out.println(i2+1);//124,不是1231
        Double D2=new Double("87.9");
        System.out.println(D2+1);//88.9,不是87.91
        Float f2=new Float("9.8");
        System.out.println(f2+1);//10.8,不是9.81
        Boolean b2=new Boolean("true");
        System.out.println(b2);//true
        Boolean b3=new Boolean("false");
        System.out.println(b3);//false
        //无论是否是大小写的true都是true
        Integer i3=new Integer("love");
        System.out.println(i3);//异常
        Integer i4=new Integer("null");
        System.out.println(i4);//异常
        Integer i5=new Integer(null);
        System.out.println(i5);//异常
        //Character c2=new Character("a");
        //报错character没有这种构造方法
    }
}

包装类的两种常用的构造方法

  1. 参数为基本数据类型
  2. 参数为字符串

包装类的常用方法1

包装类的常用方法

  1. XXXValue():包装类转换成基本类型

  2. toString():基本类型到字符串

package day01;

public class Test2 {
    public static void main(String[] args) {
        //XXXValue(),把包装类转换成基本数据类型
        Integer i=new Integer(100);
        int inum=i.intValue();
        Boolean b=new Boolean(true);
        boolean b1=b.booleanValue();

        //toString(),以字符串的形式返回包装对象表示的基本类型数据
        int num=100;
        String snum=Integer.toString(num);
        
        boolean b3=true;
        String s=Boolean.toString(b3);
        //常用的方法:基本类型到字符串
        boolean b4=true;
        String s2=true+"";
    }
}

包装类的常用方法2

常用方法

  1. parseXXX():把字符串转成相应的基本数据类型(Character除外)
  2. valueOf():基本类型转换成包装类
    • 基本类型作参数:所有包装类都有
    • 字符串作参数:除了Character其他的都有
//3.parseXXX()字符串转成基本数据类型,character没有这个方法
String age="19";
int agenum=Integer.parseInt(age);
String score="90.1";
double score1=Double.parseDouble(score);
String sc="女";
//char csc=Character.parseChar(sc);
//编译报错,不存在这个方法

//4、valueOf()基本类型转换成包装类
//基本类型作参数,都有
int j=90;
Integer j1=Integer.valueOf(j);
char  sex='男';
Character sex1=Character.valueOf(sex);
//字符串作参数,character没有这个方法

String m="123";
Integer m1=Integer.valueOf(m);
//注意:包装类为number类型,参数字符串必须是数字兼容的字符串
String m2="love";
//Integer m13=Integer.valueOf(m);
//报错,不兼容
//注意:出了参数内容为true,其他都是false
String flag="true";
String flags="True";
String flags1="false";
String flags12="china";
Boolean bflag=Boolean.valueOf(flag);//true
Boolean bflags=Boolean.valueOf(flags);//true
Boolean bflags1=Boolean.valueOf(flags1);//false
Boolean bflags12=Boolean.valueOf(flags12);//false
String  sex11="男";
//Character sex12=Character.valueOf(sex11);
//报错,character不存在字符串的valueOf方法

装箱和拆箱

  1. 掌握什么是装箱和拆箱

基本类型和包装类的自动转换

装箱:基本类型转换成包装类的对象

Integer intObject=5;

拆箱:包装类独享转换成基本类型值

int intValue=intObject;

package day01;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
    public static void main(String[] args) {
        //1.XXXValue(),把包装类转换成基本数据类型,自动转换,拆箱
        Integer i=new Integer(100);
        //int inum=i.intValue();
        int inum=i;//拆箱

        //4、valueOf()基本类型转换成包装类,自动转换,装箱
        //基本类型作参数,都有
        int j=90;
        //Integer j1=Integer.valueOf(j);
        Integer j1=j;//装箱
        
        //集合只能存储包装类型
        List list=new ArrayList();
        int num=100;
        Integer numinter=new Integer(num);
        list.add(numinter);
        list.add(num);//自动进行装箱
    }
}

JDK1.5之后允许基本数据类型和包装类混用计算

包装类不是用来取代基本数据类型的

  • 在基本数据类型需要用对象表示时使用

Math类

java.lang.Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率)

Math.abs(-3.5)//3.5,求绝对值

Math.max(10,20)//20,求最值

package day01;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        System.out.println(Math.abs(-1.5));
        System.out.println(Math.max(10,25));
        System.out.println(Math.min(-1,10));
        //生成0.0到1.0之间的随机数(包括0)
        //System.out.println(Math.random());
        //幸运抽奖,生成0-9之间的随机数
        int random=(int) (Math.random()*10);
        System.out.println("系统生成的随机数是"+random);
        Scanner input=new Scanner(System.in);
        System.out.println("请输入你的私我会员卡号:");
        int no=input.nextInt();
        //会员卡号的百位==随机数就中奖
        int baiwei =no/100%10;
        if(baiwei==random){
            System.out.println("恭喜你中奖了");
        }
        else {
            System.out.println("谢谢参与");
        }
    }

}

random类

random类位于java.util.random中

  1. 需要创建一个对象

​ Random rand=new Random();

  1. 调用方法
package day01;
import java.util.Random;
public class Test2 {
    public static void main(String[] args) {
        //创建random的对象(随机数生成器)
        //随机数生成器种子不同,每次生成的随机数是不同的
        //随机数种子相同,每次生成的随机数都是相同的
        Random random1 =new Random(500);
        Random random2 =new Random(500);
        //生成随机整数int范围内
        System.out.println(random1.nextInt(20));
        //生成随机整数0-10范围内
        System.out.println(random2.nextInt(10));
    }
}

常用写法:

Random random1 =new Random();

Random random1 =new Random(时间的毫秒数);

实用类介绍2

  1. 掌握如何操作字符串

    • 会使用string类
    • 会使用stringBuffer类
  2. 掌握如何操作日期和时间

    • 会使用date类花蕊calendar类操作日期时间
    • 会使用simpledateformat类格式化日期时间

string类的length()方法

使用string对象存储字符串

string类提供的方法:

  • 计算字符串长度
  • 比较字符串内容
  • 连接字符串
  • 提取字符串

string类提供了length()方法,获取字符串长度

  • 返回字符串中的字符数
package day01;

import java.util.Scanner;

//用户注册,密码不小于6位
public class Register {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        System.out.println("请输入用户名");
        String name=input.next();
        System.out.println("请输入密码");
        String pwd=input.next();
        if(pwd.length()<6){
            System.out.println("密码不能少于6位");
        }
        else {
            System.out.println("注册成功");
        }
    }
}

只能判断一次,进行一次输入。修改成输入大于6位成功退出

package day01;

import java.util.Scanner;

//用户注册,密码不小于6位
public class Register {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        System.out.println("请输入用户名");
        String name=input.next();
        System.out.println("请输入密码");
        String pwd=input.next();
        do{
            System.out.println("密码不能少于6位");
            System.out.println("请输入密码");
            pwd=input.next();
        }while(pwd.length()<6);
        System.out.println("注册成功!");
    }
}

string的equals()方法

string的equals()方法,比较存储在两个字符串对象的内容是否一致

package day01;

import java.util.Scanner;

//用户注册,密码不小于6位
public class Register {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        System.out.println("请输入用户名");
        String name=input.next();
        System.out.println("请输入密码");
        String pwd=input.next();
        //假设数据库已经存储了用户成功注册的用户名TOM,密码1234567
        if(name.equals("TOM")&&pwd.equals("1234567")){
            System.out.println("登陆成功");
        }
        else {
            System.out.println("用户名和密码不匹配,登录失败");
        }
        //==基本数据类型的值是否相等
        int i=8;
        int j=8;
        System.out.println(i==j);//t
        //字符串比较方法:equals()比较两个字符串内容是否相等
        //字符串的==,比较两个字符串的内存地址是否相等
        String s1="hello";
        String s2="hello";
        //以上2行代码创建了1个对象
        String s3=new String("hello");
        String s4=new String("hello");
        String s5=s3;
        System.out.println(s1.equals(s2));//t
        System.out.println(s1==s2);//t
        System.out.println(s3==s2);//f
        System.out.println(s3==s4);//f
        System.out.println(s3==s5);//t

    }
}

string的其他比较方法

使用equalsIgnoreCase()方法:不区分大小写

使用toLowerCase()方法:全部小写

使用toUpperCAse()方法:全部大写

使用concat()方法:连接字符串

使用+连接字符串

使用trim()方法:删去开头结尾空格,中间不删

需求:登录时不考虑大小写问题,实现登录

package day01;

import java.util.Scanner;

//用户注册,密码不小于6位
public class Register {
    public static void main(String[] args) {
        Scanner input =new Scanner(System.in);
        System.out.println("请输入用户名");
        String name=input.next();
        System.out.println("请输入密码");
        String pwd=input.next();
        //假设数据库已经存储了用户成功注册的用户名TOM,密码1234567
        //必须一致就用equals
        //忽略大小写就用equalsIgnoreCase
        if(name.equalsIgnoreCase("TOM")&&pwd.equals("1234567")){
            //等同于if(name.toLowerCase().equals("TOM".toLowerCase())&&pwd.equals("1234567"))
            //等同于if(name.toUpperCase().equals("TOM".toUpperCase())&&pwd.equals("1234567"))
            System.out.println("登陆成功");
        }
        else {
            System.out.println("用户名和密码不匹配,登录失败");
        }
        //去掉字符串两端空格的方法trim(),中间空格不去
        String name1="     admin     ";
        System.out.println(name.trim());

        String s1="hello";
        String s2="world";
        System.out.println(s1+s2);//连接
        System.out.println(5+4);//加法
        System.out.println(5+"4");//连接
        System.out.println(s1.concat(s2));//连接



    }
}

string类练习

需求:使用字符串常用方法完成会员注册功能

package day01;

import java.util.Scanner;

public class Register {
    //验证会员注册信息(用户名不能低于3位,密码不低于6,两次密码相同
    public boolean verify(String name,String pwd1,String pwd2){
        boolean flag=false;
        if(name.length()<3||pwd1.length()<6){
            System.out.println("用户名长度不能小于3,密码长度不能小于6");
            flag=false;
        }
        else if(!pwd1.equals(pwd2)){
            System.out.println("两次密码不一致");
            flag=false;
        }
        else {
            System.out.println("注册成功");
            flag=true;
        }
        return flag;
    }
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("欢迎进入注册系统");
        Register register=new Register();

        String name;//用户名
        String pwd1;
        String pwd2;
        boolean flag;
        do{
            System.out.println("请输入用户名:");
            name=input.next();
            System.out.println("请输入密码:");
            pwd1=input.next();
            System.out.println("请再次输入密码:");
            pwd2=input.next();
            flag=register.verify(name,pwd1,pwd2);
        }while(!flag);

    }
    }

string类提取方法

package day01;

public class StrMethods {
    public static void main(String[] args) {
        //获取特定字符串在字符串中出现的位置
        String s="hello world";
        //indexOf第一次出现的位置,下标从0开始,找不到返回-1
        int index=s.indexOf("o");
        System.out.println(index);
        int index1=s.indexOf("yes");
        System.out.println(index1);
        //lastindexOf第一次出现的位置,下标从0开始,空格也占一个位置,找不到返回-1
        int index2=s.lastIndexOf("o");
        System.out.println(index2);
        //截取特定字符串内容,包含这个位置,到末尾的字符串
        String result=s.substring(4);
        System.out.println(result);
        //截取特定字符串内容,包含这个位置,到输入的截止的字符串位置,不包含最后
        String result2=s.substring(4,8);
        System.out.println(result2);
    }
}

string类提取方法练习

package day01;
import java.util.Scanner;
public class JobSubmit {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("欢迎进入作业提交系统");
        System.out.println("请输入你要提交的文件名");
        String fileName=input.next();
        System.out.println("请输入你的邮箱");
        String email=input.next();

        boolean jobFlag=false;//作业名是否正确
        boolean emailFlag=false;//邮箱名是否正确

        //判断作业名是否包含.java 的后缀
        int index=fileName.lastIndexOf(".");
        if(index!=-1&&fileName.substring(index).equals(".java")){
            jobFlag=true;
        }
        else {
            System.out.println("文件名无效,请重新提交");
        }

        //邮箱名
        int index2=email.lastIndexOf("@");
        int index3=email.lastIndexOf(".");
        if(index2!=-1&&index3!=-1&&index2<index3){
            emailFlag=true;
        }
        else {
            System.out.println("邮箱地址无效,请重新提交");
        }
        if(emailFlag==true&&jobFlag==true){
            System.out.println("提交成功");
        }
        else {
            System.out.println("提交失败");
        }
    }
}

需求:

输入字符串,在输入要查找的字符,判断字符在字符串中出现的次数

思路:把串一个个都分开,再逐个对比

package day01;
import java.util.Scanner;
    //查找某个特定字符串在整个字符串中出现的次数
public class Counter {
    public int counter(String info, String find) {
            int count = 0;
            String [] chars=new String[info.length()];
            //把字符串转换成数组元素
        for (int i = 0; i < chars.length; i++) {
            //把字符串i位置的字符取出来,放入数组
            chars[i]=info.substring(i,i+1);
            //拿出来数组中的元素,和后面的进行比较
            if(chars[i].equals(find)){
                count++;
            }
        }
            return count;
        }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String info=input.next();
        System.out.println("请输入要查找的字符");
        String find=input.next();

        Counter c=new Counter();
        int count=c.counter(info,find);
        System.out.println("\""+info+"\""+"中包含了"+count+"个"+"\""+find+"\"");

    }
}

字符串拆分

需求

现有一个字符串,他是一段歌词,枚举都以空格结尾,怎么拆分

思路:split()方法

package day01;
//查找某个特定字符串在整个字符串中出现的次数
public class Counter {
    public static void main(String[] args) {
        System.out.println("+++++++++++++++++原歌词++++++");
        String song="长亭外 古道边 芳草碧连天 晚风付留底圣餐 夕阳山外山";
        System.out.println(song);
        //把字符串拆分  ,拆成字符串数组
        String [] songs=song.split(" ");
        System.out.println("+++++++++++拆分完的歌词+++++++++++");
        for(String s:songs){
            System.out.println(s);
        }
    }
}

StringBuffer类操作字符串

通过string操作字符串的时候,比如最佳,截取等,操作的是字符串的副本,字符串本身没有修改,需要定义一个新的变量进行赋值

StringBuffer:对字符串频繁修改的情况下,使用StringBuffer比string效率高

StringBuffer

  • 声明:StringBuffer s=new StringBuffer();

    ​ StringBuffer s=new StringBuffer(“aaa”);

  • StringBuffer的使用

    • s.toString():转换成string类型
    • s.append(“***”):追加字符串
    • s.insert(1,“**”):插入字符串
package day01;
//查找某个特定字符串在整个字符串中出现的次数
public class Counter {
    public static void main(String[] args) {
        String s="hello";
        s.concat(" world!");
        //s=s.concat(" world!");
        System.out.println(s);

        //StringBuffer
        StringBuffer s1=new StringBuffer("hello");
        System.out.println(s.length());//长度
        System.out.println(s.toString());//类型转换成string
        //操作字符串本身
        s1.append(" world");
        System.out.println(s1);
        //在某个位置插入字符串
        s1.insert(5,",");
        System.out.println(s1);

    }
}

按例需求:

将一个数字字符串转换成逗号分隔的数字串,从右边开始每三个数字用逗号分隔

package day01;
import java.util.Scanner;
//查找某个特定字符串在整个字符串中出现的次数
public class Counter {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String s=input.next();
        StringBuffer number=new StringBuffer(s);
        for (int i = number.length(); i >0 ; i=i-3) {
            number.insert(i,",");
        }
        System.out.println(number);
    }
}

日期和时间操作

  1. 掌握使用date类创建日期对象

  2. 掌握使用SimpleDateFormat定制日期格式

  3. 掌握使用calendar类操作日期时间

package day01;

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

public class TimeEx {
    public static void main(String[] args) {
        Date date =new Date();
        System.out.println(date);
        //定制日期格式
        SimpleDateFormat formater=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr=formater.format(date);
        System.out.println(dateStr);
    }
}

Calendar类

  • 抽象类,java.util.Calendar
  • 用于设置和获取日期/时间数据的特定部分
  • Calendar类提供一些方法和静态字段来操作日历
package day01;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeEx {
    public static void main(String[] args) {
        Date date =new Date();
        System.out.println(date);
        //定制日期格式
        SimpleDateFormat formater=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr=formater.format(date);
        System.out.println(dateStr);

        //通过Calendar类来操作时间和日期
        Calendar c=Calendar.getInstance();
        int year=c.get(Calendar.YEAR);
        int month=c.get(Calendar.MONTH)+1;
        int day=c.get(Calendar.DAY_OF_MONTH);
        System.out.println("今天是"+year+"年"+month+"月"+day+"日");
        //星期几,DAY_OF_WEEK中的sunday是1
        int week=c.get(Calendar.DAY_OF_WEEK)-1;
        System.out.println("今天是星期"+week);

    }
}

日期时间操作练习

需求:

获取当前时间,使用simpledateformat以年-月-日方式输出

计算2021年4月6日是一年中的第几个星期

package day01;

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

public class TimeEx2 {
    public static void main(String[] args) {
        Date date=new Date();
        SimpleDateFormat formater=new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("当前日期为"+formater.format(date));

        Calendar c=Calendar.getInstance();
        c.set(Calendar.YEAR,2021);
        c.set(Calendar.MONTH,3);
        c.set(Calendar.DAY_OF_MONTH,6);
        int week=c.get(Calendar.WEEK_OF_YEAR);
        System.out.println("2021年4月6日是一年里的第"+week+"周");
    }
}
  • 17
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值