第二章 实用类介绍

第二章 实用类介绍

1、枚举(enum)

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

//定义一个性别枚举
public enum Genders{
    Male,Female
}
//sex:枚举类型的变量
public class Student{
   public  Genders  sex;
    public static void main(String[] args) {
        Student stu = new Student();
        stu.sex = Genders.Male; // 将枚举类型的Male赋值给stu对象的 sex属性
        System.out.println(stu.sex);

	}
}

Java API

常用Java API :

  • java.lang

    Enum、包装类、Math、String、StringBuffer、System…

  • java.util

  • java.io

  • java.sql

2、包装类

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

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

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

1.包装类的作用

  • 提供了一系列实用的方法
  • 集合不允许存放基本数据类型数据,存放数字时,要用包装类型
    在这里插入图片描述

2.包装类的构造方法

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

public Type(type value):

Integer i = new Integer(1);
  • 除Character类外,其他包装类可将一个字符串作为参数构造它们的实例

public Type(String value);

Integer i = new Integer("123");

注意事项:

  • Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
  • 当Number包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常

3.包装类的常用方法

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

    Number:

    byteValue()、intValue()、longValue()、shortValue()、doubleValue()、floatValue()、charValue()、booleanValue()

    Integer integerId = new Integer(25);
    int intId = integerId.intValue();
    

    Character:

    Boolean

  • toString():以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)

    String sex = Character.toString('男');
    String id = Integer.toString(25);
    
    String sex='男'+"";
    String id=25+"";
    
  • parseXXX():把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)

    int num=Integer.parseInt("36");
    
    public static  type parseType(String type):
    
    boolean bool=Boolean.parseBoolean("false");
    
  • valueOf()

    所有包装类都有如下方法(基本类型->包装类)

    public static Type valueOf(type value):
    
    Integer intValue = Integer.valueOf(21);
    

    除Character类外,其他包装类都有如下方法(字符串->包装类)

    public static Type valueOf(String s):
    
    Integer intValue = Integer.valueOf("21");
    

3、装箱和拆箱

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

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

拆箱:包装类对象转换为基本类型的值

Integer intObject = 5;
int intValue = intObject;

4、Math类

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

Math.abs(-3.5); //返回3.5
Math.max(2.5, 90.5);//返回90.5
//Math.random()获取0-1之间的随机数
int random = (int) (Math.random() * 10); //生成一个0-9之间的随机数

5、Random类

生成随机数的其他方式:

  • java.util.Random类
Random rand=new Random(); //创建一个Random对象
for(int i=0;i<20;i++){    //随机生成20个随机整数,并显示
    int num=rand.nextInt(10);//返回下一个伪随机数,整型的   	
    System.out.println("第"+(i+1)+"个随机数是:"+num);
} 
注意:用同一个种子值来初始化两个Random 对象,然后用每个对象调用相同的方法,得到的随机数也是相同的

//20~35之间的随机数
Random random = new Random();
int i = random.nextInt((35-20)+1)+20;
System.out.println(i);

6、String类

使用String对象存储字符串:

String s = "Hello World";
String s = new String();
String s = new String("Hello World");

String类位于java.lang包中,具有丰富的方法:

计算字符串的长度、比较字符串、连接字符串、提取字符串

  • length()方法

    String类提供了length()方法,确定字符串的长度

    System.out.print("请输入用户名:");
    String name = scanner.next();
    System.out.println(name.length());
    System.out.print("请输入密码:");
    String pwd = scanner.next();
    if(pwd.length()< 6) {
        System.out.println("密码长度不能小于6位!");
    }
    
  • equals()方法

     if (name.equals("TOM")&&pwd.equals("1234567")){
         System.out.println("登陆成功!");
     }else {
         System.out.println("用户名或密码不匹配,登陆失败!");
     }
    equals():检查组成字符串内容的字符是否完全一致
    ==:判断两个字符串在内存中的地址,即判断是否是同一个字符串对象
    

    字符串比较的其他方法:

    使用equalsIgnoreCase() 忽略大小写

    使用toLowerCase()小写

    使用toUpperCase()大写

  • 字符串连接

     //使用“+”
     String name1 = "张";
     String name2 = "三";
     String name = name1+name2;
     System.out.println(name);
     //使用String类的concat()方法
     String name3 = name1.concat(name2);
     System.out.println(name3);
    
  • 字符串常用提取方法

    方法名说明
    public int indexOf(int ch)搜索第一个出现的字符ch(或字符串value),如果没有找到,返回-1
    public int indexOf(String value)搜索第一个出现的字符ch(或字符串value),如果没有找到,返回-1
    public int lastIndexOf(int ch)搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1
    public int lastIndexOf(String value)搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1
    public String substring(int index)提取从位置索引开始的字符串部分
    public String substring(int beginindex, int endindex)提取beginindex和endindex之间的字符串部分
    public String trim()返回一个前后不含任何空格的调用字符串的副本
    //字符串常用提取方法
    String con = " abcdefgabsd ";
    System.out.println("****indexOf(int ch)******");
    //字符串
    int index = con.indexOf("cde");
    System.out.println(index);
    //字符
    index = con.indexOf('s');
    System.out.println(index);
    System.out.println("****lastIndexOf(int ch)******");
    //字符
    index = con.lastIndexOf('b');
    System.out.println(index);
    //字符串
    index = con.lastIndexOf("ab");
    System.out.println(index);
    System.out.println("****substring(int index)******");
    String str = con.substring(7);
    System.out.println(str);
    System.out.println("****substring(int beginindex, int endindex)左闭右开******");
    str = con.substring(4,9);
    System.out.println(str);
    System.out.println("****trim()******");
    str = con.trim();
    System.out.println(str);
    

    运行结果:

    String con = " abcdefgabsd ";
    
    ****indexOf(int ch)******
    3
    10
    ****lastIndexOf(int ch)******
    9
    8
    ****substring(int index)******
    gabsd 
    ****substring(int beginindex, int endindex)左闭右开******
    defga
    ****trim()******
    abcdefgabsd
    
  • 字符串拆分

    String words = "长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山 ";
    //定义接收数组
    String[] printWord ;   
    System.out.println("***原歌词格式***\n" + words);
    System.out.println("***拆分后歌词格式***");
    //按照空格进行拆分
    printWord = words.split(" ");   
    for (int i = 0; i < printWord.length; i++) {
        System.out.println(printWord[i]);//打印输出
    }
    

    运行结果:

    ***原歌词格式***
    长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山 
    ***拆分后歌词格式***
    长亭外
    古道边
    芳草碧连天
    晚风扶
    柳笛声残
    夕阳山外山
    
  • 查找特定字符出现的次数

    //方法一:使用indexOf和subString方法,循环判断并截取
    int count = 0;
    while(str.indexOf(ch)>=0) {
        str=str.substring(str.indexOf(ch)+ch.length());
        count++;
    }
    System.out.println("指定字符串在原字符串中出现:"+count+"次");
    
    //方法二:使用replace方法将字符串替换为空,然后求长度
    int counts = (str.length()-str.replace(ch, "").length())/ch.length();
    System.out.println("\""+str+"\""+"中包含"+counts+"个"+"\""+ch+"\"");
    
  • 字符串的替换

    //replace(字符串,字符串)
    String str = "1我爱中国!";
    str = str.replace("中国","学习");
    System.out.println(str);
    //replaceAll(正则表达式,字符串)
    str = str.replaceAll("\\d","\\$");
    System.out.println(str);
    
  • 判断字符串是否以指定字符串结尾

    String txt = "1.txt";
    boolean bool = txt.endsWith("txt");
    System.out.println(bool);
    

7、StringBuffer类

对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率

  • StringBuffer声明

    StringBuffer strb = new StringBuffer();
    StringBuffer strb = new StringBuffer("aaa");
    
  • StringBuffer的使用

    sb.toString();        //转化为String类型
    sb.append("**");      //追加字符串
    sb.insert (1, "**");  //插入字符串
    

注意:

String是不可变对象,经常改变内容的字符串最好不要使用String

StringBuffer是可变的字符串,字符串经常改变的情况可使用StringBuffer,更高效

JDK5.0后提供了StringBuilder,等价StringBuffer

8、操作日期时间

  • 获取当前日期

    java.util.Date类:表示日期和时间,提供操作日期和时间各组成部分的方法

    java.text.SimpleDateFormat

    //创建日期对象
    Date date = new Date(); 
    //定制日期格式
    SimpleDateFormat formater = new SimpleDateFormat("yyyy- MM-dd HH:mm:ss");
    String now = formater.format(date);
    System.out.println(now);
    
  • Calendar类

    抽象类,java.util.Calendar,用于设置和获取日期/时间数据的特定部分

    protected Calendar() :由于修饰符是protected,所以无法直接创建该对象。

    //通过该方法生成Calendar对象
    Calendar cr = Calendar.getInstance();
    
    方法或属性说明
    int get(int field)返回给定日历字段的值(年月日)
    MONTH指示月
    DAY_OF_MONTH指示一个月中的某天
    DAY_OF_WEEK指示一个星期中的某天
    //get(int field) 返回给定日历字段的值(年月日)
    Calendar cr = Calendar.getInstance();
    int year = cr.get(Calendar.YEAR);
    int month = cr.get(Calendar.MONTH);
    int day = cr.get(Calendar.DAY_OF_MONTH);
    int week = cr.get(Calendar.DAY_OF_WEEK);
    //month是从0开始的,而月份是从1开始的
    System.out.println(year+"年"+(month+1)+"月"+day+"日星期"+week);
    //设置指定日期
    //将周一(FirstDay)设为每周的第一天(monday)
    cr.setFirstDayOfWeek(Calendar.MONDAY);
    //将年份设为2015年
    cr.set(Calendar.YEAR,2015);
    //将月份设为4月(java中0-11代表12个月)
    cr.set(Calendar.MONTH,3);
    //将日数设为第6日
    cr.set(Calendar.DATE,6);
    //使用Calendar.WEEK_OF_YEAR来求出属于某年的第几周
    week = cr.get(Calendar.WEEK_OF_YEAR);
    System.out.println("2015年4月6日是一年中的第"+week+"周");
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值