【JavaSE】实用类——String、日期等

目录

  • String类
    • 常用方法
      • String类的equals()方法
        • String中equals()源码展示
      • “==”和equals()有什么区别呢?
  • StringBuffer类
    • 常用构造方法
    • 常用方法
    • 代码示例
  • 面试题:String类、StringBuffer类和StringBuilder类的区别?
  • 日期类
    • Date类
    • Calendar类
      • 代码示例

String类

String s = new String(“Hello World”);   ?//创建了几个对象

答案是:两个,s和“Hello World”

String类是final修饰的,每次修改引用的值,都会创建一个新的对象出来

常用方法

在这里插入图片描述

	public static void main(String[] args) {
        String word = "HelloWorld!!!你好世界!!!";
        //1.返回word这个字符串第一个字符是什么?
        char firstCh = word.charAt(0);
        //1.返回word这个字符串最后一个字符是什么?
        char lastCh = word.charAt(word.length()-1);
        System.out.println("第一个字符是 : " + firstCh);
        System.out.println("最后一个字符是 : " + lastCh);
        System.out.println("---------------------------------------");
        String str = "Hello";
        //将world!!!拼接到这个字符串后面
        //String newStr = str.concat("world!!!");
        str += "world!!!";
        System.out.println(str);
        System.out.println("----------------------------------------");
        String code = "public static void main(String[] args){}";
        boolean flag = code.contains("static");
        System.out.println("是否存在static?" + flag);
        boolean flag2 = code.contains("z");
        System.out.println("是否存在字母z? " + flag2);
        System.out.println("----------------------------------------");
        String yanzhengCode = "sKdgF5";
        String input = "skdgf5";
        System.out.println(yanzhengCode.equalsIgnoreCase(input));
        System.out.println("----------------------------------------");
        String email = "18037678296@163.cn.com";
        int firstPointIndex = email.indexOf(".");
        int lastPointIndex = email.lastIndexOf(".");
        System.out.println("\".\"第一次出现的索引位置是:" + firstPointIndex + ",最后一次出现的索引位置是:" + lastPointIndex);
        int qqIndex = email.indexOf("qq");
        if(qqIndex < 0){
            System.out.println("这不是一个QQ邮箱,因为邮箱地址中没有\"qq\"这个字符串");
        }
        System.out.println("这个邮箱的长度是:" + email.length());
    }

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

public static void main(String[] args) {
        String uuid = UUID.randomUUID().toString();
        System.out.println("生成的唯一序列是:" + uuid);
        //将UUID中的-去掉
        //uuid = uuid.replace("-","^");
        uuid = uuid.replace("-","");
        System.out.println("替换后的UUID是:" + uuid);
        System.out.println("-----------------------------");
        String musicWords = "虞美人 /蒋捷 少年听雨歌楼上 红烛昏罗帐 中年听雨客舟中 江阔云低 断雁叫西风 而今听雨僧庐下 鬓已星星也 悲欢离合总无情 一任阶前 点滴到天明";
        String[] words = musicWords.split(" ");
        for (String word : words) {
            System.out.println(word);
        }
        System.out.println("-----------------------------");
        String str = "四十年来家国,三千里地山河。凤阁龙楼连霄汉,玉树琼枝作烟罗。几曾识干戈?";
        String lastWord = str.substring(str.lastIndexOf("。")+1);
        System.out.println("最后一句诗是:" + lastWord);
        String secoundWord = str.substring(str.indexOf("。")+1,str.lastIndexOf("。")+1);
        System.out.println("第二句是:" + secoundWord);
        System.out.println("-----------------------------");
        String s = "HelloWorld!!!";
        char[] chars = s.toCharArray();
        for (char aChar : chars) {
            System.out.print(aChar + " ");
        }
        System.out.println();
        System.out.println("-----------------------------");
        String t = "kjdsfSDLKSG41654";
        System.out.println(t.toLowerCase());
        System.out.println(t.toUpperCase());
        System.out.println("-----------------------------");
        String u = "      asfkjsdgjh   asda  a as     ";
        System.out.println("字符串的长度是:" + u.length());
        System.out.println("去掉前后空格后的长度是:" + u.trim().length());
    }

String类的equals()方法

equals()方法比较原理(重写了Object类的equals()方法):equals():检查组成字符串内容的字符是否完全一致
在这里插入图片描述

String中equals()源码展示
	public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

“==”和equals()有什么区别呢?

==:判断两个字符串在内存中的地址,即判断是否是同一个字符串对象
equals()是Object中的方法本身也是判断两个字符串在内存中的地址是否是同一个的,但是可以通过重写Object中的equals()方法,比如String重写的equals()方法可以重写为判断两个对象的字符串内容是否相同

StringBuffer类

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

常用构造方法

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

常用方法

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

代码示例

	public static void main(String[] args) {
        String s = "HelloWorld,Hello";
        StringBuffer sb = new StringBuffer(s);
        sb.append("KGC");
        sb.append(",");
        sb.append("Hello");
        sb.append("KD50");
        sb.append("!!!");
        System.out.println(sb.toString());
        sb.insert("HelloWorld".length(),"!!!");
        System.out.println(sb.toString());
        /*sb.replace(sb.lastIndexOf("!!!"),sb.lastIndexOf("!!!")+3,"...");
        System.out.println(sb.toString());*/
       /* sb.delete(sb.lastIndexOf("!!!"),sb.lastIndexOf("!!!")+3);
        System.out.println(sb.toString());*/
        /*sb.delete("elloWorld!!!,".length()+1,"HelloWorld!!!,HelloKGC".length());
        System.out.println(sb.toString());*/
        System.out.println("---------------------------");
        StringBuffer money = new StringBuffer("9876543210");
        for (int i = money.length()-3;i>0;i-=3){
            money.insert(i,",");
        }
        System.out.println(money.toString());

        //reverse()反转字符串
    }

面试题:String类、StringBuffer类和StringBuilder类的区别?

  1. String是不可变对象,在每次对String类型进行改变时其实都等同于生成了一个新的String对象,然后再指向新的String对象。经常改变内容的字符串最好不要使用String,因为每次生成对象都会对系统性能产生影响。
  2. StringBuffer是可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer对象本身进行操作,而不是生成新的对象。字符串经常改变的情况可使用StringBuffer,执行效率要比String类高
  3. JDK5.0后提供了StringBuilder,等价StringBuffer 。
    StringBuilder与StringBuffer的区别:StringBuffer类是线程安全的, StringBuilder类是单线程,不提供同步,理论上效率更高

日期类

  1. java.util包中提供的和日期时间相关的类有Date类、Calendar类
  2. java.text包中提供将日期转换为文本的类有SimpleDateFormat类

Date类

//创建日期对象
Date date = new Date(); 
//定制日期格式
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss");
//调用方法将日期格式化为文本
String now = sdf.format(date);
System.out.println(now);

Calendar类

  • Calendar类是抽象类:用于设置和获取日期/时间数据的特定部分
  • Calendar类提供一些方法和静态字段来操作日历
    在这里插入图片描述
    在这里插入图片描述

代码示例

	public static void main(String[] args) {
        //创建Calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
        System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));
        System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH) + 1);
        System.out.println(calendar.get(Calendar.DATE));
        System.out.println(calendar.get(Calendar.HOUR));
        System.out.println(calendar.get(Calendar.MINUTE));
        System.out.println(calendar.get(Calendar.SECOND));
    }
	public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(2024,11,19);
        Date date = calendar.getTime();
        System.out.println(date);
        System.out.println("--------------------------");
        Calendar calendar2 = Calendar.getInstance();
        //calendar2.add(Calendar.MONTH,-1);
        //calendar2.add(Calendar.WEEK_OF_MONTH,-1);
        //calendar2.add(Calendar.DATE,-1);
        calendar2.add(Calendar.DATE,5);
        System.out.println(calendar2.getTime());
        System.out.println("--------------------------");
        long time = System.currentTimeMillis();
        System.out.println(time);
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE4 材质多张图片拼接成一张图片(此处用2×2拼接)

UE4 材质多张图片拼接成一张图片&#xff08;此处用22拼接&#xff09; //TexCoord,TextureA,TextureB,TextureC,TextureDfloat3 ReturnTexture TextureA; if(TexCoord.x < 0.5 && TexCoord.y < 0.5) {ReturnTexture TextureA; } else if(TexCoord.x > 0.5…

试用北大库博Cobot-SCA工具

最近试用北大软件工具的库博-SCA工具&#xff0c;其产品全称是库博软件成分分析与同源漏洞检测工具软件。这个产品名称有点长&#xff0c;至于原因&#xff0c;可能是为了与市场上其它SCA工具进行区分吧。北大库博SCA不是像大多数SCA工具&#xff0c;解析构建文件中的依赖组件进…

C#与VisionPro联合开发——跳转页面

1、跳转页面并打开相机 From1 所有代码展示 using System; using System.IO; using System.Windows.Forms; //引入VisionPro命名空间 using Cognex.VisionPro;namespace ConnectCamera {public partial class Form1 : Form {public Form1() {InitializeComponent();}CogAcqFif…

现在转行学python,前景和优势有哪些?

正所谓“男怕入错行&#xff0c;女怕嫁错郎”&#xff0c;可想而知进入一个正确的行业有多重要。IT行业的高薪吸引着越来越多转行“入坑”&#xff0c;python作为目前的大势&#xff0c;是很多人转行的首选。为什么这么多的人都想转行学习python&#xff0c;python有哪些前景和…

echarts图表用key强制刷新后空白

我的需求是echarts图表全屏后退出全屏在edge浏览器上没有什么问题但是在Chrome浏览器上会出现表格的线不能变回原来的比例的问题 我就想在退出全屏的时候强制刷新一下echarts图表外面的这个div useEffect(() > {if (col) {col.addEventListener("webkitfullscreenchan…

批量改名神器:让文件名与主目录名同步,一键操作,轻松管理!

在数字化时代&#xff0c;我们每天都在与大量的文件打交道。从工作文档到个人照片&#xff0c;从视频剪辑到音乐收藏&#xff0c;文件的管理和整理成为了我们生活中不可或缺的一部分。然而&#xff0c;你是否曾经遇到过这样的烦恼&#xff1a;文件数量庞大&#xff0c;命名不规…

理解@Configuration和@Component注解的不同用途和作用范围

理解Configuration和Component注解的不同用途和作用范围 在Spring框架中&#xff0c;Configuration和Component是两个常见的注解&#xff0c;用于实现依赖注入和组件扫描等功能。虽然它们都是用于标识类的注解&#xff0c;但它们在作用和用途上有着明显的区别。本文将深入探讨C…

图扑数字孪生技术在航空航天方面的应用

"数字孪生"这一概念最早就是在航空航天领域使用&#xff0c;目的在于处理航天器的健康维护和保护问题。图扑软件依托自主研发的 HT for Web 产品&#xff0c;实现对民航机场、民航飞机、火箭发射、科技展馆的数字孪生展示。 图扑 HT 数字孪生技术助力航空航天数字孪…

基于JavaWeb实现的校园新闻发布系统

一、系统架构 前端&#xff1a;jsp | bootstrap | js | css 后端&#xff1a;springboot | jdbc 环境&#xff1a;jdk1.6 | mysql | maven 二、 代码及数据库 三、功能介绍 01. web端-首页 02. web端-新闻列表 03. web端-新闻明细 04. 管理端-登录页…

阿里云服务器最新收费标准及优惠价格参考(2024更新)

2024阿里云服务器优惠活动政策整理&#xff0c;轻量2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;阿里云ECS云服务器2核2G3M新老用户均可99元一年续费不涨价&#xff0c;企业用户2核4G5M带宽199元一年&#x…

【Flink精讲】Flink组件通信

主要指三个进程中的通讯 CliFrontendYarnJobClusterEntrypointTaskExecutorRunner Flink内部节点之间的通讯使用Akka&#xff0c;比如JobManager和TaskManager之间。而operator之间的数据传输是利用Netty。 RPC是统称&#xff0c;Akka&#xff0c;Netty是实现 Akka与Ac…

ChatGPT 国内快速上手指南

ChatGPT简介 ChatGPT是由OpenAI团队研发的自然语言处理模型&#xff0c;该模型在大量的互联网文本数据上进行了预训练&#xff0c;使其具备了深刻的语言理解和生成能力。 GPT拥有上亿个参数&#xff0c;这使得ChatGPT在处理各种语言任务时表现卓越。它的训练使得模型能够理解上…

springboot集成quartz定时任务并接入后台管理系统(copy即用)

说明:项目启动后会根据设置的时间进行执行,业务代码根据自己的需求更改,数据库文件在最后(记得清空数据库哦~)这里需要注意的一点就是className字段表示的是下面的对应的DynamicTask的路径如:com.example.demo.quartz.task.DynamicTask,如有多个定时任务copy并更改Dynam…

网络安全之安全事件监测

随着人们对技术和智能互联网设备依赖程度的提高&#xff0c;网络安全的重要性也在不断提升。因此&#xff0c;我们需要不断加强网络安全意识和措施&#xff0c;确保网络环境的安全和稳定。 网络安全的重要性包含以下几点&#xff1a; 1、保护数据安全&#xff1a;数据是组织和…

MySQL多实例与Mycat分布式读写分离的架构实践

文章目录 1.Mycat读写分离分布式架构规划2.在两台服务器中搭建八个MySQL实例2.1.安装MySQL软件2.2.创建每个MySQL实例的数据目录并初始化2.3.准备每个实例的配置文件2.4.准备每个实例的启动脚本2.6启动每台机器的MySQL多实例2.7.为每个MySQL实例设置密码2.8.查看每个MySQL实例的…

删库跑路不用怕,来看看pgbackrest最佳实践

作者 马文斌 时间 2024-02-26 标签 pgbackrest 备份 实践 服务器介绍 ip软件角色192.168.1.14postgresprimary192.168.1.15postgresstandby192.168.1.16pgbackrest远程备份工具端 主从库远程备份 安装pgbackrest 备份工具 提前安装依赖包&#xff1a; yum install ma…

STM32程序(移植)中头文件的路径

例:#include "./BSP/LCD/lcd.h"为什么有的头文件加了路径? 先看AI的回答: 在C和C编程中&#xff0c;当我们在源文件中包含&#xff08;或称为“引入”或“导入”&#xff09;一个头文件时&#xff0c;编译器需要知道这个头文件的位置。通常&#xff0c;编译器会在…

gnss尾矿库安全监测系统是什么

【TH-WY1】GNSS尾矿库安全监测系统是一种利用全球导航卫星系统&#xff08;GNSS&#xff09;技术对尾矿库进行安全监测的系统。尾矿库是矿山企业的重要设施之一&#xff0c;用于存放矿山开采过程中产生的尾矿。由于尾矿库具有高能势和复杂的地质环境&#xff0c;存在溃坝、滑坡…

C++之类和对象(2)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 2. 赋值运算符只能重载成类的成员函数不能重载成全局函数 3. 用户没有显式实现时&…

GPT润色指令

1. GPT润色指令 Below is a paragraph from an academic paper. Polish the writing to meet the academic style,improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. Paragraph &#xff1a;你的句子…