第二章 实用类介绍

2024-09-05 04:12
文章标签 介绍 实用 第二章

本文主要是介绍第二章 实用类介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 第二章 实用类介绍
    • 1、枚举(enum)
    • 2、包装类
      • 1.包装类的作用
      • 2.包装类的构造方法
      • 3.包装类的常用方法
    • 3、装箱和拆箱
    • 4、Math类
    • 5、Random类
    • 6、String类
    • 7、StringBuffer类
    • 8、操作日期时间

第二章 实用类介绍

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+"周");
    

这篇关于第二章 实用类介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1137918

相关文章

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

9个SpringBoot中的自带实用过滤器使用详解

《9个SpringBoot中的自带实用过滤器使用详解》在SpringBoot应用中,过滤器(Filter)是处理HTTP请求和响应的重要组件,SpringBoot自带了许多实用的过滤器,如字符编码,跨... 目录1. CharacterEncodingFilter - 字符编码过滤器功能和配置手动配置示例2

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式