7.Java中的String类、常用类及包装类

news2024/11/16 17:39:09

Java中的String类、常用类及包装类

一、String类

1、String类定义
String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。

代码示例:

    String str_1="abc";
	String str_2="abc";
	
	System.out.println(str_1==str_2);
	
	String str_3=new String("abc");
	String str_4=new String("abc");
	
	System.out.println(str_3==str_4);

在这里插入图片描述
代码解析:
在这里插入图片描述

String类是不可变的,所以在创建对象时,如果直接赋值,相当于多个对象指向同一个内存区域;当创建对象使用new关键字时,相当于开辟不同的内存,所以指向也不同。“==”判断引用数据类型时,判断的是内存地址,所以输出结果为true和false。
2、字符串的特点

  • String类是被final修饰的,是不能被继承的。
  • String类底层使用数组结构。jdk9以前使用的是char[],jdk9以后使用的是byte[]。
  • String的对象一旦创建就不能修改,底层维护了一个字符串常量池,实现共享。
  • String类的对象每次修改都会产生一个新的对象。

3、String类的常用方法

  • charAt(int index) :返回字符串中第index个字符,index从0开始
  • toCharArray():将String转为字符串数组
  • length() :返回字符串的长度
  • indexOf(String str):返回字符串中出现str的第1个位置
  • indexOf(String str, int fromIndex):返回字符串中, 从第fromIndex个字符数起,
    出现str的第1个位置, 这个方法是上面方法的重载
  • lastIndexOf(String str):返回字符串中出现str的最后1个位置
  • equals(String str):比较两个字符串是否相等
  • equalsIgnoreCase(String str):忽略大小写, 比较两个字符是否相等.
  • replace(char oldChar, char newChar):返回1个新字符串,
    该新字符串内的oldChar被newChar替换掉, 注意旧字符串没有被修改.
  • startsWith(String prefix):判断字符串是否以 prefix 开头
  • endsWith(String suffix):判断字符产是否以suffix 结尾
  • subString(int beginIndex):截取从第beginIndex个字符开始到最后1个字符, 返回1个新字符串
  • subString(int beginIndex, int endIndex):截取从第beginIndex个字符开始,
    第endIndex个字符, 返回1个新字符串, 是上面方法的重载
  • valueOf(…):这个是静态方法. 可以把其他基本数据类型转换成String对象

4、String、StringBuffer和StringBuilder
String、StringBuffer和StringBuilder的联系
三者都是final类,不允许被继承,主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着,且考虑到防止其中的参数被参数修改影响到其他的应用。
StringBuffer是线程安全,可以不需要额外的同步用于多线程中;
StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理,但是速度就比StringBuffer快多了;
StringBuffer与StringBuilder两者共同之处:可以通过append、indert进行字符串的操作。

String、StringBuffer和StringBuilder的区别

  • 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer >
    String(String最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。)
  • 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的

StringBuffer和StringBuilder的常用方法有:

  • append方法:将字符(或字符串)追加到该序列的末尾
  • insert方法:将字符(或字符串)插入到该序列的指定位置
  • delete方法:从该序列中删除指定位置的字符
  • replace方法 :替换该序列中指定位置的字符串
  • substring方法:字符串截取,返回一个替换好的String值
  • reverse方法:反转该字符序列
  • toString方法: 将对象转换为String

总结String、StringBuffer和StringBuilder

  • String:适用于少量的字符串操作的情况
  • StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
  • StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

二、常用类

1、Math类

Math类中包含了用于执行基本数学运算的方法,如:小数取整、绝对值、随机数等;Math类中提供的方法都是静态方法,可以通过类名直接调用

  • PI静态常量: 表示圆周率
  • floor方法:小数取整,向下取整
  • ceil方法:小数取整,向上取整
  • round方法:小数取整,四舍五入

2、 Random类

用于生成随机数

  • nextBoolean方法:用于生成一个随机boolean值
  • nextDouble方法:用于生成一个0-1(不包括1)之间的随机小数
  • nextInt(int end)方法:用于生成一个0至指定值的随机整数,不包括整个指定的值

3、Date类

获取日期

  • getTime方法:获取当前时间的毫秒数,从1970年1月1日开始
  • toLocaleString方法: 获取当地时间,返回值是一个字符串

4、SimpleDateFormat类

日期、时间格式化类

  • format方法:格式化日期(yy-MM-dd hh:mm:ss)
  • parse方法:将字符串转换为日期

三、包装类

Java是面向对象的语言,但是为了便于开发者的使用,Java中保留了基本数据类型,在进行基本的数据计算时,开发者可以直接使用基本数据类型。但是当需要和其他对象结合使用,如存入集合中,就需要将基础数据类型实例化为Java对象,为了面向对象的这一特性,基本数据类型中的每一个类型在java.lang包中都有一个包装类,即将每个基本类型都包装成了一个类。
在这里插入图片描述
基本数据类型和引用数据类型的对应关系
在这里插入图片描述
基本数据类型和引用数据类型的相互转化

  • 装箱:基本数据类型转换为包装类
  • 拆箱:包装类转换为基本数据类型。

自动装箱就是自动将基本数据类型转换为包装器类型;自动拆箱就是自动将包装器类型转换为基本数据类型。自动装箱和拆箱都是在编译阶段就完成的。自动装箱的时候,java编译器会默认调用valueOf进行装箱,拆箱时会调用**Value方法。

          //1.自动装箱
          int t1=1;
          Integer t2=t1;
        	 //2.手动装箱
          Integer t3=new Integer(t1);
          System.out.println("int类型t1="+t1);
          System.out.println("自动装箱,Integer类型对象t2="+t2);
          System.out.println("手动装箱,Integer类型t3="+t3);      
          //1.自动拆箱
          int t4=t2;
          //2.手动拆箱
          //通过intValue()方法返回int值,还可以利用其他方法装换为其他类型
          int t5=t2.intValue();
          System.out.println("自动拆箱,int型t4="+t4);
          System.out.println("手动拆箱,int型t5="+t5);

Java包装类注意事项

  • 所有包装类都可以将与之对应的基本数据类型作为参数来创建它们的实例对象
  • 除了Character类之外,其他包装类都可以将一个字符串作为参数来构造它们的实例
  • Boolean类的构造方法参数为String类型时,若该字符串为true(不论大小写),则该对象表示true,否则表示false
  • 当包装类Number构造方法的参数为String类型时,字符串不能为null,并且该字符串必须能够解析为基本类型的数据
  • 集合不允许存放基本数据类型,故常用包装类
  • 包含了每种基本数据类型的相关属性,如最大值、最小值、所占位数等
  • 作为基本数据类型对应的类型,提供了一系列实用的对象操作,如类型转换、进制转换等方法

Java中的比较“==”和“equals”

包装类中的equals方法和String类一样,都是重写了Object类中的equals方法,因此比较的是内容而不是地址,而“= =”比较的依然是引用变量的地址,只是当包装类型和与之相对应的基本类型进行“= =”比较时会先做自动拆箱处理。

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

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

相关文章

2023爱分析·中国城市轨交智能运维市场厂商评估报告:逸迅科技

报告编委 张扬 爱分析联合创始人&首席分析师 王鹏 爱分析分析师 目录 1. 研究背景 2. 市场综述 3. 市场分析 4. 厂商评估:逸迅科技 5. 最佳实践案例 1. 研究背景 轨道交通是我国国民经济的命脉和交通运输的骨干网络,不仅承担了绝大…

RocketMQ 消息发送源码解读

可靠同步发送、可靠异步发送、单向发送、批量消息发送。 RocketMQ 消息发送需要考虑以下3个问题。 1)消息队列如何进行负载? 2)消息发送如何实现高可用? 3)批量消息发送如何实现一致性? org.apache.rocketm…

基于SpringBoot+微信小程序的失物招领小程序

基于SpringBoot微信小程序的失物招领小程序 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目…

通达信欧奈尔RPS指标公式编写和设置方法(完全版)

通达信欧奈尔RPS指标公式的编写和设置较为复杂,对于初学者来说可能具有一定挑战性。在编写口袋支点公式时,需要使用RPS指标公式作为基础条件,因此有必要先了解其编写和设置方法。 一、上市一年以上选股 首先选出上市一年以上的股票&#xff…

python实现折线图和条形图

画图的部分函数 pandas 读取数据 相关包:import pandas as pd 函数:dfpd.read_excel(“文件名”) #读取excel文件 df.head(n)#查看前n行 df.tail(n)#查看后n行 df.shape #查看行数和列数 df.columns # 查看列索引 df.index #查看行索引 df.info() #查看…

怎样恢复删除的视频?视频恢复,4个方法!

案例:怎样恢复删除的视频 【谁懂啊!电脑里视频太多了太占内存,本想删除一些不太重要的,但却删错了!有朋友知道怎样恢复删除的视频吗?】 在数字化时代,我们经常使用电脑来存储和管理各种视频文…

股票量比实时筛选报警

一.什么是股票的量比 量比是短线投资一个参考指标,是衡量相对成交量的一个数值和指标,用于反映股票交易相对于以往的活跃程度;是指在股市开盘以后,平均每一分钟的成交量与过去五个交易日平均每分钟交易量的比。反映股票相对最近5…

自动驾驶定位模块的作用是什么?为什么会有多种坐标系?

无人车,要实现自动驾驶,首先要知道自己的的位置。更准确的说法是:相对某个坐标系,确定车辆的位置和姿态。 这个坐标系可以是局部的: 也可以是全局坐标系: 这是更大维度上的坐标系。 坐标系确定之后,相对坐标原点和坐标轴,车上坐标系(本地坐标系),平移得到位置(x…

SQL语句要点一文速览

以下内容参考《SQL必知必会(第4版)》 了解 SQL 数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。最简单的办法是将数据库想象为一个文件柜。这个文件柜是一个存放数据的…

【数据结构】算法的时间复杂度和空间复杂度(下)(附leetcode练习题)

☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:数据结构 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪&…

【Linux】system V 共享内存

文章目录system V1. 共享内存原理第一阶段原理第二阶段原理2. 直接写代码--编写代码进行原理介绍shmget函数ftok函数key值用法1. 创建key值2. 创建共享内存 获取共享内存3. 将自己和共享内存关联起来4. 将自己和共享内存取消关联5. 删除共享内存用指令删除调用系统调用完整代码…

数据库管理-第六十六期 SQL Domain(20230413)

数据库管理 2023-04-13第六十六期 SQL Domain1 基本介绍2 Domain的表达式和条件3 语法4 语义5 示例总结第六十六期 SQL Domain 上一期一笔带过了部分Oracle 23c的新特性,这一期重点讲一下SQL Domain新特性。 【https://docs.oracle.com/en/database/oracle/oracle-…

【提升效率神器】Python简单批量生成PDF文档(详细做法)

文章目录前言一、准备二、基本使用三、批量生成PDF总结前言 日常办公中,经常会使用PDF文档,难免需要对PDF文档进行编辑,有时候PDF文档中的大部分内容都是一样的,只是发送对象不同。 这种模板套用的场景下,使用Python…

BI 知识大全,值得收藏的干货

01、什么是商业智能BI? 商业智能BI可以实现业务流程和业务数据的规范化、流程化、标准化,打通ERP、OA、CRM等不同业务信息系统,整合归纳企业数据,利用数据可视化满足企业不同人群对数据查询、分析和探索的需求,从而为…

OpenCV实例(三)答题卡识别

OpenCV实例(三)答题卡识别1.答题卡识别概述2.单道题目的识别2.1基本流程及原理2.2代码实例:作者:Xiou 1.答题卡识别概述 随着信息化的发展,计算机阅卷已经成为一种常规操作。在大型考试中,客观题基本不再…

重整网站。。。。。。。。。

重整网站 写好回复的人 “ xxxxxxxx”通知栏,并且快速跳转到需要的页面。个人页面,记录自己发送的消息与回复的信息。以css 上传的图片防止被拉伸拉坏。 下拉的选择下拉的分页的好处。 评论功能的那一栏中的一个小的评论,如果手机端的话&a…

RabbitMQ 保证消息不丢失的几种手段

文章目录1.RabbitMQ消息丢失的三种情况2.RabbitMQ消息丢失解决方案2.1 针对生产者2.1.1 方案1 :开启RabbitMQ事务2.1.2 方案2:使用confirm机制2.2 Exchange路由到队列失败2.3 RabbitMq自身问题导致的消息丢失问题解决方案2.3.1 消息持久化2.3.2 设置集群…

无废话硬核分享:Linux 基础知识点总结很详细,全的很,吐血奉献

Linux 的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发,接触 Linux 机会相对较少,因此往往容易忽视它。但是学好它却是程序员必备修养之一。 Linux 基础 操作系统 操作系统Operating System简称OS,是软件的一部分&#x…

【0基础学爬虫】爬虫基础之数据存储

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学…

物联网时代的网络安全

近年来,物联网 (IoT) 彻底改变了我们的生活和工作方式。从智能家居到自动驾驶汽车,物联网设备在我们的日常生活中变得越来越普遍。 根据 Statista 的一份报告,到 2025 年将有超过 750 亿个物联网 (IoT) 设备投入使用。 然而,这…