。parseInt和valueOf。split

static int parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析。
static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s) 返回保持指定的 String 的值的 Integer 对象。
从返回值可以看出他们的区别   parseInt()返回的是基本类型int
而valueOf()返回的是包装类Integer  Integer是可以使用对象方法的  而int类型就不能和Object类型进行互相转换
实战说明(加深)
例1:
int i1 = Integer.parseInt(36);    int i2 = Integer.parseInt(36);
int i3 = Integer.valueof(36);     int i3 = Integer.valueof(36);
例2:
int i1 = Integer.parseInt(236);    int i2 = Integer.parseInt(236);
int i3 = Integer.valueof(236);     int i4 = Integer.valueof(236);
分别运行一下,可以发现例1,i1==i2,i3==i4,但是例2中i1==i2 ,而i3==i4 并不成立,这是因为parseInt返回的是一个有符号的Integer数值,而Valueof返回是一个实例,更根本原因是对象池中数字是一个8bit有符号型,也就是说,数字大小在-128--127之内,valueof对于相同的数字返回的id是一致的,但是超过了这个范围,就会新开辟一块区域,这就导致例2的情况出现,所以在比较大小之内是,需谨慎行事http://blog.sina.com.cn/s/blog_76671eeb0100ui23.html

splithttp://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.html

在java.lang包中有String.split()方法,返回是一个数组

我在应用中用到一些,给大家总结一下,仅供大家参考:

1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");

2、如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");

“.”和“|”都是转义字符,必须得加"\\";

3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如,“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");

使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。

我们看jdk doc中说明

public String[] split(String regex)

Splits this string around matches of the given regular expression.

参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码用竖线 | 分隔字符串,你将得不到预期的结果

   String[] aa = "aaa|bbb|ccc".split("|");//String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa[i]); } 

用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。

    String[] aa = "aaa*bbb*ccc".split("*");//String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果    for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa[i]); } 

显然, + * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的结果。

"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。

还有如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果,

String[] aa = "aaa\\bbb\\bccc".split("\\\\");


package javabasi;import java.util.Scanner;/*** 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。* @author dlmu**/
public class SumA {public static void main (String [] args){Scanner sc = new Scanner(System.in);String str = sc.next();String[]number = str.split("\\+");int sum = 0;for (int i = 0; i < str.length(); i++){sum = sum + Integer.parseInt(number[i]);}System.out.println(sum);}}

2+22+222+2222+22222
提示异常,找不到错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at javabasi.SumA.main(SumA.java:18)
找到错误了,是因为for循环中应该是number.length,因为已经把str用split分开,将数据存储到number中了。
有错误不可怕,要一步一步调试错误。调试可以先用错误提示和debug定位,定位到具体细节再用System.out.println()逐句输出,逐个修正
 

转载于:https://www.cnblogs.com/fthjane/p/4782923.html

parseInt和valueOf相关推荐

  1. Java Integer类中的parseInt和valueOf的区别

    如果我们想把一个字符串转化成int类型,那么Integer类里的parseInt()和valueOf()都可以实现. 但是既然有两个方法实现该功能,那么两个方法一定是有区别的. 首先来看parseIn ...

  2. 力扣解题思路:670. 最大交换/parseInt和valueOf的区别

    670. 最大交换 思路: 看到这题我第一反应就是想到下一个排列,不过很快发现这两题并没办法使用同一种思路,因为这一题是要求最大,且只能交换一次,相当于多了很多别的限制. 初步的思路是,直接将数组排序 ...

  3. parseint与valueOf的区别

    string转int中的parseint与valueOf ①首先我们先来了解什么是装箱与拆箱: 装箱:普通类型转换为包装类型 Eg:integer i=10; 拆箱:包装类转换为普通类型 Eg:int ...

  4. 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法...

    Integer类中的. 关于parseInt()方法的API文档.  返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API ...

  5. parseInt、valueOf、intValue和toString的区别

    parseInt() parseInt()就是把String类型转化为int类型. String a= "123"; int b = Integer.parseInt(a); 这样 ...

  6. intValue()的用法,以及与parseInt()和valueOf 的区别

    第一, intValue()是把Integer对象类型变成int的基础数据类型: int n = list.get(i)----->相当于int n = list.get(i).inValue ...

  7. intValue、parseInt、valueOf 方法区别及其使

    intValue是把Integer对象类型变成int的数据类型: parseInt是吧String 变成int的数据类型: Valueof是吧给定的参数转化成对象类型: // 第一个不常用 Integ ...

  8. 探讨 Java 中 valueOf 和 parseInt 的区别

    文章目录 前言 区别 parseInt valueOf 后记 前言 在编程中,遇到类型转换,好像会经常用到 parseInt 和 valueOf,当然这里只拿 Integer 类型进行陈述,其他类型也 ...

  9. Integer.valueof()和Integer.parseInt()的区别

    Integer. valueOf()可以将基本类型int转换为包装类型Integer,或者将String转换成Integer,String如果为Null或""都会报错. Integ ...

最新文章

  1. linux 命令集锦
  2. [最新答案V0.4版]微软等数据结构+算法面试100题[第41-60题答案]
  3. 数据存储和云安全是选择云服务的关键
  4. commonJs原理解析
  5. 编写分段函数子函数_我从编写六个函数中学到的全部都做相同的事情
  6. (三)数据结构与算法-队列
  7. 蔚来汽车发布声明:“蔚来EC6爆炸”为谣言
  8. micropython入门指南-电子工业出版社-网上书店
  9. SHOP++ JTM2.5发布
  10. 机顶盒直播点播源码方案开发
  11. 浏览器无法上网解决方法(本人用的google-chrom,其他浏览器类似)
  12. OpenGL着色器程序解析--初识着色器
  13. Hibernate 、继承关联映射
  14. XV6 - bootsect.S
  15. 曲苑杂坛--服务启动时执行
  16. SAP SD客户寄售案例教程1
  17. Linux命令之计算器bc
  18. 【244天】我爱刷题系列(3)
  19. cmnet和cmwap的区别
  20. 使用蒲公英来做iOS测试应用的分发 - 唐巧的技术博客

热门文章

  1. 解决echart中:Cannot read property ‘queryComponents‘ of undefined
  2. Golang——延迟调用defer
  3. java手游 《剑心》_java
  4. linux编译mesa,如何在Ubuntu 16.04,17.10中安装Mesa 17.3.3
  5. 完全开源im框架_【行业资讯】移动端开源 IM 框架 MobileIMSDK v5.0 发布!
  6. CSS中盒子模型、嵌套盒子中垂直外边距塌陷问题解决方案、标准盒模型、怪异盒模型
  7. ElasticSearch bool过滤查询
  8. 深入理解Java虚拟机——类加载机制
  9. OpenSessionInViewFilter源码分析
  10. 管理学习笔记(1)——高效团队的五大关键