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

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

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

相关文章

leetcode169. 多数元素的四种解法

leetcode169. 多数元素 题目描述 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 1.哈希 class Solution { public:int majority…

【vue3】命令式组件封装,message封装示例;(函数式组件?)

仅做代码示例&#xff1b;当然改进的地方还是不少的&#xff0c;仅作为该类组件封装方式的初步启发&#xff1b; 理想大成肯定是想要像 饿了么 这些组件库一样。 有的人叫这函数式组件&#xff0c;有的人叫这命令式组件&#xff0c;我个人还是偏向于命令式组件的称呼。因为以vu…

Django配置静态文件

Django配置静态文件 目录 Django配置静态文件静态文件配置调用方法 一般我们将html文件都放在默认templates目录下 静态文件放在static目录下 static目录大致分为 js文件夹css文件夹img文件夹plugins文件夹 在浏览器输入url能够看到对应的静态资源&#xff0c;如果看不到说明…

向爬虫而生---Redis 探究篇4<Redis主从复制(2)>

前言: 继续上一篇向爬虫而生---Redis 探究篇4&#xff1c;Redis主从复制(1)&#xff1e;-CSDN博客 正文: 读写操作和一致性保证 主节点和从节点对读写操作的不同处理方式 在Redis主从复制中&#xff0c;主节点和从节点对读写操作有不同的处理方式&#xff1a; 主节点&…

vim文本编辑器 的命令及快捷键

vim文本编辑器常用的命令及快捷键 vim文本编辑器功能命令 命令功能i从光标当前位置进入插入模式a从光标下一位进入插入模式ESC键退出编辑模式dd删除2dd删除两行u撤销上一步操作wq保存并退出0光标移动至文本开头G光标移至文本末尾$光标移动至行尾^光标移动至行首q或q!退出不保…

支持向量机算法(带你了解原理 实践)

引言 在机器学习和数据科学中&#xff0c;分类问题是一种常见的任务。支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种广泛使用的分类算法&#xff0c;因其出色的性能和高效的计算效率而受到广泛关注。本文将深入探讨支持向量机算法的原理、特点、应用&…

13. Springboot集成Protobuf

目录 1、前言 2、Protobuf简介 2.1、核心思想 2.2、Protobuf是如何工作的&#xff1f; 2.3、如何使用 Protoc 生成代码&#xff1f; 3、Springboot集成 3.1、引入依赖 3.2、定义Proto文件 3.3、Protobuf生成Java代码 3.4、配置Protobuf的序列化和反序列化 3.5、定义…

【中英对照】【自译】【精华】麻省理工学院MIT技术双月刊(Bimonthly MIT Technology Review)2024年3/4月刊内容概览

一、说明 Notation 仅供学习、参考&#xff0c;请勿用于商业行为。 二、本期封面、封底 Covers 本期杂志购于新加坡樟宜机场Changi Airport Singapore&#xff0c;售价为20.50新元。 本期仍然关注伦敦的AI大会。&#xff08;笔者十分想去&#xff0c;在伦敦和MIT校园均设有会…

IDEA的安装教程

1、下载软件安装包 官网下载&#xff1a;https://www.jetbrains.com/idea/ 2、开始安装IDEA软件 解压安装包&#xff0c;找到对应的idea可执行文件&#xff0c;右键选择以管理员身份运行&#xff0c;执行安装操作 3、运行之后&#xff0c;点击NEXT&#xff0c;进入下一步 4、…

手动、半自动、全自动探针台有何区别

手动探针台、半自动探针台和全自动探针台是三种不同类型的探针台&#xff0c;它们在使用类型、功能、操作方式和价格等方面都有所不同。 手动探针台是一种手动控制的探针台&#xff0c;通常用于没有很多待测器件需要测量或数据需要收集的情况下。该类探针台的优点是灵活、可变…

python difflib --- 计算差异的辅助工具

此模块提供用于比较序列的类和函数。 例如&#xff0c;它可被用于比较文件&#xff0c;并可产生多种格式的不同文件差异信息&#xff0c;包括 HTML 和上下文以及统一的 diff 数据。 有关比较目录和文件&#xff0c;另请参阅 filecmp 模块。 class difflib.SequenceMatcher 这…

WebAssembly 是啥东西

WebAssembly&#xff08;简称Wasm&#xff09;是一种为网络浏览器设计的二进制指令格式&#xff0c;它旨在成为一个高效的编程语言的编译目标&#xff0c;从而允许在网络上部署客户端和服务器应用程序。WebAssembly的主要设计目标是实现高性能应用&#xff0c;同时维持网络的安…

GraphPad Prism 10: 你的数据,我们的魔法 mac/win版

GraphPad Prism 10是GraphPad Software公司推出的一款功能强大的数据分析和可视化软件。它集数据整理、统计分析、图表制作和报告生成于一体&#xff0c;为科研工作者、学者和数据分析师提供了一个高效、便捷的工作平台。 GraphPad Prism 10软件获取 Prism 10拥有丰富的图表类…

2023义乌最全“电商+跨境+直播”数据总结篇章!

值得收藏&#xff5c;2023义乌最全“电商跨境直播”数据总结篇章&#xff01; 麦琪享资讯2024-01-20 14:28浙江 新年伊始&#xff0c;央视就把镜头对准了义乌电商&#xff0c;以电商的蓬勃之势展现这座国际商城的开放与活力。 过去的一年 义乌电商量质齐升 实力出圈 跑出了…

nginx 根据参数动态代理

一、问题描述 nginx反向代理配置一般都是配置静态地址&#xff0c;比如&#xff1a; server {listen 80;location / {proxy_pass http://myapp1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}} 这个反向代理表示访问80端口跳转到 http://myapp1 …

腾讯云优惠券领取入口_先领取再下单_2024腾讯云优惠攻略

腾讯云优惠代金券领取入口共三个渠道&#xff0c;腾讯云新用户和老用户均可领取8888元代金券&#xff0c;可用于云服务器等产品购买、续费和升级使用&#xff0c;阿腾云atengyun.com整理腾讯云优惠券&#xff08;代金券&#xff09;领取入口、代金券查询、优惠券兑换码使用方法…

在Windows下运行命令行程序,如何才能不显示命令行窗口,让程序保持后台运行?

在Windows下&#xff0c;有几种方法可以使命令行程序在后台运行而不显示命令行窗口。以下是其中的一些方法&#xff1a; 一. 使用start命令 你可以使用start命令来启动程序&#xff0c;并将窗口样式设置为最小化。例如&#xff1a; cmd start /b your_program.exe这里的/b选…

【硬件相关】IB网/以太网基础介绍及部署实践

文章目录 一、前言1、Infiniband网络1.1、网络类型1.2、网络拓扑1.3、硬件设备1.3.1、网卡1.3.2、连接线缆a、光模块b、线缆 1.3.4、交换机 2、Ethernet网络 二、部署实践&#xff08;以太网&#xff09;1、Intel E810-XXVDA21.1、网卡信息1.2、检查命令1.2、驱动编译 2、Mella…

volatile 关键字 (二)

volatile 关键字 &#xff08;二&#xff09; 文章目录 volatile 关键字 &#xff08;二&#xff09;volatile 可以保证原子性么&#xff1f; 文章来自Java Guide 用于学习如有侵权&#xff0c;立即删除 volatile 可以保证原子性么&#xff1f; volatile 关键字能保证变量的可…

nextjs中_app.tsx下划线什么作用

在Next.js中&#xff0c;_app.tsx&#xff08;或_app.js&#xff09;是一个特殊的文件&#xff0c;用于初始化页面。下划线_前缀在文件名中具有特定的意义&#xff0c;它告诉Next.js这个文件是一个特殊的内置文件&#xff0c;用于覆盖或扩展默认的App行为。 具体来说&#xff…