不管是基本的char字符型,还是包装字符类型Character,它们的每个变量只能存放一个字符,无法满足对一串字符的加工。为了能够直接操作一连串的字符,Java设计了专门的字符串类型String,该类型允许保存一整串字符,并对字符串进行各种处理。
字符串类型不属于基本类型,它的用法与包装类型更为接近。例如给字符串变量赋初始值,就有多达四种的赋值形式(包装类型只有三种赋值),分别介绍如下:
1、被双引号包裹着的字符串,可直接用等号赋值给字符串变量,代码示例如下:

		// 第一种方式:用双引号把字符串括起来
String fromQuote = "Hello";
System.out.println("fromQuote="+fromQuote);

2、调用String类型的valueOf方法把整型、浮点型、布尔型、字符型、字符数组等变量转换为字符串,方法调用的代码例子如下:

		// 第二种方式:使用String的valueOf方法把整型、浮点型、布尔型、字符型、字符数组等变量转换为字符串
String fromValueOf = String.valueOf(111);
System.out.println("fromValueOf="+fromValueOf);

3、对于字符数组来说,还能通过new关键字创建字符串变量,此时赋值代码如下所示:

		// 第三种方式:对于字符数组来说,还能通过new关键字创建字符串变量
char[] array = {'A', 'B', 'C'};
String fromArray = new String(array);
System.out.println("fromArray="+fromArray);

4、对于基本变量类型(数组除外)来说,也可以利用加号连接基本变量和空串,下面的代码便是一个例子:

		// 第四种方式:对于基本变量类型(数组除外)来说,也可以利用加号连接基本变量和空串
// 注意,数值变量之间的加号为算术上的相加运算,而字符串之间的加号为两个字符串的合并操作
String fromPlus = true+"";
System.out.println("fromPlus="+fromPlus);

以上给字符串变量的赋值方式不多不少正好四种,恰似茴香豆的茴有四种写法那样,既然知晓了字符串的四种赋值,不妨温习一下鲁迅笔下“茴”的四种写法,看看你还记得几个?茴字上边为草头,下边为回家的回,其实有四种写法的是“回”字,包括:回、囘、囬,还有一种是“口”字然后里面有个“目”字。回头再复习刚才提到的字符串的四种赋值方式,如果读者还记得具体是哪四种,那么恭喜你已经掌握了字符串的入门诀窍。

现在能够把各种基本类型的变量赋值给字符串变量,那么公平起见,也要求字符串变量允许转换成其它类型的变量。不过字符串类型不支持直接转为基本类型,必须先转成包装类型,再从包装类型转成基本类型。像包装整型Integer提供了parseInt方法,可将输入的字符串变量转换成包装整型变量并返回。类似的字符串转换方法还有:包装长整型Long的parseLong方法,包装浮点型Float的parseFloat方法,包装双精度型Double的parseDouble方法,包装布尔型Boolean的parseBoolean方法。可是包装字符型并没有相应的parse***方法,这是怎么回事呢?仔细想想字符串内部由一串连续的字符组成,然而一个字符型变量只能容纳一个字符,由于一串字符无法转成一个字符,必须拆开变为多个字符,因此字符串类型不能转成字符型,只允许转换成字符数组。要想把字符串变量转为字符数组,则需调用字符串变量的toCharArray方法,该方法的输出参数即为字符数组类型char[]。
下面的方法调用代码演示了如何将字符串类型转换成包装类型,以及字符数组类型的变量:

		String number = "13456";
// 将字符串变量转换成包装整型变量
Integer packInt = Integer.parseInt(number);
System.out.println("packInt="+packInt);
// 将字符串变量转换成包装长整型变量
Long packLong = Long.parseLong(number);
System.out.println("packLong="+packLong);
// 将字符串变量转换成包装浮点型变量
Float packFloat = Float.parseFloat(number);
System.out.println("packFloat="+packFloat);
// 将字符串变量转换成包装双精度型变量
Double packDouble = Double.parseDouble(number);
System.out.println("packDouble="+packDouble);
String zhen = "true";
// 将字符串变量转换成包装布尔型变量
Boolean packBoolean = Boolean.parseBoolean(zhen);
System.out.println("packBoolean="+packBoolean);
// 将字符串转换成字符数组
char[] numberArray = number.toCharArray();
for (char item : numberArray) {
System.out.println("item="+item);
}

前面介绍大数字类型的时候,提到可以通过valueOf方法给大数字变量赋值,但是该方法的输入参数要求为基本数字类型,因为基本类型可表达的数值范围存在限制,比如长整型long表示的数字大小为19位整数,双精度型double表示的有效数字大小只有15到16位,所以一旦某个巨大的整数或者长尾巴的小数超出有效位数,这个数字就无法通过valueOf方法赋值给大数字类型了。为了解决超大数字的赋值问题,BigInteger和BigDecimal提供了第二种赋值方式:先利用字符串变量保存超大数字,再使用关键字new创建该字符串对应的大数字变量,具体的超大数字赋值代码示例如下:

		String bigNumber = "134567890134567890134567890";
// 将字符串变量转换成大整数变量
BigInteger bigInt = new BigInteger(bigNumber);
System.out.println("bigInt="+bigInt);
// 将字符串变量转换成大小数变量
BigDecimal bigDec = new BigDecimal(bigNumber);
System.out.println("bigDec="+bigDec);

既然字符串变量能够转换成包装类型和大数字类型,反过来,包装变量和大数字变量也能转换成字符串类型,并且转为字符串的方式很简单,只要由包装变量和大数字变量调用自身的toString方法即可。

更多Java技术文章参见《Java开发笔记(序)章节目录

Java开发笔记(三十四)字符串的赋值及类型转换的更多相关文章

  1. Java开发笔记(十四)几种运算符的优先级顺序

    到目前为止,我们已经学习了Java语言的好几种运算符,包括算术运算符.赋值运算符.逻辑运算符.关系运算符等基础运算符,并且在书写赋值语句时都没添加圆括号,显然是默认了先完成算术.逻辑.关系等运算,最后 ...

  2. Java开发学习(三十四)----Maven私服(二)本地仓库访问私服配置与私服资源上传下载

    一.本地仓库访问私服配置 我们通过IDEA将开发的模块上传到私服,中间是要经过本地Maven的 本地Maven需要知道私服的访问地址以及私服访问的用户名和密码 私服中的仓库很多,Maven最终要把资源 ...

  3. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. Java开发学习(三十六)----SpringBoot三种配置文件解析

    一. 配置文件格式 我们现在启动服务器默认的端口号是 8080,访问路径可以书写为 http://localhost:8080/books/1 在线上环境我们还是希望将端口号改为 80,这样在访问的时 ...

  5. Java开发笔记(九十四)文件通道的性能优势

    前面介绍了字节缓存的一堆概念,可能有的朋友还来不及消化,虽然文件通道的用法比起传统I/O有所简化,可是平白多了个操控繁琐的字节缓存,分明比较传统I/O更加复杂了.尽管字节缓存享有缓存方面的性能优势,但 ...

  6. 树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口

    前言   上一篇说明了必须要使用研华自带的8G卡的系统,通过沟通拿到了相关的系统,购买的时候会带8GB的卡,请自行备份一份镜像.本篇对uno-220套件的相关研华配套的额外接口做测试,篇幅较长,重点讲 ...

  7. Java开发学习(二十四)----SpringMVC设置请求映射路径

    一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...

  8. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  9. Java开发学习(三十)----Maven聚合和继承解析

    一.聚合 分模块开发后,需要将这四个项目都安装到本地仓库,目前我们只能通过项目Maven面板的install来安装,并且需要安装四个,如果我们的项目足够多,那么一个个安装起来还是比较麻烦的 如果四个项 ...

  10. JAVA学习第三十四课 (经常使用对象API)—List集合及其子类特点

    整个集合框架中最经常使用的就是List(列表)和Set(集) 一.List集合 && Set的特点 Collection的子接口: 1.List:有序(存入和取出的顺序一致),元素都有 ...

随机推荐

  1. Linux下不同文件不同颜色的意义

    通常,我们使用ls查看文件时,会出现不同颜色的文件,今天我就大概写一下不同颜色的代表意义: 蓝色————目录: 绿色————可执行文件: 红色————压缩文件: 浅蓝色————链接文件: 紫红色——— ...

  2. ivew ui

    render操作: render:(h, params) => { return h('div', [ h('Button',{ on:{ click:()=>{ this.edit(pa ...

  3. windows 10 64位机器上 安装部署

    mi这个博客写的不错 https://www.cnblogs.com/dingguofeng/p/8709476.html 安装redis 可视化工具后 ,新建连接 名称随意,注意端口号是否有误默认6 ...

  4. SQA计划和验收测试规程设计

    一.SQA(软件质量保证)的定义 软件质量保证(SQA-Software Quality Assurance)是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准.步骤.实践和方法能够正确地被所 ...

  5. 巧妙设置Texture Type,将ShadowMask内存占用变成之前的1/4

    0x00 前言 在这篇文章中,我选择了过去一周Unity官方社区交流群中比较有代表性的几个问题,总结在这里和大家进行分享.同时,也欢迎大家加入我们这个讨论干货的官方技术群,交流看法分享经验. Unit ...

  6. 【安富莱二代示波器教程】第6章 示波器设计—双通道ADC驱动

    第6章        示波器设计—双通道ADC驱动 本章节为大家讲解示波器的ADC驱动,采用STM32自带ADC实现.关于STM32F429的ADC,可以说处处有地雷,不小心就踩上了,如果简单的使用, ...

  7. Python 爬虫利器 Selenium

    前面几节,我们学习了用 requests 构造页面请求来爬取静态网页中的信息以及通过 requests 构造 Ajax 请求直接获取返回的 JSON 信息. 还记得前几节,我们在构造请求时会给请求加上 ...

  8. #研发解决方案#研发协作平台CloudEngine

    Cloud Engine:大杀器如何炼成 郑昀(微博:http://weibo.com/yunzheng) 创建于2016/6/18 最后更新于2016/6/19 点击查看我的<如何从零搭建一个 ...

  9. Mac下 .bash_profile 和 .zshrc 两者之间的区别

    这是我碰到的需要 source 之后才能使用环境变量的问题,我就不细究了,说说我的看法. .bash_profile 中修改环境变量只对当前窗口有效,而且需要 source ~/.bash_profi ...

  10. Python内置函数(12)——compile

    英文文档: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) Compile the source i ...