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

news2024/9/24 17:19:15

目录

  • 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);
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

边缘计算与任务卸载基础知识

目录 边缘计算简介任务卸载简介参考文献 边缘计算简介 边缘计算是指利用靠近数据生成的网络边缘侧的设备&#xff08;如移动设备、基站、边缘服务器、边缘云等&#xff09;的计算能力和存储能力&#xff0c;使得数据和任务能够就近得到处理和执行。 一个典型的边缘计算系统为…

用GGUF和Llama.cpp量化Llama模型

用GGUF和Llama .cpp量化Llama模型 什么是GGML如何用GGML量化llm使用GGML进行量化NF4 vs. GGML vs. GPTQ结论 由于大型语言模型&#xff08;LLMS&#xff09;的庞大规模&#xff0c;量化已成为有效运行它们的必要技术。通过降低其权重的精度&#xff0c;您可以节省内存并加快推理…

uniapp npx update-browserslist-db@lates 问题解决

在uniapp运行项目时&#xff0c;会有这种报错&#xff0c;其实这是表明browserslistlatest版本低了&#xff0c;在催你升级版本&#xff0c;browserslistlatest是用来支持解析css用的&#xff0c;当然&#xff0c;你也可以直接忽略这个报错提示&#xff0c;也可以正常运行项目。…

【Git教程】(四)版本库 —— 存储系统,存储目录,提交对象及其命名、移动与复制~

Git教程 版本库 1️⃣ 一种简单而高效的存储系统2️⃣ 存储目录&#xff1a;Blob 与 Tree3️⃣ 相同数据只存储一次4️⃣ 压缩相似内容5️⃣ 不同文件的散列值相同6️⃣ 提交对象7️⃣ 提交历史中的对象重用8️⃣ 重命名、移动与复制&#x1f33e; 总结 事实上&#xff0c;我们…

带你玩转java封装和继承(上)

上次带大家学习了java里面比较重要的知识点类和对象&#xff0c;而且我们知道java是一门面向对象的语言&#xff0c;有时一个程序里可能有很多类&#xff0c;那么这么多类他们之间有什么联系吗&#xff1f;今天就带大家学习一下java类之间的关系。 什么是继承&#xff1a; 我们…

摄像机LookDirection参数对模型缩放灵敏度的影响

继续整上回的wpf 3d obj模型程序&#xff1b; 它用HelixToolKit加载了以后&#xff0c;默认可以用鼠标操作模型&#xff0c;中键缩放模型&#xff1b; 有的时候中键稍微滚动几下模型就不见了&#xff1b; 用不同的模型试了一下&#xff1b;中键缩放的灵敏度&#xff0c;就是…

FreeRTOS学习笔记-基于STM32(1)基础知识

一、裸机与RTOS 我们使用的32板子是裸机&#xff0c;又称前后台系统。裸机有如下缺点&#xff1a; 1、实时性差。只能一步一步执行任务&#xff0c;比如在一个while循环中&#xff0c;要想执行上一个任务&#xff0c;就必须把下面的任务执行完&#xff0c;循环一遍后才能执行…

BUGKU bp

打开环境&#xff0c;他提示了弱密码top1000&#xff0c;随便输入密码123抓包爆破 发现长度都一样&#xff0c;看一下响应发现一段js代码&#xff0c;若r值为{code: bugku10000}&#xff0c;则会返回错误&#xff0c;通过这一句“window.location.href success.php?coder.cod…

StarRocks——Stream Load 事务接口实现原理

目录 前言 一、StarRocks 数据导入 二、StarRocks 事务写入原理 三、InLong 实时写入StarRocks原理 3.1 InLong概述 3.2 基本原理 3.3 详细流程 3.3.1 任务写入数据 3.3.2 任务保存检查点 3.3.3 任务如何确认保存点成功 3.3.4 任务如何初始化 3.4 Exactly Once 保证…

【MATLAB】 ICEEMDAN信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 展示出图效果 1 ICEEMDAN信号分解算法 ICEEMDAN 分解又叫改进的自适应噪声完备集合经验模态分解&#xff0c;英文全称为 Improved Complete Ensemble Empirical Mode Decomposition with Adaptive Noise。 ICEEMDAN (I…

【书生·浦语大模型实战营】第 2 节 -课后作业

第二节 -轻松玩转书生浦语大模型趣味 Demo-课后作业 0.课程体验0.1 鸡兔同笼0.2 逻辑推理0.3 AI会毁灭人类吗&#xff1f; 1.课后作业1.1 基础作业1.1.1 作业11.1.2 作业2 0.课程体验 课程链接&#xff1a;https://github.com/internLM/tutorial 首先&#xff0c;这个课程是免费…

《Spring Security 简易速速上手小册》第7章 REST API 与微服务安全(2024 最新版)

文章目录 7.1 保护 REST API7.1.1 基础知识详解7.1.2 重点案例&#xff1a;使用 JWT 进行身份验证和授权案例 Demo 7.1.3 拓展案例 1&#xff1a;API 密钥认证案例 Demo测试API密钥认证 7.1.4 拓展案例 2&#xff1a;使用 OAuth2 保护 API案例 Demo测试 OAuth2 保护的 API 7.2 …

vue 之 Quill编辑器封装

安装 npm install vue-quill-editor --save <template><div><el-upload:action"uploadUrl":before-upload"handleBeforeUpload":on-success"handleUploadSuccess":on-error"handleUploadError"name"file":sh…

家政行业的数字转型:开发智能化家政预约APP的挑战与机遇

为了适应这一变化&#xff0c;许多家政企业开始积极探索数字化转型&#xff0c;其中包括开发智能化预约APP。本文将探讨开发智能化预约APP所面临的挑战与机遇。 ​一、挑战&#xff1a; 1.用户体验设计&#xff1a; -开发智能化预约APP需要注重用户体验设计&#xff0c;包括…

Pytest插件pytest-selenium-让自动化测试更简洁

在现代Web应用的开发中&#xff0c;自动化测试成为确保网站质量的重要手段之一。而Pytest插件 pytest-selenium 则为开发者提供了简单而强大的工具&#xff0c;以便于使用Python进行Web应用的自动化测试。本文将深入介绍 pytest-selenium 插件的基本用法和实际案例&#xff0c;…

Web Tomcat

目录 1 前言2 Tomcat的安装3 Tomcat文件的构成4 Tomcat的使用步骤 1 前言 Tomcat是一个 http(web)的容器&#xff0c;笼统的理解一下所有的网站都叫做web。这个web容器可以把我们的前端(htmlcssjs)和后端(servlet)代码都运行起来。 Tomcat是一个免费的开源的Servlet容器&#…

可视化场景(1):销售业绩大屏-是骡子是马,牵出溜溜

销售业绩可视化大屏的是一种有力的销售数据管理工具&#xff0c;贝格前端工场分享一批给友友们&#xff0c;如需要定制&#xff0c;可以与我们联络&#xff0c;开始了。 销售业绩可视化大屏是一种将销售数据以图表、数字、文字等形式展示在大屏幕上的数据可视化工具。它的作用主…

如何在OnlyFans付费订阅?

OnlyFans成立于2016年&#xff0c;允许内容创作者从用户那里获得资金&#xff0c;用户需要支付订阅费用才能查看他们的内容。它在多个领域受到欢迎&#xff0c;包括音乐、健身、摄影&#xff0c;以及某种内容创作。 如何在OnlyFans付费订阅&#xff1f; 我们订阅之前需要一张…

JOSEF约瑟 漏电继电器LLJ-400F 配套零序互感器φ100mm 50-500mA 0.1S 导轨安装

系列型号&#xff1a; LLJ-150F(S)漏电继电器 LLJ-160F(S)漏电继电器 LLJ-200F(S)漏电继电器 LLJ-250F(S)漏电继电器 LLJ-300F(S)漏电继电器 LLJ-320F(S)漏电继电器 LLJ-400F(S)漏电继电器 LLJ-500F(S)漏电继电器 LLJ-600F(S)漏电继电器 一、产品用途及特点 LLJ-FS系列漏电继电…

图表背后的智慧:办公场景中的数据可视化革新

在现代办公场景中&#xff0c;数据可视化的应用已经成为提高效率、推动创新的得力工具。无论是管理层还是普通员工&#xff0c;都能从数据可视化中受益匪浅。下面我就以可视化从业者的角度&#xff0c;简单聊聊这个话题。 首先&#xff0c;数据可视化提升了数据的易读性与理解性…