JAVA String及基本数据类型包装类

【Java基础】String与基本数据类型、包装类之间的转换全解析 转换方向推荐方法备选方法理由String -> 基本类型包装类.parseXxx(str)直接返回基本类型,效率高。String -> 包装类包装类.valueOf(str)返回包装对象,且对常用值有缓存优化。基本类型 -> Stringnum + ""意图明确,性能更好,代码更健壮。包装类 -> String首推valueOf,因为它可以优雅地处理null值,避免。 阅读详情

一、String类

String非基本数据类型,但是同基本数据类型一样更为常用。

public class StringTest {
	public static void main(String[] args) {
		String str=new String("aaa");
		String str1="aaa";
		System.out.println(str.equals(str));
		System.out.println(str==str1);
	}
}
结果是true false,证明str1和str都是创建了一个内容为空的字符串,但指向了两个不同的对象。其中
String str=new String("aaa");
是创建了一个String类型对象,并查询内存中是否已经存在“aaa”这异常量,如果存在直接引用,如果不存在则先创建再引用,这种模式也成为享元模式。

String有多种构造方法,除了传入固定字符串外,还可以传入字节数组、字符数组、整形数组、StringBuffer、StringBuilder。同时可以传入编码方式,在处理字符流时比较常用,详见另一篇JAVA IO。

除了构造方法外,String类还提供了丰富的字符串处理方法,列举常见方法如下:

  • char charAt(int index):取字符串中指定位置的字符,index从0开始计算。
  • String concat(String str):连接字符串,等同于 “+”;
  • boolean contentEquals(StringBuffer buffer):若二者包含的字符序列相同时就返回true;
  • boolean equals(Object obj):将该字符串与指定对象比较,若二者包含的字符序列相等返回true;
  • boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写;
  • byte[] getBytes():将该字符串转换成byte数组;
  • int indexOf(String str):找出str字符串在该字符串中第一次出现的位置;
  • int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始;
  • int lastIndexOf(String str) 返回指定子字符串在此字符串中最后一次出现处的索引;
  • int length():返回当前字符串长度;
  • String replace(char oldChar, char newChar) :返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 
  • String replaceAll(String regex, String replacement) 使用给定的 字符串replacement 替换此字符串所有的regex字符串;
  • boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始.
  • String[] split(String regex): 把字符串按指定的字符串分隔开。
  • String substring(int beginIndex) 返回一个新的字符串,从beginIndex开始截取,它是此字符串的一个子字符串;
  • String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串;[begin,end)
  • char[] toCharArray() 将此字符串转换为一个新的字符数组。 
  • String toLowerCase() 将此 String 中的所有字符都转换为小写;
  • String toUpperCase()转成大写;
  • static String valueOf(基本类型 obj):把基本类型值转成字符串;
  • String trim() :忽略字符串前导空白和尾部空白。 
一些字符串操作:
//编写一个可以获取文件扩展名的函数,形参接收一个文件名字符串,返回一个扩展名字符串。
public static void main(String[] args) {
		System.out.println(getExtendName("aaa.java"));
	}

	/**
	 * @param name_file 传入String类型文件名
	 * @return String类型扩展名  无扩展名则返回null
	 */
	public static String getExtendName(String name_file) {
		// TODO Auto-generated method stub
		String name_extend = null;
		if (name_file.indexOf('.') != -1)
			name_extend = name_file.substring(name_file.lastIndexOf('.') + 1);
		return name_extend;
	}

//切割字符串 成字符串数组
public static void main(String[] args) {
		 String strs="aaa,bbb,ccc,ddd";
		 String[] str=strs.split(",");
		 for (String string : str) {
			System.out.println(string);
		}
	}

//大小写转换 trim replace
public static void main(String[] args) {
		 String strs="  aaa,  bbb,ccc,ddd          ";
		 strs=strs.replace(",", "-");
		 strs=strs.toUpperCase();
		 String[] str=strs.split("-");
		 for (String string : str) {
			System.out.println(string.trim());
		}
	}

//判断字符串是否为镜面字符串
public static void main(String[] args) throws Exception {
		System.out.println("请输入任意字符串");
		BufferedReader reader=new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
		String str;
		while ((str=reader.readLine())!=null&&!"stop".equals(str)) {
			
			System.out.println(isMirror(str));
		}
		reader.close();
	}
	
	public static boolean isMirror(String str){
		boolean mirror = true;
        for (int x=0;x<str.length()/2;x++ ){
        	//str.length()/2取字符串一半长度的上整,判断到该位置即结束
                if(str.charAt(x)!=str.charAt(str.length()-x-1)){
                	mirror = false;
                        break;
                }
        }
		return mirror;
      
		
	}

二、StringBuffer和StringBuilder

StringBuffer和StringBuilder是可变长度的字符串缓冲区,最终还是要转为字符串操作。StringBuilder是非线程同步的,效率较高,StringBuffer线程同步。
常用方法
1.存储 StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。

2.删除   StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index):删除指定位置的字符。

3.获取 char charAt(int index) 
int indexOf(String str) 
int lastIndexOf(String str) 
int length() 
String substring(int start, int end) 
 
4.修改 void setCharAt(int index, char ch) ;

5.反转 StringBuffer reverse();
 
6.将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 

	public static void main(String[] args) {
		StringBuilder buf = new StringBuilder("abcdef");
		char[] chs = new char[6];
		//sb.getChars(srcBegin, srcEnd, dst, dstBegin);
		buf.getChars(1, 4, chs, 0); //第chs的0个位置开始,将“abcdef”的元素从位置1开始到位置4结束但不包括位置4复制给chs
	}


追加,直接按照索引替换字符串或字符
public static void main(String[] args) {
		StringBuffer buf  = new StringBuffer("你好java");
		buf.replace(0,2,"黑马");
		buf.setCharAt(2,'J');
		buf.append("程序员");
		System.out.println(buf.toString());
	}
按索引清除字符或字符串
	public static void main(String[] args) {
		StringBuffer buf  = new StringBuffer("你好java");

		buf.delete(1,3);
		buf.deleteCharAt(2);

		System.out.println(buf.toString());
	}
在指定索引前插入字符串或字符串
public static void main(String[] args) {
		StringBuffer buf  = new StringBuffer("你好java");
		buf.insert(2,'黑');
		buf.insert(3,'马');
		buf.insert(4, "程序员");
		System.out.println(buf.toString());
	}


三、包装类
基本数据类型对象包装类。


byte Byte
short short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character

包装类提供了与字符串之间的转换
基本数据类型转成字符串
包装类.toString(基本类型数据)  或者 “”+基本数据
如:
Boolean.toString(true);//""+true
Integer.toString(40);""+40
Character.toString('A');""+A

字符串转基本数据类型
<span style="white-space:pre">		</span>int num1 = Integer.parseInt("123");

		double num2 = Double.parseDouble("2.71828");

		boolean istrue = Boolean.parseBoolean("true");

		Integer num3 = new Integer("123");

		int num = num3.intValue();

刚刚接触到了一个BigInteger类也放在这里吧
处理特别大的数据时需要用到 BigInteger类
下面是计算1000的阶乘结果中有多少个0的例子
public static void main(String[] args) {
		
		BigInteger bigNum = new BigInteger("1");

		for (int i = 1; i <= 1000; i++) {
			bigNum = bigNum.multiply(new BigInteger("" + i));

		}

		int num = 0;
		for (int i = 0; i < bigNum.toString().length(); i++) {
			char ch = bigNum.toString().charAt(i);
			if (ch == '0')
				num++;
		}
		System.out.println(num);
	}

Java(api中常用类,包括Object类,Arrays类,String类,基本数据类型包装类) equals方法用于比较两个对象中的信息是否相等1.String类是java中专门用于处理字符串的类2.String类是1被final修饰的,其他类不能继承3.String类中,有一个char数组用来存储字符串的内容4.字符串的对象一旦创建后就不能改变了(因为char数组是被final修饰的),一旦值改变了就会创建一个新的字符串对象。 阅读详情

相关推荐

实现StringSet类算法(Java)

在Java中实现一个StringSet类,可以帮助我们有效地管理和操作一组字符串。StringSet类将提供添加字符串、删除字符串、检查字符串是否存在以及获取字符串数量等功能。通过StringSet类,我们可以方便地管理一组字符串,进行添加、删除、查找操作,并获取字符串数量。在上面的代码中,我们使用了Java标准库中的HashSet来实现StringSet类。HashSet提供了高效的添加、删除和查找操作,能够满足我们的需求。方法删除了一个字符串,并再次检查了字符串的存在和数量。:获取集合中字符串的数量。

HackLogic的博客 199

【java】Set 和 String

文章目录1.Set接口1.1 Set接口特征和概述1.2 HashSet存储过程1.2.1 哈希表结构1.2.2存储过程1.3TreeSet存储过程1.3.1 树形结构1.3.2 TreeSet存储数据1.3.3自定义类添加比较方式【重点】2. String类 字符串【重点】2.1 字符串比较和存储问题2.2 获取方法2.3 判断方法2.4 整合方法2.5 转换方法2.6 面试题3 Java文件和.class字节码文件3.1 Java文件3.2 .class文件3.3 Java程序加载过程 1.Set接口

XiaoChen~Coder 1468

基于Dify构建银行智能客服:从意图识别到多RAG架构的实战解析

本文深入解析了如何利用Dify平台构建银行智能客服系统。从传统客服痛点出发,详细阐述了基于意图识别精准分类用户需求,并通过多RAG架构解决知识混淆问题,实现高效、准确的业务响应。文章重点介绍了结合工具调用实现业务流程自动化,并强调了数据本地化部署、内容安全过滤等银行级安全合规实践,为金融行业AI应用提供了实战指南。

yog99的博客 926

java string数组 set_JAVA中数组(Array)、字符串(String)、集合(List、Set)相互转换

1、数组转ListString[] arr = new String[]{"A", "B", "C"};List list = Arrays.asList(arr); //返回固定大小,不能做add和remove等操作2、数组转SetString[] arr= new String[]{"A", "B", "C"};Set set= new HashSet<>(Array...

weixin_29094979的博客 3891

李大勇matlab密码,基于MatlabSimulink的太阳能热水系统仿真研究 沈超.doc

基于MatlabSimulink的太阳能热水系统仿真研究 沈超中国工程热物理学会 工程热力学与能源利用 编号:141090基于Matlab/Simulink的太阳能热水系统仿真研究沈 超1 1 余 鹏1 李洪欣1 魏新利2郑州大学土木工程学院,郑州 450001郑州大学化工与能源学院,郑州 45...

weixin_42298437的博客 1345

SAP MRKO与MIRO的对比分析:为何寄售结算需要定制开发?

本文深入分析了SAP系统中MRKO与MIRO在寄售结算中的功能差异,揭示了标准MRKO在财务控制和业务流程上的局限性。通过定制开发实践,如BAdI增强和界面优化,企业可显著提升结算效率与准确性。文章还探讨了未来SAP S/4HANA在寄售结算中的智能化趋势,为相关企业提供技术参考。

weixin_29300241的博客 426

Java Set<String> 的基础用法

Java Set<String> 的基础用法

博客 1万+

sql server安装并SSMS连接

  SQL Server是一种广泛应用于网络业务数据处理的关系型数据库管理系统。SQL Server 2016是微软公司研发的新一代旗舰级数据库和分析平台,突出高级分析和丰富可视化,并融合了关键创新功能。其可提供对企业基础架构最高级别的支持,专门针对关键业务应用的多种功能与解决方案提供最高级别的可用性,并提供更多、更全面的功能以满足不同人群对数据的需求,包括支持来自不同网络环境的数据交互、全面的自助分析等创新功能。百度搜索sql server,在官网下载 地址是:SQL Server 下载| Microso

jiankang66的博客 5187

java list,set,string,数组相互转化

数组转List 1.转换不操作(转换的集合不支持更改) String[] str = new String[]{"yyy","uuu"}; List list = Arrays.asList(str); 注意:调用Arrays.asList()时,其返回值类型是ArrayList,但此ArrayList是Array的内部类,调用add()时,...

oDouDing的专栏 2032

Qt + Robot Interface实现上位机和发那科机器人通信

摘要: 本文详细介绍了FANUC机器人的RobotInterface模块开发流程,包括环境配置、通信连接和上位机开发等内容,并提供了数值寄存器、位置寄存器和当前位置的读写代码等示例。适用于自动化行业有通讯需求的上位机开发人员,保姆教程,超详细版,新手也可以根据示例开发自己的通信程序。

xyhkma的博客 1751

YOLO26改进策略【Neck】| ICCV2025 反向卷积 Converse2D 数学逆运算提重构 + 特征域建模降伪影,提升多尺度目标检测精度

本文记录的是利用Converse2D 算子改进 YOLO26 的上采样。(Converse 2D Convolution)通过正则化最小二乘闭式解与深度化空间建模结合,实现YOLO26特征提取与上采样阶段的卷积逆运算及特征精准重构。本文利用算子,通过闭式解的非迭代计算还原卷积下采样后的原始特征,再通过可学习核与自适应正则化参数稳定逆问题求解,同时依托圆形填充与插值初始估计保留特征高频细节,对YOLO26中不同尺度检测目标的特征进行针对性重构强化、抑制卷积/转置卷积带来的伪影与信息损失干扰,在特征融合与上采样

Limiiiing的博客 656

【JAVA学习之路 | 提高篇】包装类(包装类与基本数据类型及String类之间的转换)

(1). Java提供了两个类型系统,一个是基本数据类型,一个是引用数据类型.使用基本数据类型在于效率,然而当要使用只针对对象设计的API或新特性,怎么办呢.(1). Java针对八种基本数据类型定义了相对应的引用数据类型--包装类.有了类的特点,就可以调用类中的方法,Java才是真正的面相对象.(2). 为了使得基本数据类型变量具备引用数据类型变量的相关特征(如封装性,继承性,多态性),我们给各个基本数据类型都提供了包装类.(调用String类的重载的静态方法valueOf())

2301_80912559的博客 954

锁的艺术:Java并发中的常用锁策略与实践

对java锁相关内容进行整理分析:乐观锁 VS 悲观锁+自旋锁 VS 适应性自旋锁+无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁+公平锁 VS 非公平锁+可重入锁 VS 非可重入锁+独享锁 VS 共享锁

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 171万+

Java常用类之包装类(基本数据类型和String类型的相互转化)(如Integer)

java对每一种基本数据类型提供了一种对应的引用数据类型,叫做包装类 主要作用:用于基本数据类型和String 类型的相互转化 一、每一种基本数据类型对应的包装类 byte—Byte short—Short’ int ----- Integer long----Long float—Float double—Double char----Characher boolean----Boolean ...

小白学编程 4592

5.7 BGP属-ORIGIN

注意:当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下顺序优选路由:IGP > EGP > Incomplete。通过以上输出可以看到路由表选择了R3发过来的路由,因为R1的路由的起源为?通过以上输出我们可以看到针对于1.1.1.1这条路由有两条,从R1和R3传过来的起源都属于IGP。(4)把从R1传过来的路由的起源改为incomplete。通过以上输出可以看到,从R1传过来的路由是最优的。(2)在R2上查看1.1.1.1的路由详细信息。

lwljh134的博客 308

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java—基本数据类型,包装类和String之间的相互转化

什么是包装类? java是一种面向对象的语言,所以为8种基本数据类型提供了对应了包装类。使得基本数据类型的变量具有类的特征,也使的Java真正变成了面向对象的语言。 基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double boolean Boolean ...

yulingzheng的博客 492

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java包装类、基本数据类型和String的相互转换

Java包装类、基本数据类型和String的相互转换1、基本数据类型转包装类2、包装类转基本数据类型3、String转基本数据类型/包装类4、基本数据类型/包装类转String附1、自动装箱和自动拆箱附2、基本数据类型和包装类的对应关系 1、基本数据类型转包装类 // 基本数据类型转包装类,调用相应包装类的构造器即可 public class JiBen2BaoZhuang{ public static void main(String[] args){ //基本数据类型参数构造器 int num

m0_37220730的博客 308

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java 中基本数据类型(以及包装类)与String的相互转换

基本数据类型与包装类 基本数据类型:int,long,char… 包装类:Integer,Long,Character…(除了Integer和Character有变型其余都是首字母大写) 注意:boolean不参与符号运算 包装类的本质就是把基本数据类型写成一个类,里面有各种各样的方法方便对数据的操作。同时在编写java程序时,因为包装类是一个类,就可以使用多态性来方便地调用各种数据类型 由于自动装箱和自动拆箱的特性,让两者的相互转换变得十分容易 这里就可以把他们当成一种类型即可 Integer a = 2

qq_40409416的博客 206

java包装类、基本数据类型、String类型之间的转换

包装类的概念 java有着万物皆对象的理念,而基本数据类型并不具有对象的性质,包装类的出现,相当于把基本类型"包装"起来,使其具有对象的性质,如一些属性和方法。 而当我们想HashMap等一些容器里放东西时,基本数据类型时放不进去的,需要放入对象,这是就需要对应的基本数据类型的包装类了。 基本数据类型对应的包装类 基本数据类型: boolean,char,byte,short,int,long,float,double 包装类型:Boolean,Character,Byte,Short,Integer,Lo

m0_47191576的博客 299

Java基本数据类型、包装类、String类之间的相互转换

1.基本数据类型和包装类之间可以自动转换 2.基本数据类型转String类,调用String类的valueOf()方法 String类转基本数据类型,调用基本数据类型相应的包装类的parseXxx(String)静态方法 3.String类转包装类, 包装类转String类,调用包装类对象的toString()方法 ...

weixin_45654215的博客 269

Java String和基本数据类型之间的转换(包装类)

一、String 转化成 基本数据类型 利用基本数据类型对应的包装类的parseXxx() 或 valueOf() 方法 注意 : String 对象的字面量 是 数字类型。否则会报异常(NumberFormatException)。 例如 : //定义一个 str 对象,字面量为 "14" String str = "14"; // 1) 利用基本数据类型对应包装类的parseXXX...

AffectiveComputing的博客 1156

java基本数据类型、包装类与String之间的相互转换

人之所以痛苦,那是因为你在成长。--------magic_guo 基本数据类型、包装类与String之间的相互转换: 因为在一些方法中只接收类对象,此时就显得三者之间的相互转换变得尤为重要: 代码: public class WrapperTest { public static void main(String[] args) { // 基本数据类型转换成包装类:调用对应包装类的构造器 int num = 10; Integer in1 = new

magic_guo的博客 214

Java 包装类、String类型、基本数据类型之间的转换

Java包装类、String类型、基本数据类型之间的转换 一、包装类转基本数据类型 这里只列举出Integer的转换,其他包装类和Integer基本相同 1.自动拆箱的操作进行转换: Integer in1 = new Integer(12); Int num3 = in1; 2.基本数据类型:调用包装类Xxx的xxxValue(): (Xxx是包装类、xxx是基本数据类型) Integer in1 = new Integer(12); int i1 = in1.intValue(); 二、包装类转S

~Mysunny的博客 326

Java包装类、基本数据类型、String的关系及互相转换

基本数据类型、包装类、String三者之间的转换 学习包装类,图片及代码来自尚硅谷教育,侵删 包装类是什么?为什么要用包装类? java提供了8中基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征。 基本数据类型-->包装类 调用构造器 //基本数据类型 ---> 包装类 //具体方法: 调用包装类的构造器,可以是数值,可以是字符串 @Test public void test1() { int num1 = 10; //

qq_22166733的博客 259

Java基本数据类型、包装类与String类之间的转换

一、基本数据类型与包装类之间的转换: import org.junit.Test; public class MainTest { /** * 基本数据类型与包装类之间的转换 */ @Test public void test() { /** * 基本数据类型 -----> 包装类 */

进击的Nico 7752

Java中基本数据类型、包装类及String类型之间的转换

1. 基本数据类型与包装类的转换 这里主要讲JDK5.0之后,采用自动装箱与自动拆箱的方式来进行基本数据类型与包装类之间的转换。(关于自动装箱与自动拆箱可以详见另一篇博客) 自动装箱:基本数据类型 ----> 包装类 自动拆箱:包装类 -----> 基本数据类型 下面举例说明: Integer a = 1; //自动装箱 int a1 = a; //自动拆箱 System.out.println(a1); //1 那么既然基本数据类型和包装类之间都是自动装箱自动拆箱了,那就可

Zl_201512300067的博客 248
上一篇: JAVA 异常处理
下一篇: JAVA 几种常见的设计模式
SetO2
博客等级 码龄12年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值